test: speed up unit hotspot routing

This commit is contained in:
Peter Steinberger
2026-04-28 10:42:07 +01:00
parent 17811480da
commit a6bb0265f0
5 changed files with 35 additions and 27 deletions

View File

@@ -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/);
});

View File

@@ -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;
}

View File

@@ -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);
});

View File

@@ -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([

View File

@@ -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",