From 80eb5dbe83947b28cb7784769fc22de497c58e66 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Tue, 14 Apr 2026 19:20:59 +0700 Subject: [PATCH] fix: make workspace-git-service tests platform-aware for Linux CI The requestWorkingTreeWatch tests assumed macOS/Windows behavior where recursive fs.watch is attempted. On Linux, the service uses per-directory watchers instead, so recursive is never tried. --- .../src/server/workspace-git-service.test.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/server/src/server/workspace-git-service.test.ts b/packages/server/src/server/workspace-git-service.test.ts index 8d9ecc886..a792c1b6c 100644 --- a/packages/server/src/server/workspace-git-service.test.ts +++ b/packages/server/src/server/workspace-git-service.test.ts @@ -592,6 +592,13 @@ describe("WorkspaceGitServiceImpl", () => { }); test("sets a 5-second fallback polling interval when recursive watch is unavailable", async () => { + if (process.platform === "linux") { + // On Linux, recursive watch is never attempted — the service uses per-directory + // watchers from the start. This scenario only applies to macOS/Windows where + // recursive watch is tried first and may fail. + return; + } + const recursiveUnsupported = new Error("recursive unsupported"); const watch = vi .fn() @@ -629,7 +636,12 @@ describe("WorkspaceGitServiceImpl", () => { const target = (service as any).workingTreeWatchTargets.get("/tmp/plain"); expect(subscription.repoRoot).toBeNull(); - expect(watch).toHaveBeenCalledWith("/tmp/plain", { recursive: true }, expect.any(Function)); + const expectedRecursive = process.platform !== "linux"; + expect(watch).toHaveBeenCalledWith( + "/tmp/plain", + { recursive: expectedRecursive }, + expect.any(Function), + ); expect(target?.repoWatchPath).toBe("/tmp/plain"); expect(target?.fallbackRefreshInterval).not.toBeNull();