From ff4b4517d2ef00a2150a04b880e34a3d679784af Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sun, 12 Jul 2026 12:47:30 +0200 Subject: [PATCH] refactor(agents): remove stale testing aliases (#105293) --- src/agents/agent-bundle-mcp-runtime.ts | 1 - .../agent-hooks/compaction-safeguard.ts | 1 - src/agents/agent-tools.before-tool-call.ts | 1 - src/agents/agent-tools.ts | 1 - src/agents/auth-profiles/external-auth.ts | 2 -- src/agents/auth-profiles/usage.ts | 1 - src/agents/bash-tools.exec.ts | 1 - src/agents/channel-tools.ts | 1 - src/agents/cli-backends.ts | 1 - src/agents/code-mode.ts | 1 - src/agents/embedded-agent-runner/compact.ts | 2 -- .../run.lane-timeout.test.ts | 24 ++++++++-------- src/agents/embedded-agent-runner/run.ts | 1 - src/agents/embedded-agent-runner/runs.ts | 1 - src/agents/harness/native-hook-relay.ts | 1 - src/agents/live-cache-regression-runner.ts | 1 - src/agents/mcp-ui-resource.test.ts | 4 +-- src/agents/mcp-ui-resource.ts | 4 +-- src/agents/model-fallback.ts | 1 - ...els-config.applies-config-env-vars.test.ts | 2 +- src/agents/openclaw-tools.ts | 1 - src/agents/run-wait.ts | 1 - src/agents/session-suspension.ts | 1 - src/agents/session-write-lock.ts | 1 - src/agents/subagent-announce-delivery.ts | 1 - src/agents/subagent-announce-output.ts | 1 - src/agents/subagent-announce.ts | 1 - src/agents/subagent-control.ts | 1 - src/agents/subagent-registry.ts | 1 - src/agents/subagent-spawn.ts | 1 - src/agents/tool-search.ts | 1 - src/agents/tools/agent-step.ts | 1 - src/agents/tools/computer-tool.ts | 1 - src/agents/tools/image-tool.ts | 1 - src/agents/tools/sessions-resolution.ts | 1 - src/agents/tools/sessions-send-tool.a2a.ts | 1 - src/agents/tools/web-search.ts | 1 - src/agents/worktrees/run-lease.test.ts | 28 +++++++++---------- src/agents/worktrees/run-lease.ts | 4 +-- .../worktrees/service.remove-lease.test.ts | 4 +-- src/gateway/gateway-cli-backend.live.test.ts | 2 +- 41 files changed, 34 insertions(+), 73 deletions(-) diff --git a/src/agents/agent-bundle-mcp-runtime.ts b/src/agents/agent-bundle-mcp-runtime.ts index 759d3eb78f1e..7c54121f02e5 100644 --- a/src/agents/agent-bundle-mcp-runtime.ts +++ b/src/agents/agent-bundle-mcp-runtime.ts @@ -1302,4 +1302,3 @@ export const testing = { setBundleMcpDisposeTimeoutMsForTest, resolveSessionMcpRuntimeIdleTtlMs, }; -export { testing as __testing }; diff --git a/src/agents/agent-hooks/compaction-safeguard.ts b/src/agents/agent-hooks/compaction-safeguard.ts index 3baf73e23bab..0b793e2b117c 100644 --- a/src/agents/agent-hooks/compaction-safeguard.ts +++ b/src/agents/agent-hooks/compaction-safeguard.ts @@ -1362,4 +1362,3 @@ export const testing = { MAX_FILE_OPS_LIST_CHARS, SUMMARY_TRUNCATED_MARKER, } as const; -export { testing as __testing }; diff --git a/src/agents/agent-tools.before-tool-call.ts b/src/agents/agent-tools.before-tool-call.ts index 081e65d41713..313c42fa37d9 100644 --- a/src/agents/agent-tools.before-tool-call.ts +++ b/src/agents/agent-tools.before-tool-call.ts @@ -2068,7 +2068,6 @@ export const testing = { mergeParamsWithApprovalOverrides, isPlainObject, }; -export { testing as __testing }; function toLintErrorObject(value: unknown, fallbackMessage: string): Error { if (value instanceof Error) { diff --git a/src/agents/agent-tools.ts b/src/agents/agent-tools.ts index 5d8e883786c1..c0c4ef292f71 100644 --- a/src/agents/agent-tools.ts +++ b/src/agents/agent-tools.ts @@ -1217,4 +1217,3 @@ function createOpenClawCodingToolsInternal(options?: OpenClawCodingToolsOptions) export function createOpenClawCodingTools(options?: OpenClawCodingToolsOptions): AnyAgentTool[] { return createOpenClawCodingToolsInternal(options); } -export { testing as __testing }; diff --git a/src/agents/auth-profiles/external-auth.ts b/src/agents/auth-profiles/external-auth.ts index 70bfcd68c436..19b59dd26bf2 100644 --- a/src/agents/auth-profiles/external-auth.ts +++ b/src/agents/auth-profiles/external-auth.ts @@ -178,5 +178,3 @@ export function syncPersistedExternalCliAuthProfiles( } return next ?? store; } - -export { testing as __testing }; diff --git a/src/agents/auth-profiles/usage.ts b/src/agents/auth-profiles/usage.ts index db77d3b261ed..220368e10610 100644 --- a/src/agents/auth-profiles/usage.ts +++ b/src/agents/auth-profiles/usage.ts @@ -972,4 +972,3 @@ export async function clearAuthProfileCooldown(params: { logDroppedAuthProfileBookkeeping("clear_cooldown", profileId); } } -export { testing as __testing }; diff --git a/src/agents/bash-tools.exec.ts b/src/agents/bash-tools.exec.ts index 2736323e84fa..d31ea0c2b411 100644 --- a/src/agents/bash-tools.exec.ts +++ b/src/agents/bash-tools.exec.ts @@ -2139,4 +2139,3 @@ export const testing = { parseOpenClawChannelsLoginShellCommand, validateScriptFileForShellBleed, }; -export { testing as __testing }; diff --git a/src/agents/channel-tools.ts b/src/agents/channel-tools.ts index 3cc03dcd4426..261898b46eb2 100644 --- a/src/agents/channel-tools.ts +++ b/src/agents/channel-tools.ts @@ -181,4 +181,3 @@ export const testing = { messageActionTesting.resetLoggedMessageActionErrors(); }, }; -export { testing as __testing }; diff --git a/src/agents/cli-backends.ts b/src/agents/cli-backends.ts index c97cc4a436b9..83154f3529b2 100644 --- a/src/agents/cli-backends.ts +++ b/src/agents/cli-backends.ts @@ -522,4 +522,3 @@ export const testing = { }; }, } as const; -export { testing as __testing }; diff --git a/src/agents/code-mode.ts b/src/agents/code-mode.ts index 1c27a5b782a0..caec2f7df3a7 100644 --- a/src/agents/code-mode.ts +++ b/src/agents/code-mode.ts @@ -1751,4 +1751,3 @@ export const testing = { typescriptRuntimeForTest = runtime; }, }; -export { testing as __testing }; diff --git a/src/agents/embedded-agent-runner/compact.ts b/src/agents/embedded-agent-runner/compact.ts index 162a78366029..f04418078ebd 100644 --- a/src/agents/embedded-agent-runner/compact.ts +++ b/src/agents/embedded-agent-runner/compact.ts @@ -2019,5 +2019,3 @@ export const testing = { runAfterCompactionHooks, runPostCompactionSideEffects, } as const; - -export { testing as __testing }; diff --git a/src/agents/embedded-agent-runner/run.lane-timeout.test.ts b/src/agents/embedded-agent-runner/run.lane-timeout.test.ts index c9faede1b6dc..d4357cad1daa 100644 --- a/src/agents/embedded-agent-runner/run.lane-timeout.test.ts +++ b/src/agents/embedded-agent-runner/run.lane-timeout.test.ts @@ -1,29 +1,29 @@ import { MAX_TIMER_TIMEOUT_MS } from "@openclaw/normalization-core/number-coercion"; import { describe, expect, it } from "vitest"; import { DEFAULT_AGENT_TIMEOUT_MS } from "../timeout.js"; -import { __testing } from "./run.js"; +import { testing } from "./run.js"; describe("resolveEmbeddedRunLaneTimeoutMs", () => { it("adds queue grace to explicit run timeouts", () => { - expect(__testing.resolveEmbeddedRunLaneTimeoutMs(60_000)).toBe( - 60_000 + __testing.EMBEDDED_RUN_LANE_TIMEOUT_GRACE_MS, + expect(testing.resolveEmbeddedRunLaneTimeoutMs(60_000)).toBe( + 60_000 + testing.EMBEDDED_RUN_LANE_TIMEOUT_GRACE_MS, ); - expect(__testing.resolveEmbeddedRunLaneTimeoutMs(60_000.9)).toBe( - 60_000 + __testing.EMBEDDED_RUN_LANE_TIMEOUT_GRACE_MS, + expect(testing.resolveEmbeddedRunLaneTimeoutMs(60_000.9)).toBe( + 60_000 + testing.EMBEDDED_RUN_LANE_TIMEOUT_GRACE_MS, ); - expect(__testing.resolveEmbeddedRunLaneTimeoutMs(DEFAULT_AGENT_TIMEOUT_MS + 60_000)).toBe( - DEFAULT_AGENT_TIMEOUT_MS + 60_000 + __testing.EMBEDDED_RUN_LANE_TIMEOUT_GRACE_MS, + expect(testing.resolveEmbeddedRunLaneTimeoutMs(DEFAULT_AGENT_TIMEOUT_MS + 60_000)).toBe( + DEFAULT_AGENT_TIMEOUT_MS + 60_000 + testing.EMBEDDED_RUN_LANE_TIMEOUT_GRACE_MS, ); }); it("keeps the lane watchdog active when the run timeout is disabled", () => { const defaultLaneTimeoutMs = - DEFAULT_AGENT_TIMEOUT_MS + __testing.EMBEDDED_RUN_LANE_TIMEOUT_GRACE_MS; + DEFAULT_AGENT_TIMEOUT_MS + testing.EMBEDDED_RUN_LANE_TIMEOUT_GRACE_MS; - expect(__testing.resolveEmbeddedRunLaneTimeoutMs(0)).toBe(defaultLaneTimeoutMs); - expect(__testing.resolveEmbeddedRunLaneTimeoutMs(-1)).toBe(defaultLaneTimeoutMs); - expect(__testing.resolveEmbeddedRunLaneTimeoutMs(Number.NaN)).toBe(defaultLaneTimeoutMs); - expect(__testing.resolveEmbeddedRunLaneTimeoutMs(MAX_TIMER_TIMEOUT_MS)).toBe( + expect(testing.resolveEmbeddedRunLaneTimeoutMs(0)).toBe(defaultLaneTimeoutMs); + expect(testing.resolveEmbeddedRunLaneTimeoutMs(-1)).toBe(defaultLaneTimeoutMs); + expect(testing.resolveEmbeddedRunLaneTimeoutMs(Number.NaN)).toBe(defaultLaneTimeoutMs); + expect(testing.resolveEmbeddedRunLaneTimeoutMs(MAX_TIMER_TIMEOUT_MS)).toBe( defaultLaneTimeoutMs, ); }); diff --git a/src/agents/embedded-agent-runner/run.ts b/src/agents/embedded-agent-runner/run.ts index 5a61819d0307..974a7df2b72b 100644 --- a/src/agents/embedded-agent-runner/run.ts +++ b/src/agents/embedded-agent-runner/run.ts @@ -5078,4 +5078,3 @@ export const testing = { EMBEDDED_RUN_LANE_TIMEOUT_GRACE_MS, resolveEmbeddedRunLaneTimeoutMs, }; -export { testing as __testing }; diff --git a/src/agents/embedded-agent-runner/runs.ts b/src/agents/embedded-agent-runner/runs.ts index 42db178fec1b..85e16b4979fc 100644 --- a/src/agents/embedded-agent-runner/runs.ts +++ b/src/agents/embedded-agent-runner/runs.ts @@ -948,4 +948,3 @@ export const testing = { ABANDONED_EMBEDDED_RUN_SESSION_IDS_BY_FILE.clear(); }, }; -export { testing as __testing }; diff --git a/src/agents/harness/native-hook-relay.ts b/src/agents/harness/native-hook-relay.ts index 121854c65001..851a4b2cb940 100644 --- a/src/agents/harness/native-hook-relay.ts +++ b/src/agents/harness/native-hook-relay.ts @@ -2484,4 +2484,3 @@ export const testing = { nativeHookRelayDeferredToolApprovalRequester = requester; }, } as const; -export { testing as __testing }; diff --git a/src/agents/live-cache-regression-runner.ts b/src/agents/live-cache-regression-runner.ts index 9a8da3f8b01b..36aacf961a26 100644 --- a/src/agents/live-cache-regression-runner.ts +++ b/src/agents/live-cache-regression-runner.ts @@ -881,4 +881,3 @@ export async function runLiveCacheRegression(): Promise { beforeEach(() => { - __testing.clearViewStore(); + mcpUiResourceTesting.clearViewStore(); }); afterEach(() => { diff --git a/src/agents/mcp-ui-resource.ts b/src/agents/mcp-ui-resource.ts index bf5d4823af7e..e8f4d3e205c7 100644 --- a/src/agents/mcp-ui-resource.ts +++ b/src/agents/mcp-ui-resource.ts @@ -304,12 +304,10 @@ export function buildMcpAppCanvasPayload(view: { viewId: string; title: string } }; } -const testing = { +export const testing = { clearViewStore() { for (const [viewId, view] of getViewStore()) { deleteView(viewId, view); } }, }; - -export { testing as __testing }; diff --git a/src/agents/model-fallback.ts b/src/agents/model-fallback.ts index be1b08a589b0..d312aba254ea 100644 --- a/src/agents/model-fallback.ts +++ b/src/agents/model-fallback.ts @@ -2072,4 +2072,3 @@ export async function runWithImageModelFallback(params: { cfg: params.cfg, }); } -export { testing as __testing }; diff --git a/src/agents/models-config.applies-config-env-vars.test.ts b/src/agents/models-config.applies-config-env-vars.test.ts index 2959f5ec7e88..4e4a3ab8ef66 100644 --- a/src/agents/models-config.applies-config-env-vars.test.ts +++ b/src/agents/models-config.applies-config-env-vars.test.ts @@ -4,7 +4,7 @@ import type { OpenClawConfig } from "../config/config.js"; import { createConfigRuntimeEnv } from "../config/env-vars.js"; import type { PluginMetadataSnapshot } from "../plugins/plugin-metadata-snapshot.js"; import { withEnvAsync } from "../test-utils/env.js"; -import { __testing as externalAuthTesting } from "./auth-profiles/external-auth.js"; +import { testing as externalAuthTesting } from "./auth-profiles/external-auth.js"; import { clearRuntimeAuthProfileStoreSnapshots, replaceRuntimeAuthProfileStoreSnapshots, diff --git a/src/agents/openclaw-tools.ts b/src/agents/openclaw-tools.ts index 9e3ed7c5b21d..f0fa96805680 100644 --- a/src/agents/openclaw-tools.ts +++ b/src/agents/openclaw-tools.ts @@ -710,4 +710,3 @@ export const testing = { : defaultOpenClawToolsDeps; }, }; -export { testing as __testing }; diff --git a/src/agents/run-wait.ts b/src/agents/run-wait.ts index 2709c8d54d01..7779b791c90f 100644 --- a/src/agents/run-wait.ts +++ b/src/agents/run-wait.ts @@ -478,4 +478,3 @@ export const testing = { : defaultRunWaitDeps; }, }; -export { testing as __testing }; diff --git a/src/agents/session-suspension.ts b/src/agents/session-suspension.ts index 2ec1624b8f94..9eecfc3c780d 100644 --- a/src/agents/session-suspension.ts +++ b/src/agents/session-suspension.ts @@ -169,4 +169,3 @@ export const testing = { resolveLaneResumeConcurrency, resolveSessionSuspensionReason, } as const; -export { testing as __testing }; diff --git a/src/agents/session-write-lock.ts b/src/agents/session-write-lock.ts index c22146e4cb7e..84a82f73cb51 100644 --- a/src/agents/session-write-lock.ts +++ b/src/agents/session-write-lock.ts @@ -1101,4 +1101,3 @@ export function resetSessionWriteLockStateForTest(): void { unregisterCleanupHandlers(); resolveProcessStartTimeForLock = getProcessStartTime; } -export { testing as __testing }; diff --git a/src/agents/subagent-announce-delivery.ts b/src/agents/subagent-announce-delivery.ts index df50eea0369b..0f180a908564 100644 --- a/src/agents/subagent-announce-delivery.ts +++ b/src/agents/subagent-announce-delivery.ts @@ -1980,4 +1980,3 @@ export const testing = { hasSessionFileChangedAnnounceError, isSessionFileChangedAnnounceError, }; -export { testing as __testing }; diff --git a/src/agents/subagent-announce-output.ts b/src/agents/subagent-announce-output.ts index 316c40a6c311..4c24c2b218d9 100644 --- a/src/agents/subagent-announce-output.ts +++ b/src/agents/subagent-announce-output.ts @@ -590,4 +590,3 @@ export const testing = { : defaultSubagentAnnounceOutputDeps; }, }; -export { testing as __testing }; diff --git a/src/agents/subagent-announce.ts b/src/agents/subagent-announce.ts index 2fe8c744b377..87390c04f6f3 100644 --- a/src/agents/subagent-announce.ts +++ b/src/agents/subagent-announce.ts @@ -660,4 +660,3 @@ export const testing = { : defaultSubagentAnnounceDeps; }, }; -export { testing as __testing }; diff --git a/src/agents/subagent-control.ts b/src/agents/subagent-control.ts index 4e82ee969e04..5c2123e9bab7 100644 --- a/src/agents/subagent-control.ts +++ b/src/agents/subagent-control.ts @@ -934,4 +934,3 @@ export const testing = { : defaultSubagentControlDeps; }, }; -export { testing as __testing }; diff --git a/src/agents/subagent-registry.ts b/src/agents/subagent-registry.ts index e02ee9363a2b..0640301cf930 100644 --- a/src/agents/subagent-registry.ts +++ b/src/agents/subagent-registry.ts @@ -2049,4 +2049,3 @@ export function initSubagentRegistry() { // Importing this module also registers the subagent maintenance preserve-key // provider as a side effect (see subagent-registry-maintenance.ts). export { listSessionMaintenanceProtectedSubagentSessionKeys } from "./subagent-registry-maintenance.js"; -export { testing as __testing }; diff --git a/src/agents/subagent-spawn.ts b/src/agents/subagent-spawn.ts index b909763f30df..a86efc054c3a 100644 --- a/src/agents/subagent-spawn.ts +++ b/src/agents/subagent-spawn.ts @@ -1757,4 +1757,3 @@ export const testing = { : defaultSubagentSpawnDeps; }, }; -export { testing as __testing }; diff --git a/src/agents/tool-search.ts b/src/agents/tool-search.ts index ade7be24c532..06dd65db793d 100644 --- a/src/agents/tool-search.ts +++ b/src/agents/tool-search.ts @@ -2418,4 +2418,3 @@ export const testing = { appendToolSearchCodeStderrTail, runCodeModeChild, }; -export { testing as __testing }; diff --git a/src/agents/tools/agent-step.ts b/src/agents/tools/agent-step.ts index 95dfb23d3cd2..39bfddfae54a 100644 --- a/src/agents/tools/agent-step.ts +++ b/src/agents/tools/agent-step.ts @@ -152,4 +152,3 @@ export const testing = { : defaultAgentStepDeps; }, }; -export { testing as __testing }; diff --git a/src/agents/tools/computer-tool.ts b/src/agents/tools/computer-tool.ts index b57c69cf7e93..f4a17bc2e8c7 100644 --- a/src/agents/tools/computer-tool.ts +++ b/src/agents/tools/computer-tool.ts @@ -963,4 +963,3 @@ export const testing = { waitForPostActionSettle = override ?? defaultWaitForPostActionSettle; }, }; -export { testing as __testing }; diff --git a/src/agents/tools/image-tool.ts b/src/agents/tools/image-tool.ts index c074b868f2bc..64ad15336581 100644 --- a/src/agents/tools/image-tool.ts +++ b/src/agents/tools/image-tool.ts @@ -1093,4 +1093,3 @@ export function createImageTool(options?: { }, }; } -export { testing as __testing }; diff --git a/src/agents/tools/sessions-resolution.ts b/src/agents/tools/sessions-resolution.ts index fa40dcc148be..52e12df4d110 100644 --- a/src/agents/tools/sessions-resolution.ts +++ b/src/agents/tools/sessions-resolution.ts @@ -484,4 +484,3 @@ export const testing = { ); }, }; -export { testing as __testing }; diff --git a/src/agents/tools/sessions-send-tool.a2a.ts b/src/agents/tools/sessions-send-tool.a2a.ts index 7ae9154026bb..8fb2d912c872 100644 --- a/src/agents/tools/sessions-send-tool.a2a.ts +++ b/src/agents/tools/sessions-send-tool.a2a.ts @@ -268,4 +268,3 @@ export const testing = { : defaultSessionsSendA2ADeps; }, }; -export { testing as __testing }; diff --git a/src/agents/tools/web-search.ts b/src/agents/tools/web-search.ts index a0aa0d4c6aa5..9c83ef721c9a 100644 --- a/src/agents/tools/web-search.ts +++ b/src/agents/tools/web-search.ts @@ -125,4 +125,3 @@ export const testing = { resolveSearchProvider: (search?: Parameters[0]["search"]) => resolveWebSearchProviderId({ search }), }; -export { testing as __testing }; diff --git a/src/agents/worktrees/run-lease.test.ts b/src/agents/worktrees/run-lease.test.ts index 0942f6be70d1..a2f20a15ed23 100644 --- a/src/agents/worktrees/run-lease.test.ts +++ b/src/agents/worktrees/run-lease.test.ts @@ -12,7 +12,7 @@ import { releaseWorktreeRunLeaseRow, } from "./registry.js"; import { - __testing, + testing as runLeaseTesting, abortWorktreeRemoval, acquireWorktreeRunLease, claimWorktreeRemoval, @@ -55,7 +55,7 @@ describe("worktree run lease", () => { }); afterEach(async () => { - __testing.resetForTest(); + runLeaseTesting.resetForTest(); closeOpenClawStateDatabaseForTest(); await fs.rm(root, { recursive: true, force: true }); }); @@ -113,7 +113,7 @@ describe("worktree run lease", () => { startTime: 4242, now: 1, }); - __testing.setDeadPidResolverForTest((pid) => pid === 987_654); + runLeaseTesting.setDeadPidResolverForTest((pid) => pid === 987_654); expect(hasLiveWorktreeRunLease(env, created.id)).toBe(false); expect(() => @@ -130,7 +130,7 @@ describe("worktree run lease", () => { startTime: 111, now: 1, }); - __testing.setProcessStartTimeResolverForTest(() => 222); + runLeaseTesting.setProcessStartTimeResolverForTest(() => 222); expect(hasLiveWorktreeRunLease(env, created.id)).toBe(false); @@ -166,7 +166,7 @@ describe("worktree run lease", () => { it("recovers admission when the remover died before finalizing the removal", async () => { const created = await createSessionWorktree(); claimWorktreeRemoval(env, { worktreeId: created.id, token: "remover", force: true }); - __testing.setDeadPidResolverForTest((pid) => pid === process.pid); + runLeaseTesting.setDeadPidResolverForTest((pid) => pid === process.pid); const lease = await acquireWorktreeRunLease(created.id, { env }); expect(lease.token).toBeTruthy(); @@ -196,7 +196,7 @@ describe("worktree run lease", () => { const record = getRegistryWorktree(env, created.id)!; let attempts = 0; - __testing.setReleaseRowImplForTest((rowEnv, id, token) => { + runLeaseTesting.setReleaseRowImplForTest((rowEnv, id, token) => { attempts += 1; if (attempts === 1) { throw new Error("simulated state database failure"); @@ -216,7 +216,7 @@ describe("worktree run lease", () => { const record = getRegistryWorktree(env, created.id)!; let fail = true; - __testing.setReleaseRowImplForTest((rowEnv, id, token) => { + runLeaseTesting.setReleaseRowImplForTest((rowEnv, id, token) => { if (fail) { throw new Error("simulated state database failure"); } @@ -231,7 +231,7 @@ describe("worktree run lease", () => { ).toThrow("worktree is busy"); fail = false; - await __testing.drainPendingCleanupsForTest(); + await runLeaseTesting.drainPendingCleanupsForTest(); expect(hasLiveWorktreeRunLease(env, created.id)).toBe(false); expect(await lockState(record)).toEqual({ kind: "none" }); expect(() => @@ -261,7 +261,7 @@ describe("worktree run lease", () => { const record = getRegistryWorktree(env, created.id)!; let failUnlock = true; - __testing.setUnlockImplForTest(async (rec) => { + runLeaseTesting.setUnlockImplForTest(async (rec) => { if (failUnlock) { throw new Error("simulated git unlock failure"); } @@ -273,7 +273,7 @@ describe("worktree run lease", () => { expect(await lockState(record)).toEqual({ kind: "live", pid: process.pid }); failUnlock = false; - await __testing.drainPendingCleanupsForTest(); + await runLeaseTesting.drainPendingCleanupsForTest(); expect(await lockState(record)).toEqual({ kind: "none" }); }); @@ -283,7 +283,7 @@ describe("worktree run lease", () => { const record = getRegistryWorktree(env, created.id)!; let failUnlock = true; - __testing.setUnlockImplForTest(async (rec) => { + runLeaseTesting.setUnlockImplForTest(async (rec) => { if (failUnlock) { throw new Error("simulated git unlock failure"); } @@ -295,7 +295,7 @@ describe("worktree run lease", () => { const second = await acquireWorktreeRunLease(created.id, { env }); failUnlock = false; - await __testing.drainPendingCleanupsForTest(); + await runLeaseTesting.drainPendingCleanupsForTest(); expect(await lockState(record)).toEqual({ kind: "live", pid: process.pid }); await second.release(); @@ -319,9 +319,9 @@ describe("worktree run lease", () => { const created = await createSessionWorktree(); claimWorktreeRemoval(env, { worktreeId: created.id, token: "remover-a", force: false }); - __testing.setDeadPidResolverForTest((pid) => pid === process.pid); + runLeaseTesting.setDeadPidResolverForTest((pid) => pid === process.pid); claimWorktreeRemoval(env, { worktreeId: created.id, token: "remover-b", force: false }); - __testing.setDeadPidResolverForTest(null); + runLeaseTesting.setDeadPidResolverForTest(null); abortWorktreeRemoval(env, created.id, "remover-a"); await expect(acquireWorktreeRunLease(created.id, { env })).rejects.toThrow( diff --git a/src/agents/worktrees/run-lease.ts b/src/agents/worktrees/run-lease.ts index 4a707a9e75c9..049b8251d0c5 100644 --- a/src/agents/worktrees/run-lease.ts +++ b/src/agents/worktrees/run-lease.ts @@ -321,7 +321,7 @@ export function hasLiveWorktreeRunLease(env: NodeJS.ProcessEnv, worktreeId: stri return hasLiveWorktreeRunLeaseRow(env, worktreeId, ownerChecks); } -const testing = { +export const testing = { setProcessStartTimeResolverForTest(resolver: ((pid: number) => number | null) | null): void { resolveSelfStartTime = resolver ?? getFileLockProcessStartTime; ownerChecks = { ...ownerChecks, getProcessStartTime: resolver ?? undefined }; @@ -348,5 +348,3 @@ const testing = { unlockWorktreeImpl = unlockWorktree; }, }; - -export { testing as __testing }; diff --git a/src/agents/worktrees/service.remove-lease.test.ts b/src/agents/worktrees/service.remove-lease.test.ts index 74dfeb5c6b08..65e72cf2f5f7 100644 --- a/src/agents/worktrees/service.remove-lease.test.ts +++ b/src/agents/worktrees/service.remove-lease.test.ts @@ -6,7 +6,7 @@ import { promisify } from "node:util"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { closeOpenClawStateDatabaseForTest } from "../../state/openclaw-state-db.js"; import { getRegistryWorktree } from "./registry.js"; -import { __testing, acquireWorktreeRunLease } from "./run-lease.js"; +import { acquireWorktreeRunLease, testing as runLeaseTesting } from "./run-lease.js"; import { IDLE_GC_MS, ManagedWorktreeService } from "./service.js"; const execFileAsync = promisify(execFile); @@ -45,7 +45,7 @@ describe("ManagedWorktreeService removal against a live run lease", () => { }); afterEach(async () => { - __testing.resetForTest(); + runLeaseTesting.resetForTest(); closeOpenClawStateDatabaseForTest(); await fs.rm(root, { recursive: true, force: true }); }); diff --git a/src/gateway/gateway-cli-backend.live.test.ts b/src/gateway/gateway-cli-backend.live.test.ts index ecb38d751ef3..15a2ce36946c 100644 --- a/src/gateway/gateway-cli-backend.live.test.ts +++ b/src/gateway/gateway-cli-backend.live.test.ts @@ -5,7 +5,7 @@ import os from "node:os"; import path from "node:path"; import { describe, expect, it } from "vitest"; import { - __testing as cliBackendsTesting, + testing as cliBackendsTesting, resolveCliBackendConfig, resolveCliBackendLiveTest, } from "../agents/cli-backends.js";