diff --git a/test/js/node/worker_threads/worker-with-process-exit-delay-and-terminate.mjs b/test/js/node/worker_threads/worker-with-process-exit-delay-and-terminate.mjs new file mode 100644 index 0000000000..3a705e0de7 --- /dev/null +++ b/test/js/node/worker_threads/worker-with-process-exit-delay-and-terminate.mjs @@ -0,0 +1,19 @@ +import assert from "node:assert"; +import { setTimeout as sleep } from "node:timers/promises"; +import { fileURLToPath } from "node:url"; +import { Worker, isMainThread } from "node:worker_threads"; + +// This test exists so we can test the behaviour from +// https://github.com/oven-sh/bun/blob/f6dc66925e40dfb088c78b9592f832cbddb86519/test/js/web/workers/worker.test.ts#L341-L351 + +if (isMainThread) { + const worker = new Worker(fileURLToPath(import.meta.url), { smol: true }); + let exitCode; + worker.once("exit", code => (exitCode = code)); + await sleep(200); + assert.strictEqual(await worker.terminate(), undefined); + assert.strictEqual(exitCode, 2); +} else { + await sleep(100); + process.exit(2); +} diff --git a/test/js/web/workers/worker.test.ts b/test/js/web/workers/worker.test.ts index b58ecdbebb..729d9164e1 100644 --- a/test/js/web/workers/worker.test.ts +++ b/test/js/web/workers/worker.test.ts @@ -345,8 +345,7 @@ describe("worker_threads", () => { let exitCode: number | undefined = undefined; worker.once("exit", code => (exitCode = code)); await Bun.sleep(200); - const code = await worker.terminate(); - expect(code).toBe(undefined); + expect(await worker.terminate()).toBe(undefined); expect(exitCode).toBe(2); });