mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
perf(test): avoid embedded runtime imports in btw suite
This commit is contained in:
+23
-46
@@ -44,6 +44,7 @@ const diagDebugMock = vi.fn();
|
||||
const ensureSelectedAgentHarnessPluginMock = vi.fn();
|
||||
const createAgentHarnessHostCapabilitiesMock = vi.fn();
|
||||
const loadTranscriptEventsMock = vi.fn();
|
||||
const builtInOpenClawHarnesses = new WeakSet<object>();
|
||||
const shouldPreferExplicitConfigApiKeyAuthMock = vi.fn((..._args: unknown[]) => false);
|
||||
const hasUsableCustomProviderApiKeyMock = vi.fn((..._args: unknown[]) => false);
|
||||
const resolveProviderEntryApiKeyProfileReferenceMock = vi.fn((_params?: unknown): unknown => ({
|
||||
@@ -204,17 +205,27 @@ vi.mock("./harness/runtime-plugin.js", () => ({
|
||||
ensureSelectedAgentHarnessPluginMock(...args),
|
||||
}));
|
||||
|
||||
vi.mock("./harness/host-capability.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("./harness/host-capability.js")>(
|
||||
"./harness/host-capability.js",
|
||||
);
|
||||
// Selection and host-capability owner suites execute the embedded runner and capability surface.
|
||||
// BTW only needs their identities while it verifies side-question orchestration.
|
||||
vi.mock("./harness/builtin-openclaw.js", () => ({
|
||||
createOpenClawAgentHarness: (): AgentHarness => {
|
||||
const harness: AgentHarness = {
|
||||
id: "openclaw",
|
||||
label: "OpenClaw embedded agent",
|
||||
supports: () => ({ supported: true, priority: 0 }),
|
||||
runAttempt: vi.fn(),
|
||||
};
|
||||
builtInOpenClawHarnesses.add(harness);
|
||||
return harness;
|
||||
},
|
||||
isBuiltInOpenClawAgentHarness: (harness: AgentHarness) => builtInOpenClawHarnesses.has(harness),
|
||||
}));
|
||||
|
||||
vi.mock("./harness/host-capability.js", () => {
|
||||
return {
|
||||
...actual,
|
||||
createAgentHarnessHostCapabilities: (
|
||||
params: Parameters<typeof actual.createAgentHarnessHostCapabilities>[0],
|
||||
) => {
|
||||
createAgentHarnessHostCapabilities: (params: unknown) => {
|
||||
createAgentHarnessHostCapabilitiesMock(params);
|
||||
return actual.createAgentHarnessHostCapabilities(params);
|
||||
return { capabilities: {}, close: vi.fn() };
|
||||
},
|
||||
};
|
||||
});
|
||||
@@ -303,15 +314,9 @@ vi.mock("../logging/diagnostic.js", () => ({
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock("../config/sessions/session-accessor.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../config/sessions/session-accessor.js")>(
|
||||
"../config/sessions/session-accessor.js",
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
loadTranscriptEvents: (...args: unknown[]) => loadTranscriptEventsMock(...args),
|
||||
};
|
||||
});
|
||||
vi.mock("../config/sessions/session-accessor.js", () => ({
|
||||
loadTranscriptEvents: (...args: unknown[]) => loadTranscriptEventsMock(...args),
|
||||
}));
|
||||
|
||||
const { runBtwSideQuestion } = await import("./btw.js");
|
||||
const { clearAgentHarnesses, registerAgentHarness } = await import("./harness/registry.js");
|
||||
@@ -1407,34 +1412,6 @@ describe("runBtwSideQuestion", () => {
|
||||
expect(mockArg(codexSideQuestionMock, 0, 0)).toMatchObject({ toolsAllow: [] });
|
||||
});
|
||||
|
||||
it("prepares a narrow global policy before calling a plugin side-question hook", async () => {
|
||||
const codexSideQuestionMock = registerCodexSideQuestionHarness();
|
||||
mockOpenAIPlatformProfile();
|
||||
resolveModelWithRegistryMock.mockReturnValue({
|
||||
provider: "openai",
|
||||
id: "gpt-5.5",
|
||||
api: "openai-responses",
|
||||
});
|
||||
resolveModelAsyncMock.mockResolvedValue({
|
||||
model: {
|
||||
provider: "openai",
|
||||
id: "gpt-5.5",
|
||||
api: "openai-responses",
|
||||
baseUrl: "https://api.openai.com/v1",
|
||||
},
|
||||
});
|
||||
|
||||
await runSideQuestion({
|
||||
cfg: { tools: { allow: ["message"] } } as never,
|
||||
provider: "openai",
|
||||
model: "gpt-5.5",
|
||||
sessionKey: DEFAULT_SESSION_KEY,
|
||||
});
|
||||
|
||||
expect(codexSideQuestionMock).toHaveBeenCalledOnce();
|
||||
expect(mockArg(codexSideQuestionMock, 0, 0)).toMatchObject({ toolsAllow: [] });
|
||||
});
|
||||
|
||||
it("does not fall back to the direct provider call when Codex lacks BTW support", async () => {
|
||||
registerAgentHarness({
|
||||
id: "codex",
|
||||
|
||||
Reference in New Issue
Block a user