diff --git a/src/agents/auth-profiles/usage.test.ts b/src/agents/auth-profiles/usage.test.ts index 5cd4912a545..459e98ffca9 100644 --- a/src/agents/auth-profiles/usage.test.ts +++ b/src/agents/auth-profiles/usage.test.ts @@ -17,8 +17,8 @@ const storeMocks = vi.hoisted(() => ({ })); const fetchMock = vi.hoisted(() => vi.fn()); -vi.mock("./store.js", async (importOriginal) => { - const original = await importOriginal(); +vi.mock("./store.js", async () => { + const original = await vi.importActual("./store.js"); return { ...original, updateAuthProfileStoreWithLock: storeMocks.updateAuthProfileStoreWithLock, diff --git a/src/agents/btw.test.ts b/src/agents/btw.test.ts index b190e0881d2..e7bba3429d1 100644 --- a/src/agents/btw.test.ts +++ b/src/agents/btw.test.ts @@ -16,8 +16,9 @@ const resolveSessionAuthProfileOverrideMock = vi.fn(); const getActiveEmbeddedRunSnapshotMock = vi.fn(); const diagDebugMock = vi.fn(); -vi.mock("@mariozechner/pi-ai", async (importOriginal) => { - const original = await importOriginal(); +vi.mock("@mariozechner/pi-ai", async () => { + const original = + await vi.importActual("@mariozechner/pi-ai"); return { ...original, streamSimple: (...args: unknown[]) => streamSimpleMock(...args), diff --git a/src/agents/compaction.identifier-preservation.test.ts b/src/agents/compaction.identifier-preservation.test.ts index 075899de858..77868bdaffc 100644 --- a/src/agents/compaction.identifier-preservation.test.ts +++ b/src/agents/compaction.identifier-preservation.test.ts @@ -3,8 +3,8 @@ import type { ExtensionContext } from "@mariozechner/pi-coding-agent"; import * as piCodingAgent from "@mariozechner/pi-coding-agent"; import { beforeEach, describe, expect, it, vi } from "vitest"; -vi.mock("@mariozechner/pi-coding-agent", async (importOriginal) => { - const actual = await importOriginal(); +vi.mock("@mariozechner/pi-coding-agent", async () => { + const actual = await vi.importActual("@mariozechner/pi-coding-agent"); return { ...actual, generateSummary: vi.fn(), @@ -14,14 +14,8 @@ vi.mock("@mariozechner/pi-coding-agent", async (importOriginal) => { const mockGenerateSummary = vi.mocked(piCodingAgent.generateSummary); type SummarizeInStagesInput = Parameters[0]; -let buildCompactionSummarizationInstructions: typeof import("./compaction.js").buildCompactionSummarizationInstructions; -let summarizeInStages: typeof import("./compaction.js").summarizeInStages; - -async function loadFreshCompactionModuleForTest() { - vi.resetModules(); - ({ buildCompactionSummarizationInstructions, summarizeInStages } = - await import("./compaction.js")); -} +const { buildCompactionSummarizationInstructions, summarizeInStages } = + await import("./compaction.js"); function makeMessage(index: number, size = 1200): AgentMessage { return { @@ -46,8 +40,7 @@ describe("compaction identifier-preservation instructions", () => { signal: new AbortController().signal, }; - beforeEach(async () => { - await loadFreshCompactionModuleForTest(); + beforeEach(() => { mockGenerateSummary.mockReset(); mockGenerateSummary.mockResolvedValue("summary"); }); diff --git a/src/agents/compaction.retry.test.ts b/src/agents/compaction.retry.test.ts index 4234bd236da..f867301abeb 100644 --- a/src/agents/compaction.retry.test.ts +++ b/src/agents/compaction.retry.test.ts @@ -6,8 +6,8 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { retryAsync } from "../infra/retry.js"; // Mock the external generateSummary function -vi.mock("@mariozechner/pi-coding-agent", async (importOriginal) => { - const actual = await importOriginal(); +vi.mock("@mariozechner/pi-coding-agent", async () => { + const actual = await vi.importActual("@mariozechner/pi-coding-agent"); return { ...actual, generateSummary: vi.fn(), diff --git a/src/agents/pi-tools.safe-bins.test.ts b/src/agents/pi-tools.safe-bins.test.ts index 106c671fca7..568bda4b492 100644 --- a/src/agents/pi-tools.safe-bins.test.ts +++ b/src/agents/pi-tools.safe-bins.test.ts @@ -20,8 +20,9 @@ afterAll(() => { bundledPluginsDirSnapshot.restore(); }); -vi.mock("../infra/shell-env.js", async (importOriginal) => { - const mod = await importOriginal(); +vi.mock("../infra/shell-env.js", async () => { + const mod = + await vi.importActual("../infra/shell-env.js"); return { ...mod, getShellPathFromLoginShell: vi.fn(() => null), @@ -30,12 +31,15 @@ vi.mock("../infra/shell-env.js", async (importOriginal) => { }); vi.mock("../plugins/tools.js", () => ({ + copyPluginToolMeta: vi.fn((_from, to) => to), resolvePluginTools: () => [], getPluginToolMeta: () => undefined, })); -vi.mock("../infra/exec-approvals.js", async (importOriginal) => { - const mod = await importOriginal(); +vi.mock("../infra/exec-approvals.js", async () => { + const mod = await vi.importActual( + "../infra/exec-approvals.js", + ); const approvals: ExecApprovalsResolved = { path: "/tmp/exec-approvals.json", socketPath: "/tmp/exec-approvals.sock", diff --git a/src/agents/sandbox/docker-backend.test.ts b/src/agents/sandbox/docker-backend.test.ts index ca41a7403a1..fee48b10367 100644 --- a/src/agents/sandbox/docker-backend.test.ts +++ b/src/agents/sandbox/docker-backend.test.ts @@ -8,8 +8,8 @@ const dockerMocks = vi.hoisted(() => ({ execDockerRaw: vi.fn(), })); -vi.mock("./docker.js", async (importOriginal) => { - const actual = await importOriginal(); +vi.mock("./docker.js", async () => { + const actual = await vi.importActual("./docker.js"); return { ...actual, dockerContainerState: dockerMocks.dockerContainerState, @@ -19,7 +19,7 @@ vi.mock("./docker.js", async (importOriginal) => { }; }); -let dockerSandboxBackendManager: typeof import("./docker-backend.js").dockerSandboxBackendManager; +const { dockerSandboxBackendManager } = await import("./docker-backend.js"); function createConfig(): OpenClawConfig { return { @@ -43,23 +43,8 @@ function createConfig(): OpenClawConfig { }; } -async function loadFreshDockerBackendModuleForTest() { - vi.resetModules(); - vi.doMock("./docker.js", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, - dockerContainerState: dockerMocks.dockerContainerState, - ensureSandboxContainer: dockerMocks.ensureSandboxContainer, - execDocker: dockerMocks.execDocker, - execDockerRaw: dockerMocks.execDockerRaw, - }; - }); - ({ dockerSandboxBackendManager } = await import("./docker-backend.js")); -} - describe("docker sandbox backend manager", () => { - beforeEach(async () => { + beforeEach(() => { vi.clearAllMocks(); dockerMocks.dockerContainerState.mockResolvedValue({ exists: true, @@ -70,7 +55,6 @@ describe("docker sandbox backend manager", () => { stdout: "unused-image", stderr: "", }); - await loadFreshDockerBackendModuleForTest(); }); it("matches ordinary sandbox runtimes against sandbox.docker.image", async () => { diff --git a/src/agents/skills-install-fallback.test.ts b/src/agents/skills-install-fallback.test.ts index c57e71ccfe7..29800b6a5a8 100644 --- a/src/agents/skills-install-fallback.test.ts +++ b/src/agents/skills-install-fallback.test.ts @@ -17,13 +17,17 @@ vi.mock("../infra/net/fetch-guard.js", () => ({ fetchWithSsrFGuard: vi.fn(), })); -vi.mock("../security/skill-scanner.js", async (importOriginal) => ({ - ...(await importOriginal()), +vi.mock("../security/skill-scanner.js", async () => ({ + ...(await vi.importActual( + "../security/skill-scanner.js", + )), scanDirectoryWithSummary: (...args: unknown[]) => scanDirectoryWithSummaryMock(...args), })); -vi.mock("../shared/config-eval.js", async (importOriginal) => { - const actual = await importOriginal(); +vi.mock("../shared/config-eval.js", async () => { + const actual = await vi.importActual( + "../shared/config-eval.js", + ); return { ...actual, hasBinary: (bin: string) => hasBinaryMock(bin),