From 397fd1f643f9d708ed30f0bf9e5d32e6249435cd Mon Sep 17 00:00:00 2001 From: faizan-oai <269039902+faizan-oai@users.noreply.github.com> Date: Thu, 27 Aug 2026 19:58:58 -0700 Subject: [PATCH] test(windows): retry busy comparison fixture cleanup --- .../tests-ts/scan-comparison.test.ts | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/sdk/typescript/tests-ts/scan-comparison.test.ts b/sdk/typescript/tests-ts/scan-comparison.test.ts index 0ffb8e116..7c95920e4 100644 --- a/sdk/typescript/tests-ts/scan-comparison.test.ts +++ b/sdk/typescript/tests-ts/scan-comparison.test.ts @@ -9,6 +9,7 @@ import { } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; +import { setTimeout as delay } from "node:timers/promises"; import { Codex, type CodexOptions, @@ -29,11 +30,27 @@ import { const temporaryDirectories: string[] = []; +async function removeTemporaryDirectory(path: string): Promise { + // Bun 1.3.14 does not implement fs.rm's recursive retry options. + for (let attempt = 0; ; attempt += 1) { + try { + await rm(path, { recursive: true, force: true }); + return; + } catch (error) { + if ( + process.platform !== "win32" || + (error as NodeJS.ErrnoException).code !== "EBUSY" || + attempt >= 10 + ) + throw error; + await delay(100 * (attempt + 1)); + } + } +} + afterEach(async () => { await Promise.all( - temporaryDirectories - .splice(0) - .map((path) => rm(path, { recursive: true, force: true })), + temporaryDirectories.splice(0).map(removeTemporaryDirectory), ); });