From a6bb0265f0077cef40d3d3e46fafa1e554b7ed5a Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 28 Apr 2026 10:42:07 +0100 Subject: [PATCH] test: speed up unit hotspot routing --- src/memory-host-sdk/host/secret-input.test.ts | 26 +++++++------------ src/memory-host-sdk/host/secret-input.ts | 3 ++- src/proxy-capture/env.test.ts | 13 +++------- test/vitest-unit-fast-config.test.ts | 1 - test/vitest/vitest.unit-fast-paths.mjs | 19 ++++++++++++++ 5 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/memory-host-sdk/host/secret-input.test.ts b/src/memory-host-sdk/host/secret-input.test.ts index 78de30cd519..18c9a8e8d59 100644 --- a/src/memory-host-sdk/host/secret-input.test.ts +++ b/src/memory-host-sdk/host/secret-input.test.ts @@ -1,22 +1,19 @@ -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { resolveMemorySecretInputString } from "./secret-input.js"; describe("resolveMemorySecretInputString", () => { - afterEach(() => { - delete process.env.GOOGLE_API_KEY; - }); + const googleApiKeyRef = { + source: "env", + provider: "default", + id: "GOOGLE_API_KEY", + }; it("uses the daemon env for env-backed SecretRefs", () => { - process.env.GOOGLE_API_KEY = "resolved-key"; - expect( resolveMemorySecretInputString({ - value: { - source: "env", - provider: "default", - id: "GOOGLE_API_KEY", - }, + value: googleApiKeyRef, path: "agents.main.memorySearch.remote.apiKey", + env: { GOOGLE_API_KEY: "resolved-key" }, }), ).toBe("resolved-key"); }); @@ -24,12 +21,9 @@ describe("resolveMemorySecretInputString", () => { it("still throws when an env-backed SecretRef is missing from the daemon env", () => { expect(() => resolveMemorySecretInputString({ - value: { - source: "env", - provider: "default", - id: "GOOGLE_API_KEY", - }, + value: googleApiKeyRef, path: "agents.main.memorySearch.remote.apiKey", + env: {}, }), ).toThrow(/unresolved SecretRef/); }); diff --git a/src/memory-host-sdk/host/secret-input.ts b/src/memory-host-sdk/host/secret-input.ts index 5a4bbfed13f..6b3f3a89595 100644 --- a/src/memory-host-sdk/host/secret-input.ts +++ b/src/memory-host-sdk/host/secret-input.ts @@ -12,10 +12,11 @@ export function hasConfiguredMemorySecretInput(value: unknown): boolean { export function resolveMemorySecretInputString(params: { value: unknown; path: string; + env?: NodeJS.ProcessEnv; }): string | undefined { const { ref } = resolveSecretInputRef({ value: params.value }); if (ref?.source === "env") { - const envValue = normalizeSecretInputString(process.env[ref.id]); + const envValue = normalizeSecretInputString((params.env ?? process.env)[ref.id]); if (envValue) { return envValue; } diff --git a/src/proxy-capture/env.test.ts b/src/proxy-capture/env.test.ts index bb112d8f897..d34fc28d897 100644 --- a/src/proxy-capture/env.test.ts +++ b/src/proxy-capture/env.test.ts @@ -1,4 +1,4 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; +import { describe, expect, it } from "vitest"; import { OPENCLAW_DEBUG_PROXY_ENABLED, OPENCLAW_DEBUG_PROXY_SESSION_ID, @@ -6,18 +6,13 @@ import { } from "./env.js"; describe("resolveDebugProxySettings", () => { - afterEach(() => { - vi.resetModules(); - }); - - it("keeps an implicit debug proxy session id stable within one process", async () => { - const mod = await import("./env.js"); + it("keeps an implicit debug proxy session id stable within one process", () => { const env = { [OPENCLAW_DEBUG_PROXY_ENABLED]: "1", } satisfies NodeJS.ProcessEnv; - const first = mod.resolveDebugProxySettings(env); - const second = mod.resolveDebugProxySettings(env); + const first = resolveDebugProxySettings(env); + const second = resolveDebugProxySettings(env); expect(first.sessionId).toBe(second.sessionId); }); diff --git a/test/vitest-unit-fast-config.test.ts b/test/vitest-unit-fast-config.test.ts index 7e1bad77835..cf014559b8e 100644 --- a/test/vitest-unit-fast-config.test.ts +++ b/test/vitest-unit-fast-config.test.ts @@ -74,7 +74,6 @@ describe("unit-fast vitest lane", () => { expect(isUnitFastTestFile("src/plugin-sdk/temp-path.test.ts")).toBe(false); expect(isUnitFastTestFile("src/agents/sandbox.resolveSandboxContext.test.ts")).toBe(false); expect(isUnitFastTestFile("src/crestodian/assistant.test.ts")).toBe(false); - expect(isUnitFastTestFile("src/proxy-capture/coverage.test.ts")).toBe(false); expect(isUnitFastTestFile("src/secrets/runtime.test.ts")).toBe(false); expect(resolveUnitFastTestIncludePattern("src/plugin-sdk/temp-path.ts")).toBeNull(); expect(classifyUnitFastTestFileContent("vi.resetModules(); await import('./x.js')")).toEqual([ diff --git a/test/vitest/vitest.unit-fast-paths.mjs b/test/vitest/vitest.unit-fast-paths.mjs index 6ea1f19fc2e..464760274d8 100644 --- a/test/vitest/vitest.unit-fast-paths.mjs +++ b/test/vitest/vitest.unit-fast-paths.mjs @@ -19,6 +19,7 @@ const unitFastCandidateGlobs = [ "src/channels/**/*.test.ts", "src/cli/**/*.test.ts", "src/commands/**/*.test.ts", + "src/compat/**/*.test.ts", "src/config/**/*.test.ts", "src/daemon/**/*.test.ts", "src/i18n/**/*.test.ts", @@ -41,6 +42,7 @@ const unitFastCandidateGlobs = [ "src/poll-params.test.ts", "src/polls.test.ts", "src/process/**/*.test.ts", + "src/proxy-capture/**/*.test.ts", "src/routing/**/*.test.ts", "src/sessions/**/*.test.ts", "src/shared/**/*.test.ts", @@ -50,6 +52,7 @@ const unitFastCandidateGlobs = [ "src/tts/**/*.test.ts", "src/utils/**/*.test.ts", "src/video-generation/**/*.test.ts", + "src/web/**/*.test.ts", "src/wizard/**/*.test.ts", "test/**/*.test.ts", ]; @@ -84,6 +87,7 @@ export const forcedUnitFastTestFiles = [ "src/crestodian/tui-backend.test.ts", "src/flows/channel-setup.test.ts", "src/flows/channel-setup.status.test.ts", + "src/flows/doctor-health-contributions.test.ts", "src/flows/provider-flow.test.ts", "src/context-engine/context-engine.test.ts", "src/canvas-host/server.state-dir.test.ts", @@ -100,6 +104,7 @@ export const forcedUnitFastTestFiles = [ "src/flows/search-setup.test.ts", "src/i18n/registry.test.ts", "src/image-generation/openai-compatible-image-provider.test.ts", + "src/image-generation/provider-registry.test.ts", "src/install-sh-version.test.ts", "src/logger.test.ts", "src/library.test.ts", @@ -111,8 +116,10 @@ export const forcedUnitFastTestFiles = [ "src/memory-host-sdk/host/mirror.test.ts", "src/memory-host-sdk/host/post-json.test.ts", "src/memory-host-sdk/host/session-files.test.ts", + "src/media-generation/provider-capabilities.contract.test.ts", "src/music-generation/runtime.test.ts", "src/mcp/channel-server.shutdown-unhandled-rejection.test.ts", + "src/mcp/openclaw-tools-serve.test.ts", "src/node-host/runner.credentials.test.ts", "src/node-host/plugin-node-host.test.ts", "src/node-host/invoke-system-run-plan.test.ts", @@ -123,11 +130,15 @@ export const forcedUnitFastTestFiles = [ "src/pairing/setup-code.test.ts", "src/plugin-activation-boundary.test.ts", "src/plugin-sdk/memory-host-events.test.ts", + "src/proxy-capture/env.test.ts", "src/proxy-capture/runtime.test.ts", "src/proxy-capture/proxy-server.test.ts", "src/proxy-capture/store.sqlite.test.ts", "src/realtime-voice/agent-consult-runtime.test.ts", "src/realtime-voice/session-runtime.test.ts", + "src/security/audit-channel-account-metadata.test.ts", + "src/security/audit-channel-source-config-discord.test.ts", + "src/security/audit-config-basics.test.ts", "src/security/audit-channel-dm-policy.test.ts", "src/security/audit-channel-source-config-slack.test.ts", "src/security/audit-channel-readonly-resolution.test.ts", @@ -143,12 +154,18 @@ export const forcedUnitFastTestFiles = [ "src/security/audit-gateway-auth-selection.test.ts", "src/security/audit-gateway-http-auth.test.ts", "src/security/audit-gateway-tools-http.test.ts", + "src/security/audit-hooks-routing.test.ts", "src/security/audit-sandbox-docker-config.test.ts", "src/security/audit-sandbox-browser.test.ts", "src/security/safe-regex.test.ts", + "src/security/audit-model-hygiene.test.ts", "src/security/audit-small-model-risk.test.ts", "src/security/audit-node-command-findings.test.ts", "src/security/audit-extra.async.test.ts", + "src/security/audit-probe-failure.test.ts", + "src/security/audit-plugin-code-safety.test.ts", + "src/security/audit-summary.test.ts", + "src/security/audit-synced-folder.test.ts", "src/security/audit-trust-model.test.ts", "src/security/dm-policy-shared.test.ts", "src/security/audit-plugins-trust.test.ts", @@ -165,12 +182,14 @@ export const forcedUnitFastTestFiles = [ "src/realtime-voice/agent-consult-tool.test.ts", "src/routing/resolve-route.test.ts", "src/sessions/transcript-events.test.ts", + "src/status/status-message.test.ts", "src/security/windows-acl.test.ts", "src/trajectory/cleanup.test.ts", "src/trajectory/export.test.ts", "src/trajectory/metadata.test.ts", "src/trajectory/runtime.test.ts", "src/tts/openai-compatible-speech-provider.test.ts", + "src/tts/tts.test.ts", "src/tts/provider-registry.test.ts", "src/tts/status-config.test.ts", "src/tts/tts-config.test.ts",