test(server): tolerate delayed Windows handle release

This commit is contained in:
Mohamed Boudra
2026-07-19 03:39:32 +02:00
parent 4e99e4c18c
commit 6240b2d17c

View File

@@ -18,11 +18,26 @@ afterEach(async () => {
await Promise.all([...cleanupDaemons].map((daemon) => daemon.close()));
cleanupDaemons.clear();
for (const target of cleanupPaths) {
rmSync(target, { recursive: true, force: true, maxRetries: 5, retryDelay: 100 });
try {
rmSync(target, { recursive: true, force: true, maxRetries: 5, retryDelay: 100 });
} catch (error) {
// Windows can retain a temporary repository handle past daemon shutdown.
// The runner discards its temp root; every other cleanup failure remains fatal.
if (!isWindowsBusyError(error)) throw error;
}
}
cleanupPaths.clear();
});
function isWindowsBusyError(error: unknown): boolean {
return (
process.platform === "win32" &&
error instanceof Error &&
"code" in error &&
error.code === "EBUSY"
);
}
test("two complete migrations reuse the same real daemon checkout", async () => {
const repoRoot = createRepository();
const daemon = await createTestPaseoDaemon();