test: make child backpressure event ordering deterministic

This commit is contained in:
Chris Tate
2026-10-03 06:14:36 -05:00
parent d3f82b711a
commit 05ce5d3d27
+10 -2
View File
@@ -8,8 +8,11 @@ const output = child.stdout;
if (input === null || output === null) throw new Error("missing pipe");
let count = "";
let outputEnded = false;
let exited = false;
let exitCode: number | null = null;
output.on("data", (chunk) => { count += chunk.toString(); });
output.on("end", () => { console.log("count", count.trim()); });
output.on("end", () => { outputEnded = true; console.log("count", count.trim()); });
input.on("drain", () => {
console.log("drain", input.writable);
input.end();
@@ -18,4 +21,9 @@ input.on("finish", () => { console.log("finish", input.writable); });
input.on("error", (err) => { console.log("error", err.message); });
console.log("boundary", input.write(Buffer.alloc(64 * 1024 + 1, 66)));
console.log("write", input.write(Buffer.alloc(1024 * 1024, 65)));
child.on("exit", (code) => { console.log("exit", code); });
child.on("exit", (code) => { exited = true; exitCode = code; });
// Exit and stdout EOF can arrive in either order. Close follows both.
child.on("close", () => {
if (!exited || !outputEnded) throw new Error("close before exit or stdout end");
console.log("exit", exitCode);
});