Files
dev/third_party/pi/packages/codemode/test/fixtures/worker-process-exit.ts
alexion 6081e3e325 chore(vendor): import pi 1.3.0
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree.

git-subtree-dir: third_party/pi

git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
2026-10-15 17:58:48 -04:00

52 lines
1.4 KiB
TypeScript

import { CodemodeSandbox } from "../../src/runtime/host.ts";
const how = process.argv[2];
if (how !== "abort" && how !== "timeout" && how !== "close") throw new Error(`Unknown stop mode: ${how}`);
const started = performance.now();
process.on("exit", () => {
console.log(JSON.stringify({ type: "exit", elapsedMs: performance.now() - started }));
});
const controller = new AbortController();
let timer: ReturnType<typeof setTimeout> | undefined;
let workerExited = false;
const sandbox = new CodemodeSandbox({
memoryLimitBytes: 256 * 1024 * 1024,
onWorkerStarted: (exited) => {
void exited.then(() => {
workerExited = true;
});
},
tools: [
{
name: "ready",
execute: () => {
if (how !== "timeout") {
timer = setTimeout(() => {
if (how === "abort") controller.abort();
else void sandbox.close();
}, 100);
}
},
},
],
});
try {
const result = await sandbox.execute(
"await tools.ready(); return 'a'.repeat(300000).indexOf('a'.repeat(10000) + 'b')",
{ signal: controller.signal, timeoutMs: how === "timeout" ? 300 : Number.POSITIVE_INFINITY },
);
if (result.ok) throw new Error("The script completed instead of being cancelled");
await sandbox.close();
console.log(
JSON.stringify({
type: "result",
kind: result.error.kind,
elapsedMs: performance.now() - started,
workerExited,
}),
);
} finally {
clearTimeout(timer);
await sandbox.close();
}