




























@@ -25,12 +25,10 @@ function createProvider(
2525};
2626}
272728-async function loadRegistry(): Promise<typeof import("./provider-registry.js")> {
29-return await import("./provider-registry.js");
30-}
28+type ImageProviderRegistry = typeof import("./provider-registry.js");
312932-function requireLoadedImageProvider(
33-registry: Awaited<ReturnType<typeof loadRegistry>>,
30+function requireImageProvider(
31+registry: ImageProviderRegistry,
3432id: string,
3533): ImageGenerationProviderPlugin {
3634const provider = registry.getImageGenerationProvider(id);
@@ -40,6 +38,11 @@ function requireLoadedImageProvider(
4038return provider;
4139}
424041+async function loadProviderRegistry(): Promise<ImageProviderRegistry> {
42+vi.resetModules();
43+return await import("./provider-registry.js");
44+}
45+4346describe("image-generation provider registry", () => {
4447beforeEach(() => {
4548vi.resetModules();
@@ -48,7 +51,7 @@ describe("image-generation provider registry", () => {
4851});
49525053it("delegates provider resolution to the capability provider boundary", async () => {
51-const { listImageGenerationProviders } = await loadRegistry();
54+const { listImageGenerationProviders } = await loadProviderRegistry();
5255const cfg = {} as OpenClawConfig;
53565457expect(listImageGenerationProviders(cfg)).toStrictEqual([]);
@@ -59,8 +62,8 @@ describe("image-generation provider registry", () => {
5962});
60636164it("uses active plugin providers without loading from disk", async () => {
62-const { getImageGenerationProvider } = await loadRegistry();
6365resolvePluginCapabilityProvidersMock.mockReturnValue([createProvider({ id: "custom-image" })]);
66+const { getImageGenerationProvider } = await loadProviderRegistry();
64676568const provider = getImageGenerationProvider("custom-image");
6669@@ -72,17 +75,16 @@ describe("image-generation provider registry", () => {
7275});
73767477it("ignores prototype-like provider ids and aliases", async () => {
75-const registry = await loadRegistry();
7678resolvePluginCapabilityProvidersMock.mockReturnValue([
7779createProvider({ id: "__proto__", aliases: ["constructor", "prototype"] }),
7880createProvider({ id: "safe-image", aliases: ["safe-alias", "constructor"] }),
7981]);
82+const registry = await loadProviderRegistry();
83+const { getImageGenerationProvider, listImageGenerationProviders } = registry;
808481-expect(registry.listImageGenerationProviders().map((provider) => provider.id)).toEqual([
82-"safe-image",
83-]);
84-expect(registry.getImageGenerationProvider("__proto__")).toBeUndefined();
85-expect(registry.getImageGenerationProvider("constructor")).toBeUndefined();
86-expect(requireLoadedImageProvider(registry, "safe-alias").id).toBe("safe-image");
85+expect(listImageGenerationProviders().map((provider) => provider.id)).toEqual(["safe-image"]);
86+expect(getImageGenerationProvider("__proto__")).toBeUndefined();
87+expect(getImageGenerationProvider("constructor")).toBeUndefined();
88+expect(requireImageProvider(registry, "safe-alias").id).toBe("safe-image");
8789});
8890});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。