From 3edfc494dfce5fba40fcbc31af6cce26f5dd2811 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 3 Apr 2026 18:49:21 +0100 Subject: [PATCH] test: expand builtin mock helper usage --- extensions/voice-call/src/webhook/tailscale.test.ts | 7 +++---- src/cli/update-cli/restart-helper.test.ts | 7 +++---- src/daemon/systemd.test.ts | 7 +++---- src/gateway/server-methods/config.test.ts | 7 +++---- src/infra/machine-name.test.ts | 7 +++---- src/infra/os-summary.test.ts | 7 +++---- src/infra/process-respawn.test.ts | 7 +++---- src/infra/restart-stale-pids.test.ts | 7 +++---- src/infra/restart.test.ts | 9 ++++----- src/process/kill-tree.test.ts | 7 +++---- 10 files changed, 31 insertions(+), 41 deletions(-) diff --git a/extensions/voice-call/src/webhook/tailscale.test.ts b/extensions/voice-call/src/webhook/tailscale.test.ts index b1728226bde..6894a51a846 100644 --- a/extensions/voice-call/src/webhook/tailscale.test.ts +++ b/extensions/voice-call/src/webhook/tailscale.test.ts @@ -6,11 +6,10 @@ const { spawnMock } = vi.hoisted(() => ({ })); vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + const { mockNodeBuiltinModule } = await import("../../../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { spawn: spawnMock, - }; + }); }); import { diff --git a/src/cli/update-cli/restart-helper.test.ts b/src/cli/update-cli/restart-helper.test.ts index 42e7c8b4e63..e45b7c751c5 100644 --- a/src/cli/update-cli/restart-helper.test.ts +++ b/src/cli/update-cli/restart-helper.test.ts @@ -4,11 +4,10 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; import { prepareRestartScript, runRestartScript } from "./restart-helper.js"; vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + const { mockNodeBuiltinModule } = await import("../../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { spawn: vi.fn(), - }; + }); }); describe("restart-helper", () => { diff --git a/src/daemon/systemd.test.ts b/src/daemon/systemd.test.ts index 1382e995060..495f04f40a0 100644 --- a/src/daemon/systemd.test.ts +++ b/src/daemon/systemd.test.ts @@ -5,11 +5,10 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; const execFileMock = vi.hoisted(() => vi.fn()); vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { execFile: execFileMock, - }; + }); }); import { splitArgsPreservingQuotes } from "./arg-split.js"; diff --git a/src/gateway/server-methods/config.test.ts b/src/gateway/server-methods/config.test.ts index 182428f5c2c..878e8402423 100644 --- a/src/gateway/server-methods/config.test.ts +++ b/src/gateway/server-methods/config.test.ts @@ -4,11 +4,10 @@ import { configHandlers, resolveConfigOpenCommand } from "./config.js"; import { createConfigHandlerHarness } from "./config.test-helpers.js"; vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + const { mockNodeBuiltinModule } = await import("../../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { execFile: vi.fn(), - }; + }); }); function invokeExecFileCallback(args: unknown[], error: Error | null) { diff --git a/src/infra/machine-name.test.ts b/src/infra/machine-name.test.ts index 742279d2ba2..3c2189ce112 100644 --- a/src/infra/machine-name.test.ts +++ b/src/infra/machine-name.test.ts @@ -5,11 +5,10 @@ import { importFreshModule } from "../../test/helpers/import-fresh.js"; const execFileMock = vi.hoisted(() => vi.fn()); vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { execFile: (...args: unknown[]) => execFileMock(...args), - }; + }); }); const originalVitest = process.env.VITEST; diff --git a/src/infra/os-summary.test.ts b/src/infra/os-summary.test.ts index 8698cb07e4f..b7d64889a6f 100644 --- a/src/infra/os-summary.test.ts +++ b/src/infra/os-summary.test.ts @@ -4,11 +4,10 @@ import { afterEach, describe, expect, it, vi } from "vitest"; const spawnSyncMock = vi.hoisted(() => vi.fn()); vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { spawnSync: (...args: unknown[]) => spawnSyncMock(...args), - }; + }); }); import { resolveOsSummary } from "./os-summary.js"; diff --git a/src/infra/process-respawn.test.ts b/src/infra/process-respawn.test.ts index cf96fccf1d4..204a86cfbaa 100644 --- a/src/infra/process-respawn.test.ts +++ b/src/infra/process-respawn.test.ts @@ -7,11 +7,10 @@ const triggerOpenClawRestartMock = vi.hoisted(() => vi.fn()); const scheduleDetachedLaunchdRestartHandoffMock = vi.hoisted(() => vi.fn()); vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { spawn: (...args: unknown[]) => spawnMock(...args), - }; + }); }); vi.mock("./restart.js", () => ({ triggerOpenClawRestart: (...args: unknown[]) => triggerOpenClawRestartMock(...args), diff --git a/src/infra/restart-stale-pids.test.ts b/src/infra/restart-stale-pids.test.ts index d81839ac6a8..2c80c186bd4 100644 --- a/src/infra/restart-stale-pids.test.ts +++ b/src/infra/restart-stale-pids.test.ts @@ -11,12 +11,11 @@ const mockResolveGatewayPort = vi.hoisted(() => vi.fn(() => 18789)); const mockRestartWarn = vi.hoisted(() => vi.fn()); vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { spawnSync: (...args: unknown[]) => mockSpawnSync(...args), execFileSync: vi.fn(), - }; + }); }); vi.mock("../config/paths.js", () => ({ diff --git a/src/infra/restart.test.ts b/src/infra/restart.test.ts index f2e947936c4..0f9f6b6b3b4 100644 --- a/src/infra/restart.test.ts +++ b/src/infra/restart.test.ts @@ -5,11 +5,10 @@ const resolveLsofCommandSyncMock = vi.hoisted(() => vi.fn()); const resolveGatewayPortMock = vi.hoisted(() => vi.fn()); vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, - spawnSync: (...args: Parameters) => spawnSyncMock(...args), - }; + const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { + spawnSync: (...args: unknown[]) => spawnSyncMock(...args), + }); }); vi.mock("./ports-lsof.js", () => ({ diff --git a/src/process/kill-tree.test.ts b/src/process/kill-tree.test.ts index 9f1a359a0f5..3aba1c97a29 100644 --- a/src/process/kill-tree.test.ts +++ b/src/process/kill-tree.test.ts @@ -5,11 +5,10 @@ const { spawnMock } = vi.hoisted(() => ({ })); vi.mock("node:child_process", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + const { mockNodeBuiltinModule } = await import("../../test/helpers/node-builtin-mocks.js"); + return mockNodeBuiltinModule(importOriginal, { spawn: (...args: unknown[]) => spawnMock(...args), - }; + }); }); let killProcessTree: typeof import("./kill-tree.js").killProcessTree;