diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/integration/worker_tests.rs | 13 | ||||
-rw-r--r-- | tests/testdata/workers/node_worker_message_port_unref.mjs | 40 | ||||
-rw-r--r-- | tests/testdata/workers/node_worker_message_port_unref.mjs.out | 2 |
3 files changed, 55 insertions, 0 deletions
diff --git a/tests/integration/worker_tests.rs b/tests/integration/worker_tests.rs index 65c34aa15..aa1c9656e 100644 --- a/tests/integration/worker_tests.rs +++ b/tests/integration/worker_tests.rs @@ -137,3 +137,16 @@ itest!(node_worker_transfer_port { output: "workers/node_worker_transfer_port.mjs.out", exit_code: 0, }); + +itest!(node_worker_message_port_unref { + args: "run --quiet --allow-env --allow-read workers/node_worker_message_port_unref.mjs", + output: "workers/node_worker_message_port_unref.mjs.out", + exit_code: 0, +}); + +itest!(node_worker_parent_port_unref { + envs: vec![("PARENT_PORT".into(), "1".into())], + args: "run --quiet --allow-env --allow-read workers/node_worker_message_port_unref.mjs", + output: "workers/node_worker_message_port_unref.mjs.out", + exit_code: 0, +}); diff --git a/tests/testdata/workers/node_worker_message_port_unref.mjs b/tests/testdata/workers/node_worker_message_port_unref.mjs new file mode 100644 index 000000000..a12be1ec8 --- /dev/null +++ b/tests/testdata/workers/node_worker_message_port_unref.mjs @@ -0,0 +1,40 @@ +import { + isMainThread, + MessageChannel, + parentPort, + Worker, + workerData, +} from "node:worker_threads"; + +const useParentPort = Deno.env.get("PARENT_PORT") === "1"; + +if (useParentPort) { + if (isMainThread) { + const worker = new Worker(import.meta.filename); + worker.postMessage("main says hi!"); + worker.on("message", (msg) => console.log(msg)); + } else { + parentPort.on("message", (msg) => { + console.log(msg); + parentPort.postMessage("worker says hi!"); + parentPort.unref(); + }); + } +} else { + if (isMainThread) { + const { port1, port2 } = new MessageChannel(); + const worker = new Worker(import.meta.filename, { + workerData: port2, + transferList: [port2], + }); + port1.postMessage("main says hi!"); + port1.on("message", (msg) => console.log(msg)); + } else { + const port = workerData; + port.on("message", (msg) => { + console.log(msg); + port.postMessage("worker says hi!"); + port.unref(); + }); + } +} diff --git a/tests/testdata/workers/node_worker_message_port_unref.mjs.out b/tests/testdata/workers/node_worker_message_port_unref.mjs.out new file mode 100644 index 000000000..c9d5325bc --- /dev/null +++ b/tests/testdata/workers/node_worker_message_port_unref.mjs.out @@ -0,0 +1,2 @@ +main says hi! +worker says hi! |