From 0d5f386f5ccd4f1be8d5e7040b29f487dbbe66a4 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 7 Apr 2026 06:48:55 +0100 Subject: [PATCH] perf(secrets): split runtime coverage test lanes --- src/secrets/runtime.coverage.test.ts | 97 ++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 28 deletions(-) diff --git a/src/secrets/runtime.coverage.test.ts b/src/secrets/runtime.coverage.test.ts index 3b96e3f5209..00cc669d6e8 100644 --- a/src/secrets/runtime.coverage.test.ts +++ b/src/secrets/runtime.coverage.test.ts @@ -61,6 +61,24 @@ let createResolverContext: typeof import("./runtime-shared.js").createResolverCo let resolveSecretRefValues: typeof import("./resolve.js").resolveSecretRefValues; let resolveRuntimeWebTools: typeof import("./runtime-web-tools.js").resolveRuntimeWebTools; +async function ensureConfigCoverageRuntimeLoaded(): Promise { + if (!collectConfigAssignments) { + ({ collectConfigAssignments } = await import("./runtime-config-collectors.js")); + } +} + +async function ensureAuthCoverageRuntimeLoaded(): Promise { + if (!collectAuthStoreAssignments) { + ({ collectAuthStoreAssignments } = await import("./runtime-auth-collectors.js")); + } +} + +async function ensureRuntimeWebToolsLoaded(): Promise { + if (!resolveRuntimeWebTools) { + ({ resolveRuntimeWebTools } = await import("./runtime-web-tools.js")); + } +} + function toConcretePathSegments(pathPattern: string, wildcardToken = "sample"): string[] { const segments = pathPattern.split(".").filter(Boolean); const out: string[] = []; @@ -374,14 +392,13 @@ function applyAuthStoreTarget( }); } -async function prepareCoverageSnapshot(params: { +async function prepareConfigCoverageSnapshot(params: { config: OpenClawConfig; env: NodeJS.ProcessEnv; - agentDirs: string[]; - loadAuthStore: (agentDir?: string) => AuthProfileStore; loadablePluginOrigins?: ReadonlyMap; includeRuntimeWebTools?: boolean; }) { + await ensureConfigCoverageRuntimeLoaded(); const sourceConfig = structuredClone(params.config); const resolvedConfig = structuredClone(params.config); const context = createResolverContext({ @@ -395,6 +412,49 @@ async function prepareCoverageSnapshot(params: { loadablePluginOrigins: params.loadablePluginOrigins, }); + if (context.assignments.length > 0) { + const resolved = await resolveSecretRefValues( + context.assignments.map((assignment) => assignment.ref), + { + config: sourceConfig, + env: context.env, + cache: context.cache, + }, + ); + applyResolvedAssignments({ + assignments: context.assignments, + resolved, + }); + } + + if (params.includeRuntimeWebTools) { + await ensureRuntimeWebToolsLoaded(); + await resolveRuntimeWebTools({ + sourceConfig, + resolvedConfig, + context, + }); + } + + return { + config: resolvedConfig, + warnings: context.warnings, + }; +} + +async function prepareAuthCoverageSnapshot(params: { + config: OpenClawConfig; + env: NodeJS.ProcessEnv; + agentDirs: string[]; + loadAuthStore: (agentDir?: string) => AuthProfileStore; +}) { + await ensureAuthCoverageRuntimeLoaded(); + const sourceConfig = structuredClone(params.config); + const context = createResolverContext({ + sourceConfig, + env: params.env, + }); + const authStores = params.agentDirs.map((agentDir) => { const store = structuredClone(params.loadAuthStore(agentDir)); collectAuthStoreAssignments({ @@ -420,16 +480,7 @@ async function prepareCoverageSnapshot(params: { }); } - if (params.includeRuntimeWebTools) { - await resolveRuntimeWebTools({ - sourceConfig, - resolvedConfig, - context, - }); - } - return { - config: resolvedConfig, authStores, warnings: context.warnings, }; @@ -437,20 +488,12 @@ async function prepareCoverageSnapshot(params: { describe("secrets runtime target coverage", () => { beforeAll(async () => { - const [sharedRuntime, authCollectors, configCollectors, resolver, webTools] = await Promise.all( - [ - import("./runtime-shared.js"), - import("./runtime-auth-collectors.js"), - import("./runtime-config-collectors.js"), - import("./resolve.js"), - import("./runtime-web-tools.js"), - ], - ); + const [sharedRuntime, resolver] = await Promise.all([ + import("./runtime-shared.js"), + import("./resolve.js"), + ]); ({ applyResolvedAssignments, createResolverContext } = sharedRuntime); - ({ collectAuthStoreAssignments } = authCollectors); - ({ collectConfigAssignments } = configCollectors); ({ resolveSecretRefValues } = resolver); - ({ resolveRuntimeWebTools } = webTools); }); it("handles every openclaw.json registry target when configured as active", async () => { @@ -469,11 +512,9 @@ describe("secrets runtime target coverage", () => { env[runtimeEnvId] = expectedValue; applyConfigForOpenClawTarget(config, entry, envId, wildcardToken); } - const snapshot = await prepareCoverageSnapshot({ + const snapshot = await prepareConfigCoverageSnapshot({ config, env, - agentDirs: ["/tmp/openclaw-agent-main"], - loadAuthStore: () => ({ version: 1, profiles: {} }), loadablePluginOrigins: COVERAGE_LOADABLE_PLUGIN_ORIGINS, includeRuntimeWebTools: batchNeedsRuntimeWebTools(batch), }); @@ -503,7 +544,7 @@ describe("secrets runtime target coverage", () => { env[envId] = `resolved-${entry.id}`; applyAuthStoreTarget(authStore, entry, envId, resolveCoverageWildcardToken(index)); } - const snapshot = await prepareCoverageSnapshot({ + const snapshot = await prepareAuthCoverageSnapshot({ config: {} as OpenClawConfig, env, agentDirs: ["/tmp/openclaw-agent-main"],