mirror of https://github.com/openclaw/openclaw.git
test: trim core partial mocks
This commit is contained in:
parent
6eca4e0136
commit
45a6f769bb
|
|
@ -13,8 +13,9 @@ const hoisted = vi.hoisted(() => {
|
|||
};
|
||||
});
|
||||
|
||||
vi.mock("@mariozechner/pi-ai", async (importOriginal) => {
|
||||
const original = await importOriginal<typeof import("@mariozechner/pi-ai")>();
|
||||
vi.mock("@mariozechner/pi-ai", async () => {
|
||||
const original =
|
||||
await vi.importActual<typeof import("@mariozechner/pi-ai")>("@mariozechner/pi-ai");
|
||||
return {
|
||||
...original,
|
||||
streamAnthropic: (model: unknown, context: unknown, options: unknown) =>
|
||||
|
|
@ -34,8 +35,9 @@ let createAnthropicVertexStreamFnForModel: typeof import("./anthropic-vertex-str
|
|||
|
||||
async function loadFreshAnthropicVertexStreamModuleForTest() {
|
||||
vi.resetModules();
|
||||
vi.doMock("@mariozechner/pi-ai", async (importOriginal) => {
|
||||
const original = await importOriginal<typeof import("@mariozechner/pi-ai")>();
|
||||
vi.doMock("@mariozechner/pi-ai", async () => {
|
||||
const original =
|
||||
await vi.importActual<typeof import("@mariozechner/pi-ai")>("@mariozechner/pi-ai");
|
||||
return {
|
||||
...original,
|
||||
streamAnthropic: (model: unknown, context: unknown, options: unknown) =>
|
||||
|
|
|
|||
|
|
@ -13,8 +13,9 @@ const shellEnvMocks = vi.hoisted(() => ({
|
|||
resolveShellEnvFallbackTimeoutMs: vi.fn(() => 1234),
|
||||
}));
|
||||
|
||||
vi.mock("../infra/shell-env.js", async (importOriginal) => {
|
||||
const mod = await importOriginal<typeof import("../infra/shell-env.js")>();
|
||||
vi.mock("../infra/shell-env.js", async () => {
|
||||
const mod =
|
||||
await vi.importActual<typeof import("../infra/shell-env.js")>("../infra/shell-env.js");
|
||||
return {
|
||||
...mod,
|
||||
getShellPathFromLoginShell: shellEnvMocks.getShellPathFromLoginShell,
|
||||
|
|
@ -22,8 +23,10 @@ vi.mock("../infra/shell-env.js", async (importOriginal) => {
|
|||
};
|
||||
});
|
||||
|
||||
vi.mock("../infra/exec-approvals.js", async (importOriginal) => {
|
||||
const mod = await importOriginal<typeof import("../infra/exec-approvals.js")>();
|
||||
vi.mock("../infra/exec-approvals.js", async () => {
|
||||
const mod = await vi.importActual<typeof import("../infra/exec-approvals.js")>(
|
||||
"../infra/exec-approvals.js",
|
||||
);
|
||||
return { ...mod, resolveExecApprovals: () => createExecApprovals() };
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -85,19 +85,15 @@ function spawnDockerProcess(command: string, args: string[]) {
|
|||
return child;
|
||||
}
|
||||
|
||||
async function createChildProcessMock(
|
||||
importOriginal: () => Promise<typeof import("node:child_process")>,
|
||||
) {
|
||||
const actual = await importOriginal();
|
||||
async function createChildProcessMock() {
|
||||
const actual = await vi.importActual<typeof import("node:child_process")>("node:child_process");
|
||||
return {
|
||||
...actual,
|
||||
spawn: spawnDockerProcess,
|
||||
};
|
||||
}
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) =>
|
||||
createChildProcessMock(() => importOriginal<typeof import("node:child_process")>()),
|
||||
);
|
||||
vi.mock("node:child_process", async () => createChildProcessMock());
|
||||
|
||||
let ensureSandboxContainer: typeof import("./docker.js").ensureSandboxContainer;
|
||||
|
||||
|
|
@ -107,9 +103,7 @@ async function loadFreshDockerModuleForTest() {
|
|||
readRegistry: registryMocks.readRegistry,
|
||||
updateRegistry: registryMocks.updateRegistry,
|
||||
}));
|
||||
vi.doMock("node:child_process", async (importOriginal) =>
|
||||
createChildProcessMock(() => importOriginal<typeof import("node:child_process")>()),
|
||||
);
|
||||
vi.doMock("node:child_process", async () => createChildProcessMock());
|
||||
({ ensureSandboxContainer } = await import("./docker.js"));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -176,17 +176,20 @@ vi.mock("../../gateway/call.js", () => ({
|
|||
callGateway: hoisted.callGatewayMock,
|
||||
}));
|
||||
|
||||
vi.mock("../../acp/runtime/session-meta.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../../acp/runtime/session-meta.js")>();
|
||||
vi.mock("../../acp/runtime/session-meta.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../../acp/runtime/session-meta.js")>(
|
||||
"../../acp/runtime/session-meta.js",
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
readAcpSessionEntry: (params: unknown) => hoisted.readAcpSessionEntryMock(params),
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("../../infra/outbound/session-binding-service.js", async (importOriginal) => {
|
||||
const actual =
|
||||
await importOriginal<typeof import("../../infra/outbound/session-binding-service.js")>();
|
||||
vi.mock("../../infra/outbound/session-binding-service.js", async () => {
|
||||
const actual = await vi.importActual<
|
||||
typeof import("../../infra/outbound/session-binding-service.js")
|
||||
>("../../infra/outbound/session-binding-service.js");
|
||||
return {
|
||||
...actual,
|
||||
getSessionBindingService: () => buildFocusSessionBindingService(),
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ describe("group runtime loading", () => {
|
|||
|
||||
it("keeps prompt helpers off the heavy group runtime", async () => {
|
||||
const groupsRuntimeLoads = vi.fn();
|
||||
vi.doMock("./groups.runtime.js", async (importOriginal) => {
|
||||
vi.doMock("./groups.runtime.js", async () => {
|
||||
groupsRuntimeLoads();
|
||||
return await importOriginal<typeof import("./groups.runtime.js")>();
|
||||
return await vi.importActual<typeof import("./groups.runtime.js")>("./groups.runtime.js");
|
||||
});
|
||||
const groups = await import("./groups.js");
|
||||
|
||||
|
|
@ -40,9 +40,9 @@ describe("group runtime loading", () => {
|
|||
|
||||
it("loads the group runtime only when requireMention resolution needs it", async () => {
|
||||
const groupsRuntimeLoads = vi.fn();
|
||||
vi.doMock("./groups.runtime.js", async (importOriginal) => {
|
||||
vi.doMock("./groups.runtime.js", async () => {
|
||||
groupsRuntimeLoads();
|
||||
return await importOriginal<typeof import("./groups.runtime.js")>();
|
||||
return await vi.importActual<typeof import("./groups.runtime.js")>("./groups.runtime.js");
|
||||
});
|
||||
const groups = await import("./groups.js");
|
||||
|
||||
|
|
|
|||
|
|
@ -45,8 +45,10 @@ vi.mock("../logging/subsystem.js", () => {
|
|||
};
|
||||
});
|
||||
|
||||
vi.mock("../agents/auth-profiles.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../agents/auth-profiles.js")>();
|
||||
vi.mock("../agents/auth-profiles.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../agents/auth-profiles.js")>(
|
||||
"../agents/auth-profiles.js",
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
ensureAuthProfileStore: vi.fn(() => ({ version: 1, profiles: {} })),
|
||||
|
|
@ -64,8 +66,10 @@ vi.mock("../agents/workspace.js", () => {
|
|||
};
|
||||
});
|
||||
|
||||
vi.mock("../agents/command/session-store.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../agents/command/session-store.js")>();
|
||||
vi.mock("../agents/command/session-store.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../agents/command/session-store.js")>(
|
||||
"../agents/command/session-store.js",
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
updateSessionStoreAfterAgentRun: vi.fn(async () => undefined),
|
||||
|
|
@ -110,8 +114,10 @@ async function loadFreshAgentCommandModulesForTest() {
|
|||
vi.doMock("../agents/model-catalog.js", () => ({
|
||||
loadModelCatalog: loadModelCatalogMock,
|
||||
}));
|
||||
vi.doMock("../agents/model-selection.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../agents/model-selection.js")>();
|
||||
vi.doMock("../agents/model-selection.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../agents/model-selection.js")>(
|
||||
"../agents/model-selection.js",
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
isCliProvider: isCliProviderMock,
|
||||
|
|
|
|||
|
|
@ -24,24 +24,30 @@ const manifestRegistryMocks = vi.hoisted(() => ({
|
|||
loadPluginManifestRegistry: vi.fn(() => ({ plugins: [], diagnostics: [] })),
|
||||
}));
|
||||
|
||||
vi.mock("../channels/plugins/catalog.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../channels/plugins/catalog.js")>();
|
||||
vi.mock("../channels/plugins/catalog.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../channels/plugins/catalog.js")>(
|
||||
"../channels/plugins/catalog.js",
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
listChannelPluginCatalogEntries: catalogMocks.listChannelPluginCatalogEntries,
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("../plugins/manifest-registry.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../plugins/manifest-registry.js")>();
|
||||
vi.mock("../plugins/manifest-registry.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../plugins/manifest-registry.js")>(
|
||||
"../plugins/manifest-registry.js",
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
loadPluginManifestRegistry: manifestRegistryMocks.loadPluginManifestRegistry,
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("./channel-setup/plugin-install.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("./channel-setup/plugin-install.js")>();
|
||||
vi.mock("./channel-setup/plugin-install.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("./channel-setup/plugin-install.js")>(
|
||||
"./channel-setup/plugin-install.js",
|
||||
);
|
||||
const { createMockChannelSetupPluginInstallModule } =
|
||||
await import("./channels.plugin-install.test-helpers.js");
|
||||
return createMockChannelSetupPluginInstallModule(actual);
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ import { afterEach, describe, expect, it, vi } from "vitest";
|
|||
const spawnMock = vi.hoisted(() => vi.fn());
|
||||
const unrefMock = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("node:child_process")>();
|
||||
vi.mock("node:child_process", async () => {
|
||||
const actual = await vi.importActual<typeof import("node:child_process")>("node:child_process");
|
||||
return {
|
||||
...actual,
|
||||
spawn: (...args: unknown[]) => spawnMock(...args),
|
||||
|
|
|
|||
|
|
@ -96,8 +96,8 @@ vi.mock("../infra/restart-stale-pids.js", () => ({
|
|||
cleanStaleGatewayProcessesSync: (port?: number) => cleanStaleGatewayProcessesSync(port),
|
||||
}));
|
||||
|
||||
vi.mock("node:fs/promises", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("node:fs/promises")>();
|
||||
vi.mock("node:fs/promises", async () => {
|
||||
const actual = await vi.importActual<typeof import("node:fs/promises")>("node:fs/promises");
|
||||
const wrapped = {
|
||||
...actual,
|
||||
access: vi.fn(async (p: string) => {
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ const fsMocks = vi.hoisted(() => ({
|
|||
access: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("node:fs/promises", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("node:fs/promises")>();
|
||||
vi.mock("node:fs/promises", async () => {
|
||||
const actual = await vi.importActual<typeof import("node:fs/promises")>("node:fs/promises");
|
||||
return {
|
||||
...actual,
|
||||
default: {
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ vi.mock("../utils.js", async () => {
|
|||
};
|
||||
});
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("node:child_process")>();
|
||||
vi.mock("node:child_process", async () => {
|
||||
const actual = await vi.importActual<typeof import("node:child_process")>("node:child_process");
|
||||
return {
|
||||
...actual,
|
||||
spawn,
|
||||
|
|
|
|||
|
|
@ -4,11 +4,14 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
|
|||
|
||||
const execFileMock = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) => {
|
||||
vi.mock("node:child_process", async () => {
|
||||
const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js");
|
||||
return mockNodeBuiltinModule(importOriginal, {
|
||||
execFile: execFileMock,
|
||||
});
|
||||
return mockNodeBuiltinModule(
|
||||
() => vi.importActual<typeof import("node:child_process")>("node:child_process"),
|
||||
{
|
||||
execFile: execFileMock,
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
import { splitArgsPreservingQuotes } from "./arg-split.js";
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ const { readJsonBodyMock } = vi.hoisted(() => ({
|
|||
readJsonBodyMock: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("./hooks.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("./hooks.js")>();
|
||||
vi.mock("./hooks.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("./hooks.js")>("./hooks.js");
|
||||
return {
|
||||
...actual,
|
||||
readJsonBody: readJsonBodyMock,
|
||||
|
|
|
|||
|
|
@ -3,11 +3,14 @@ import { afterEach, describe, expect, it, vi } from "vitest";
|
|||
import { configHandlers, resolveConfigOpenCommand } from "./config.js";
|
||||
import { createConfigHandlerHarness } from "./config.test-helpers.js";
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) => {
|
||||
vi.mock("node:child_process", async () => {
|
||||
const { mockNodeBuiltinModule } = await import("../../../test/helpers/node-builtin-mocks.js");
|
||||
return mockNodeBuiltinModule(importOriginal, {
|
||||
execFile: vi.fn(),
|
||||
});
|
||||
return mockNodeBuiltinModule(
|
||||
() => vi.importActual<typeof import("node:child_process")>("node:child_process"),
|
||||
{
|
||||
execFile: vi.fn(),
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
function invokeExecFileCallback(args: unknown[], error: Error | null) {
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ const mocks = vi.hoisted(() => ({
|
|||
replaceConfigFile: vi.fn(async (_params: { nextConfig: OpenClawConfig }) => {}),
|
||||
}));
|
||||
|
||||
vi.mock("../config/config.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||
vi.mock("../config/config.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../config/config.js")>("../config/config.js");
|
||||
return {
|
||||
...actual,
|
||||
replaceConfigFile: mocks.replaceConfigFile,
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ const listChannelPluginsMock = vi.hoisted(() => vi.fn());
|
|||
const isDeliverableMessageChannelMock = vi.hoisted(() => vi.fn());
|
||||
const normalizeMessageChannelMock = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock("../config/config.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||
vi.mock("../config/config.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../config/config.js")>("../config/config.js");
|
||||
return {
|
||||
...actual,
|
||||
loadConfig: (...args: unknown[]) => loadConfigMock(...args),
|
||||
|
|
|
|||
|
|
@ -4,11 +4,14 @@ import { importFreshModule } from "../../test/helpers/import-fresh.js";
|
|||
|
||||
const execFileMock = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) => {
|
||||
vi.mock("node:child_process", async () => {
|
||||
const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js");
|
||||
return mockNodeBuiltinModule(importOriginal, {
|
||||
execFile: (...args: unknown[]) => execFileMock(...args),
|
||||
});
|
||||
return mockNodeBuiltinModule(
|
||||
() => vi.importActual<typeof import("node:child_process")>("node:child_process"),
|
||||
{
|
||||
execFile: (...args: unknown[]) => execFileMock(...args),
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
const originalVitest = process.env.VITEST;
|
||||
|
|
|
|||
|
|
@ -3,11 +3,14 @@ import { afterEach, describe, expect, it, vi } from "vitest";
|
|||
|
||||
const spawnSyncMock = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) => {
|
||||
vi.mock("node:child_process", async () => {
|
||||
const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js");
|
||||
return mockNodeBuiltinModule(importOriginal, {
|
||||
spawnSync: (...args: unknown[]) => spawnSyncMock(...args),
|
||||
});
|
||||
return mockNodeBuiltinModule(
|
||||
() => vi.importActual<typeof import("node:child_process")>("node:child_process"),
|
||||
{
|
||||
spawnSync: (...args: unknown[]) => spawnSyncMock(...args),
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
import { resolveOsSummary } from "./os-summary.js";
|
||||
|
|
|
|||
|
|
@ -6,11 +6,14 @@ const spawnMock = vi.hoisted(() => vi.fn());
|
|||
const triggerOpenClawRestartMock = vi.hoisted(() => vi.fn());
|
||||
const scheduleDetachedLaunchdRestartHandoffMock = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) => {
|
||||
vi.mock("node:child_process", async () => {
|
||||
const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js");
|
||||
return mockNodeBuiltinModule(importOriginal, {
|
||||
spawn: (...args: unknown[]) => spawnMock(...args),
|
||||
});
|
||||
return mockNodeBuiltinModule(
|
||||
() => vi.importActual<typeof import("node:child_process")>("node:child_process"),
|
||||
{
|
||||
spawn: (...args: unknown[]) => spawnMock(...args),
|
||||
},
|
||||
);
|
||||
});
|
||||
vi.mock("./restart.js", () => ({
|
||||
triggerOpenClawRestart: (...args: unknown[]) => triggerOpenClawRestartMock(...args),
|
||||
|
|
|
|||
|
|
@ -4,8 +4,10 @@ const resolveProviderUsageAuthWithPluginMock = vi.fn(
|
|||
async (..._args: unknown[]): Promise<unknown> => null,
|
||||
);
|
||||
|
||||
vi.mock("../plugins/provider-runtime.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../plugins/provider-runtime.js")>();
|
||||
vi.mock("../plugins/provider-runtime.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../plugins/provider-runtime.js")>(
|
||||
"../plugins/provider-runtime.js",
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
resolveProviderUsageAuthWithPlugin: resolveProviderUsageAuthWithPluginMock,
|
||||
|
|
|
|||
|
|
@ -10,12 +10,15 @@ const mockSpawnSync = vi.hoisted(() => vi.fn());
|
|||
const mockResolveGatewayPort = vi.hoisted(() => vi.fn(() => 18789));
|
||||
const mockRestartWarn = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) => {
|
||||
vi.mock("node:child_process", async () => {
|
||||
const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js");
|
||||
return mockNodeBuiltinModule(importOriginal, {
|
||||
spawnSync: (...args: unknown[]) => mockSpawnSync(...args),
|
||||
execFileSync: vi.fn(),
|
||||
});
|
||||
return mockNodeBuiltinModule(
|
||||
() => vi.importActual<typeof import("node:child_process")>("node:child_process"),
|
||||
{
|
||||
spawnSync: (...args: unknown[]) => mockSpawnSync(...args),
|
||||
execFileSync: vi.fn(),
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
vi.mock("../config/paths.js", () => ({
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi }
|
|||
import { captureEnv } from "../test-utils/env.js";
|
||||
import type { UpdateCheckResult } from "./update-check.js";
|
||||
|
||||
vi.mock("./openclaw-root.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("./openclaw-root.js")>();
|
||||
vi.mock("./openclaw-root.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("./openclaw-root.js")>("./openclaw-root.js");
|
||||
return {
|
||||
...actual,
|
||||
resolveOpenClawPackageRoot: vi.fn(),
|
||||
|
|
|
|||
|
|
@ -7,11 +7,14 @@ import { captureFullEnv } from "../test-utils/env.js";
|
|||
const spawnMock = vi.hoisted(() => vi.fn());
|
||||
const resolvePreferredOpenClawTmpDirMock = vi.hoisted(() => vi.fn(() => os.tmpdir()));
|
||||
|
||||
vi.mock("node:child_process", async (importOriginal) => {
|
||||
vi.mock("node:child_process", async () => {
|
||||
const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js");
|
||||
return mockNodeBuiltinModule(importOriginal, {
|
||||
spawn: (...args: unknown[]) => spawnMock(...args),
|
||||
});
|
||||
return mockNodeBuiltinModule(
|
||||
() => vi.importActual<typeof import("node:child_process")>("node:child_process"),
|
||||
{
|
||||
spawn: (...args: unknown[]) => spawnMock(...args),
|
||||
},
|
||||
);
|
||||
});
|
||||
vi.mock("./tmp-openclaw-dir.js", () => ({
|
||||
resolvePreferredOpenClawTmpDir: () => resolvePreferredOpenClawTmpDirMock(),
|
||||
|
|
|
|||
|
|
@ -28,8 +28,10 @@ vi.mock("./install.js", () => ({
|
|||
installPluginFromPath: (...args: unknown[]) => installPluginFromPathMock(...args),
|
||||
}));
|
||||
|
||||
vi.mock("../infra/net/fetch-guard.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../infra/net/fetch-guard.js")>();
|
||||
vi.mock("../infra/net/fetch-guard.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("../infra/net/fetch-guard.js")>(
|
||||
"../infra/net/fetch-guard.js",
|
||||
);
|
||||
return {
|
||||
...actual,
|
||||
fetchWithSsrFGuard: (params: { url: string; init?: RequestInit }) =>
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ type GatewayClientMock = {
|
|||
|
||||
const gatewayClientInstances: GatewayClientMock[] = [];
|
||||
|
||||
vi.mock("./gateway.ts", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("./gateway.ts")>();
|
||||
vi.mock("./gateway.ts", async () => {
|
||||
const actual = await vi.importActual<typeof import("./gateway.ts")>("./gateway.ts");
|
||||
|
||||
function resolveGatewayErrorDetailCode(
|
||||
error: { details?: unknown } | null | undefined,
|
||||
|
|
@ -89,8 +89,9 @@ vi.mock("./gateway.ts", async (importOriginal) => {
|
|||
return { ...actual, GatewayBrowserClient, resolveGatewayErrorDetailCode };
|
||||
});
|
||||
|
||||
vi.mock("./controllers/chat.ts", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("./controllers/chat.ts")>();
|
||||
vi.mock("./controllers/chat.ts", async () => {
|
||||
const actual =
|
||||
await vi.importActual<typeof import("./controllers/chat.ts")>("./controllers/chat.ts");
|
||||
return {
|
||||
...actual,
|
||||
loadChatHistory: loadChatHistoryMock,
|
||||
|
|
|
|||
Loading…
Reference in New Issue