diff --git a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts index cc4896c9afb04bc27fb36bac6f5520a29822d5f3..7460977ecb1b6fa47f5ab34e29e7387a803a5445 100644 --- a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts @@ -3150,7 +3150,8 @@ describe("ClaudeAdapterV2 background wake turns", () => { it.effect("names an expired Claude login instead of the terminal API error", () => Effect.gen(function* () { const configDir = "/synthetic/Claude config"; - const cwd = "/synthetic/project"; + // The adapter resolves the cwd on the host, which adds a drive letter on Windows. + const cwd = NodePath.resolve("/synthetic/project"); const harness = yield* makeWakeHarnessWithOptions({ environment: { CLAUDE_CONFIG_DIR: configDir }, }); @@ -3187,7 +3188,8 @@ describe("ClaudeAdapterV2 background wake turns", () => { if (terminal.status !== "failed") return; assert.include(terminal.failure.message, "run `claude auth login`"); assert.include(terminal.failure.message, configDir); - assert.include(terminal.failure.message, cwd); + // The message quotes its paths, which escapes Windows separators. + assert.include(terminal.failure.message, JSON.stringify(cwd)); assert.notInclude(terminal.failure.message, "repeated API errors"); }).pipe( Effect.provide(