






























@@ -3,9 +3,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite
33type RegistryModule = typeof import("./registry.js");
44type RuntimeModule = typeof import("./runtime.js");
55type WebSearchProvidersRuntimeModule = typeof import("./web-search-providers.runtime.js");
6-type ManifestRegistryModule = typeof import("./manifest-registry.js");
76type PluginAutoEnableModule = typeof import("../config/plugin-auto-enable.js");
87type WebSearchProvidersSharedModule = typeof import("./web-search-providers.shared.js");
8+type PluginManifestRegistry = import("./manifest-registry.js").PluginManifestRegistry;
9+type LoadPluginManifestRegistryForPluginRegistry =
10+typeof import("./plugin-registry.js").loadPluginManifestRegistryForPluginRegistry;
9111012const BUNDLED_WEB_SEARCH_PROVIDERS = [
1113{ pluginId: "brave", id: "brave", order: 10 },
@@ -20,13 +22,14 @@ const BUNDLED_WEB_SEARCH_PROVIDERS = [
2022] as const;
21232224let createEmptyPluginRegistry: RegistryModule["createEmptyPluginRegistry"];
23-let loadPluginManifestRegistryMock: ReturnType<typeof vi.fn>;
25+let loadPluginManifestRegistryMock: ReturnType<
26+typeof vi.fn<LoadPluginManifestRegistryForPluginRegistry>
27+>;
2428let setActivePluginRegistry: RuntimeModule["setActivePluginRegistry"];
2529let resolvePluginWebSearchProviders: WebSearchProvidersRuntimeModule["resolvePluginWebSearchProviders"];
2630let resolveRuntimeWebSearchProviders: WebSearchProvidersRuntimeModule["resolveRuntimeWebSearchProviders"];
2731let loadOpenClawPluginsMock: ReturnType<typeof vi.fn>;
2832let loaderModule: typeof import("./loader.js");
29-let manifestRegistryModule: ManifestRegistryModule;
3033let pluginAutoEnableModule: PluginAutoEnableModule;
3134let applyPluginAutoEnableSpy: ReturnType<typeof vi.fn>;
3235let webSearchProvidersSharedModule: WebSearchProvidersSharedModule;
@@ -135,7 +138,7 @@ function expectBundledRuntimeProviderKeys(
135138);
136139}
137140138-function createManifestRegistryFixture() {
141+function createManifestRegistryFixture(): PluginManifestRegistry {
139142return {
140143plugins: [
141144{
@@ -316,8 +319,19 @@ function expectRuntimeProviderResolution(
316319317320describe("resolvePluginWebSearchProviders", () => {
318321beforeAll(async () => {
322+loadPluginManifestRegistryMock = vi.fn<LoadPluginManifestRegistryForPluginRegistry>();
323+vi.doMock("./plugin-registry.js", async () => {
324+const actual =
325+await vi.importActual<typeof import("./plugin-registry.js")>("./plugin-registry.js");
326+return {
327+ ...actual,
328+loadPluginManifestRegistryForPluginRegistry: (
329+ ...args: Parameters<LoadPluginManifestRegistryForPluginRegistry>
330+) => loadPluginManifestRegistryMock(...args),
331+};
332+});
333+319334({ createEmptyPluginRegistry } = await import("./registry-empty.js"));
320-manifestRegistryModule = await import("./manifest-registry.js");
321335loaderModule = await import("./loader.js");
322336pluginAutoEnableModule = await import("../config/plugin-auto-enable.js");
323337webSearchProvidersSharedModule = await import("./web-search-providers.shared.js");
@@ -338,15 +352,8 @@ describe("resolvePluginWebSearchProviders", () => {
338352autoEnabledReasons: {},
339353}) as ReturnType<PluginAutoEnableModule["applyPluginAutoEnable"]>,
340354);
341-loadPluginManifestRegistryMock = vi
342-.spyOn(manifestRegistryModule, "loadPluginManifestRegistry")
343-.mockReturnValue(
344-createManifestRegistryFixture() as ManifestRegistryModule["loadPluginManifestRegistry"] extends (
345- ...args: unknown[]
346-) => infer R
347- ? R
348- : never,
349-);
355+loadPluginManifestRegistryMock.mockReset();
356+loadPluginManifestRegistryMock.mockReturnValue(createManifestRegistryFixture());
350357loadOpenClawPluginsMock = vi
351358.spyOn(loaderModule, "loadOpenClawPlugins")
352359.mockImplementation((params) => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。