fix: migrate coding-agent tests from fs.rm to removeWithRetries

Migrate 203 test files (356 call sites) from fs.rm/fs.rmSync to
removeWithRetries/removeSyncWithRetries to reduce EBUSY test failures
on Windows. removeWithRetries is now exported from @oh-my-pi/pi-utils.

The migration uses a regex-based approach that:
- Replaces fs.rm(path, { recursive, force }) → removeWithRetries(path)
- Replaces fs.rmSync(path, { recursive, force }) → removeSyncWithRetries(path)
- Replaces fs.rm(path) → removeWithRetries(path) (no options)
- Skips fs.rm/fs.rmSync inside template literals (bun --eval scripts)
- Adds imports to existing @oh-my-pi/pi-utils import or creates new one
- Removes unused fs imports where fs.rm was the only fs usage (4 files)
This commit is contained in:
oldschoola
2026-06-23 15:21:27 -07:00
parent 93d730c01d
commit a2854ba768
204 changed files with 572 additions and 439 deletions
@@ -17,13 +17,14 @@ import { HistoryProtocolHandler } from "@oh-my-pi/pi-coding-agent/internal-urls/
import { AgentRegistry } from "@oh-my-pi/pi-coding-agent/registry/agent-registry";
import type { AgentSession } from "@oh-my-pi/pi-coding-agent/session/agent-session";
import { CURRENT_SESSION_VERSION } from "@oh-my-pi/pi-coding-agent/session/session-entries";
import { removeWithRetries } from "@oh-my-pi/pi-utils";
async function withTempDir<T>(fn: (dir: string) => Promise<T>): Promise<T> {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "history-protocol-"));
try {
return await fn(dir);
} finally {
await fs.rm(dir, { recursive: true, force: true });
await removeWithRetries(dir);
}
}
@@ -13,6 +13,7 @@ import { Settings } from "@oh-my-pi/pi-coding-agent/config/settings";
import { InternalUrlRouter } from "@oh-my-pi/pi-coding-agent/internal-urls";
import { resetForTests as resetCacheForTests } from "@oh-my-pi/pi-coding-agent/tools/github-cache";
import * as git from "@oh-my-pi/pi-coding-agent/utils/git";
import { removeWithRetries } from "@oh-my-pi/pi-utils";
let tempDir: string;
let originalEnv: string | undefined;
@@ -42,7 +43,7 @@ afterEach(async () => {
process.env.GH_TOKEN = originalGhToken;
}
vi.restoreAllMocks();
await fs.rm(tempDir, { recursive: true, force: true });
await removeWithRetries(tempDir);
});
function issuePayload(number: number, body: string, commentBodies: string[] = []) {
@@ -8,13 +8,14 @@ import {
resolveLocalRoot,
resolveLocalUrlToPath,
} from "@oh-my-pi/pi-coding-agent/internal-urls";
import { removeWithRetries } from "@oh-my-pi/pi-utils";
async function withTempDir<T>(fn: (dir: string) => Promise<T>): Promise<T> {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "local-protocol-"));
try {
return await fn(dir);
} finally {
await fs.rm(dir, { recursive: true, force: true });
await removeWithRetries(dir);
}
}
@@ -6,7 +6,7 @@ import { InternalUrlRouter } from "@oh-my-pi/pi-coding-agent/internal-urls";
import { getMemoryRoot } from "@oh-my-pi/pi-coding-agent/memories";
import { AgentRegistry } from "@oh-my-pi/pi-coding-agent/registry/agent-registry";
import type { AgentSession } from "@oh-my-pi/pi-coding-agent/session/agent-session";
import { getAgentDir, setAgentDir } from "@oh-my-pi/pi-utils";
import { getAgentDir, removeWithRetries, setAgentDir } from "@oh-my-pi/pi-utils";
interface MemoryFixture {
cwd: string;
@@ -42,7 +42,7 @@ async function withMemoryFixture(fn: (fixture: MemoryFixture) => Promise<void>):
await fn({ cwd, memoryRoot, agentDir, cleanupRoot });
} finally {
setAgentDir(previousAgentDir);
await fs.rm(cleanupRoot, { recursive: true, force: true });
await removeWithRetries(cleanupRoot);
}
}
@@ -10,13 +10,14 @@ import {
VaultProtocolHandler,
} from "@oh-my-pi/pi-coding-agent/internal-urls";
import * as vaultProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/vault-protocol";
import { removeWithRetries } from "@oh-my-pi/pi-utils";
async function withTempDir<T>(fn: (dir: string) => Promise<T>): Promise<T> {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "vault-protocol-"));
try {
return await fn(dir);
} finally {
await fs.rm(dir, { recursive: true, force: true });
await removeWithRetries(dir);
}
}