From f5d20047b3ad43d068a8eb61bd4e1f193bedbce6 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Sun, 4 Oct 2026 21:40:23 +0200 Subject: [PATCH] fix(durable): retry temp dir removal in env conformance tests on Windows --- packages/durable/test/env-node-conformance.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/durable/test/env-node-conformance.test.ts b/packages/durable/test/env-node-conformance.test.ts index 8736e54be..7c03a1339 100644 --- a/packages/durable/test/env-node-conformance.test.ts +++ b/packages/durable/test/env-node-conformance.test.ts @@ -20,7 +20,9 @@ registerEnvConformance( try { await use(new NodeExecutionEnv({ cwd })); } finally { - rmSync(cwd, { recursive: true, force: true }); + // On Windows, `taskkill /T` runs asynchronously, so a killed command's descendants can still hold the + // directory briefly after `exec` settles; retry on EBUSY. + rmSync(cwd, { recursive: true, force: true, maxRetries: 20, retryDelay: 100 }); } }, // Git Bash's `ln -s` copies instead of linking unless native symlinks are enabled. @@ -35,7 +37,7 @@ describe("NodeExecutionEnv readers", () => { return dir; }; afterEach(() => { - for (const dir of dirs.splice(0)) rmSync(dir, { recursive: true, force: true }); + for (const dir of dirs.splice(0)) rmSync(dir, { recursive: true, force: true, maxRetries: 20, retryDelay: 100 }); }); it("reads ranges spanning several internal chunks exactly", async () => {