Files
reverse-engineering-anything/tests/support/process/pidFile.ts
T
lostviolinist 57fc2d4617 fix(test): wait for valid debugger fixture PIDs (#9208)
* fix(test): wait for valid debugger fixture PIDs

* test(process): cover delayed and invalid PID publication

* test(process): share validated PID file readiness
2026-11-07 11:12:43 +08:00

26 lines
809 B
TypeScript

import { readFile } from "node:fs/promises";
import { setTimeout as delay } from "node:timers/promises";
/** Wait for a fixture's PID bytes, not merely the creation of its file. */
export const waitForTestPidFile = async (
path: string,
timeoutMs: number,
): Promise<number> => {
const deadline = performance.now() + timeoutMs;
do {
let text = "";
try {
text = await readFile(path, "utf8");
} catch (cause) {
if (
!(cause instanceof Error && "code" in cause && cause.code === "ENOENT")
)
throw cause;
}
const pid = Number(text);
if (/^[1-9][0-9]*$/.test(text) && Number.isSafeInteger(pid)) return pid;
await delay(10);
} while (performance.now() < deadline);
throw new Error(`Test process did not publish a valid PID in ${path}`);
};