aboutsummaryrefslogtreecommitdiff
path: root/test/js/web/worker.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test/js/web/worker.test.ts')
-rw-r--r--test/js/web/worker.test.ts49
1 files changed, 48 insertions, 1 deletions
diff --git a/test/js/web/worker.test.ts b/test/js/web/worker.test.ts
index 1babfbcc3..34d5f6f06 100644
--- a/test/js/web/worker.test.ts
+++ b/test/js/web/worker.test.ts
@@ -1,6 +1,7 @@
import { expect, test } from "bun:test";
import { bunEnv, bunExe } from "harness";
import path from "path";
+import * as wt from "worker_threads";
test("worker", done => {
const worker = new Worker(new URL("worker-fixture.js", import.meta.url).href, {
@@ -115,7 +116,7 @@ test("worker by default will not close the event loop", done => {
done(new Error("exited with non-zero code"));
} else {
const text = await new Response(x.stdout).text();
- if (text.includes("done")) {
+ if (!text.includes("done")) {
console.log({ text });
done(new Error("event loop killed early"));
} else {
@@ -124,3 +125,49 @@ test("worker by default will not close the event loop", done => {
}
});
});
+
+test("worker with process.exit", done => {
+ const worker = new Worker(new URL("worker-fixture-process-exit.js", import.meta.url).href, {
+ smol: true,
+ });
+ worker.addEventListener("close", e => {
+ try {
+ expect(e.code).toBe(2);
+ } catch (e) {
+ done(e);
+ }
+ done();
+ });
+});
+
+test("worker_threads with process.exit", done => {
+ const worker = new wt.Worker(new URL("worker-fixture-process-exit.js", import.meta.url).href, {
+ smol: true,
+ });
+ worker.on("exit", event => {
+ try {
+ console.log({ event });
+ expect(event).toBe(2);
+ } catch (e) {
+ done(e);
+ }
+ done();
+ });
+});
+
+test.skip("worker_threads with process.exit and terminate", async () => {
+ const worker = new wt.Worker(new URL("worker-fixture-process-exit.js", import.meta.url).href, {
+ smol: true,
+ });
+ const code = await worker.terminate();
+ expect(code).toBe(2);
+});
+
+test.skip("worker_threads with process.exit (delay) and terminate", async () => {
+ const worker2 = new wt.Worker(new URL("worker-fixture-process-exit.js", import.meta.url).href, {
+ smol: true,
+ });
+ await Bun.sleep(100);
+ const code2 = await worker2.terminate();
+ expect(code2).toBe(2);
+});