summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/worker_tests.rs13
-rw-r--r--tests/testdata/workers/node_worker_message_port_unref.mjs40
-rw-r--r--tests/testdata/workers/node_worker_message_port_unref.mjs.out2
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!