diff --git a/test/setup-openclaw-runtime.ts b/test/setup-openclaw-runtime.ts index 66c59911d406..93b0e2188bd2 100644 --- a/test/setup-openclaw-runtime.ts +++ b/test/setup-openclaw-runtime.ts @@ -69,36 +69,38 @@ function loadWorkerCleanupHelpers(): Promise { const globalState = globalThis as typeof globalThis & { [WORKER_CLEANUP_HELPERS]?: Promise; }; - globalState[WORKER_CLEANUP_HELPERS] ??= Promise.all([ - vi.importActual( - "../src/agents/context-runtime-state.js", - ), - vi.importActual( - "../src/agents/models-config-state.test-support.js", - ), - vi.importActual( - "../src/agents/session-write-lock.js", - ), - vi.importActual( - "../src/agents/session-write-lock.test-support.js", - ), - vi.importActual( - "../src/config/sessions/store-cache.js", - ), - vi.importActual( - "../src/config/sessions/store-writer-state.js", - ), - vi.importActual("../src/infra/file-lock.js"), - ]).then( - ([ + globalState[WORKER_CLEANUP_HELPERS] ??= (async () => { + // The test-support facade reads the API installed by the real lock module at import time. + // Load that producer first so concurrent module evaluation cannot observe a missing API. + const sessionWriteLock = await vi.importActual< + typeof import("../src/agents/session-write-lock.js") + >("../src/agents/session-write-lock.js"); + const [ contextRuntimeState, modelsConfigState, - sessionWriteLock, sessionWriteLockTestSupport, sessionStoreCache, sessionStoreWriterState, fileLock, - ]) => ({ + ] = await Promise.all([ + vi.importActual( + "../src/agents/context-runtime-state.js", + ), + vi.importActual( + "../src/agents/models-config-state.test-support.js", + ), + vi.importActual( + "../src/agents/session-write-lock.test-support.js", + ), + vi.importActual( + "../src/config/sessions/store-cache.js", + ), + vi.importActual( + "../src/config/sessions/store-writer-state.js", + ), + vi.importActual("../src/infra/file-lock.js"), + ]); + return { clearSessionStoreCaches: sessionStoreCache.clearSessionStoreCaches, drainFileLockStateForTest: fileLock.drainFileLockStateForTest, drainSessionStoreWriterQueuesForTest: @@ -109,8 +111,8 @@ function loadWorkerCleanupHelpers(): Promise { resetModelsJsonReadyCacheForTest: modelsConfigState.resetModelsJsonReadyCacheForTest, resetSessionWriteLockStateForTest: sessionWriteLockTestSupport.resetSessionWriteLockStateForTest, - }), - ); + }; + })(); return globalState[WORKER_CLEANUP_HELPERS]; }