test: finish no-isolate suite hardening

This commit is contained in:
Peter Steinberger
2026-03-23 01:58:03 -07:00
parent 4ea014d581
commit a4367eb656
6 changed files with 72 additions and 19 deletions

View File

@@ -1,4 +1,4 @@
import { afterEach, describe, expect, it, vi } from "vitest";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { createEmptyPluginRegistry } from "../plugins/registry.js";
import { resetPluginRuntimeStateForTest, setActivePluginRegistry } from "../plugins/runtime.js";
@@ -10,7 +10,8 @@ vi.mock("../plugins/loader.js", () => ({
loadOpenClawPlugins: loadOpenClawPluginsMock,
}));
import { getImageGenerationProvider, listImageGenerationProviders } from "./provider-registry.js";
let getImageGenerationProvider: typeof import("./provider-registry.js").getImageGenerationProvider;
let listImageGenerationProviders: typeof import("./provider-registry.js").listImageGenerationProviders;
describe("image-generation provider registry", () => {
afterEach(() => {
@@ -19,6 +20,13 @@ describe("image-generation provider registry", () => {
resetPluginRuntimeStateForTest();
});
beforeEach(async () => {
vi.resetModules();
({ getImageGenerationProvider, listImageGenerationProviders } = await import(
"./provider-registry.js"
));
});
it("does not load plugins when listing without config", () => {
expect(listImageGenerationProviders()).toEqual([]);
expect(loadOpenClawPluginsMock).not.toHaveBeenCalled();

View File

@@ -1,5 +1,6 @@
import { normalizeProviderId } from "../agents/model-selection.js";
import type { OpenClawConfig } from "../config/config.js";
import { isBlockedObjectKey } from "../infra/prototype-keys.js";
import { loadOpenClawPlugins } from "../plugins/loader.js";
import { getActivePluginRegistry, getActivePluginRegistryKey } from "../plugins/runtime.js";
import type { ImageGenerationProviderPlugin } from "../plugins/types.js";
@@ -9,7 +10,10 @@ const UNSAFE_PROVIDER_IDS = new Set(["__proto__", "constructor", "prototype"]);
function normalizeImageGenerationProviderId(id: string | undefined): string | undefined {
const normalized = normalizeProviderId(id ?? "");
return normalized || undefined;
if (!normalized || isBlockedObjectKey(normalized)) {
return undefined;
}
return normalized;
}
function isSafeImageGenerationProviderId(id: string | undefined): id is string {

View File

@@ -1,14 +1,22 @@
import { afterEach, describe, expect, it } from "vitest";
import { afterEach, beforeEach, describe, expect, it } from "vitest";
import type { OpenClawConfig } from "../config/config.js";
import { createEmptyPluginRegistry } from "../plugins/registry.js";
import { setActivePluginRegistry } from "../plugins/runtime.js";
import { generateImage, listRuntimeImageGenerationProviders } from "./runtime.js";
import { vi } from "vitest";
let generateImage: typeof import("./runtime.js").generateImage;
let listRuntimeImageGenerationProviders: typeof import("./runtime.js").listRuntimeImageGenerationProviders;
describe("image-generation runtime helpers", () => {
afterEach(() => {
setActivePluginRegistry(createEmptyPluginRegistry());
});
beforeEach(async () => {
vi.resetModules();
({ generateImage, listRuntimeImageGenerationProviders } = await import("./runtime.js"));
});
it("generates images through the active image-generation registry", async () => {
const pluginRegistry = createEmptyPluginRegistry();
const authStore = { version: 1, profiles: {} } as const;