import { QuickJSWorker } from "../dist"; describe("CPU limit compatibility", () => { it("enforces worker maxCpuMs and allows per-eval override", async () => { const worker = new QuickJSWorker({ maxCpuMs: 25 }); try { const burn = ` (() => { const end = Date.now() + 80; while (Date.now() < end) {} return 7; })() `; await expect(worker.eval(burn)).rejects.toBeDefined(); await expect(worker.eval(burn, { maxCpuMs: 250 })).resolves.toBe(7); await expect(worker.eval("40 + 2")).resolves.toBe(42); } finally { if (!worker.isClosed()) await worker.close(); } }, 20_000); it("supports maxCpuMs overrides for handle calls", async () => { const worker = new QuickJSWorker({ maxCpuMs: 25 }); try { const handle = await worker.handle.eval(`({ burn(ms) { const end = Date.now() + ms; while (Date.now() < end) {} return ms; } })`); await expect(handle.call("burn", [80])).rejects.toBeDefined(); await expect(handle.call("burn", [80], { maxCpuMs: 250 })).resolves.toBe(80); await handle.dispose(); } finally { if (!worker.isClosed()) await worker.close(); } }, 20_000); });