summaryrefslogtreecommitdiff
path: root/tests/unit_node/worker_threads_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit_node/worker_threads_test.ts')
-rw-r--r--tests/unit_node/worker_threads_test.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/unit_node/worker_threads_test.ts b/tests/unit_node/worker_threads_test.ts
index e16bc8966..9991e5787 100644
--- a/tests/unit_node/worker_threads_test.ts
+++ b/tests/unit_node/worker_threads_test.ts
@@ -562,3 +562,31 @@ Deno.test({
port1.close();
},
});
+
+// Test for https://github.com/denoland/deno/issues/23854
+Deno.test({
+ name: "[node/worker_threads] MessagePort.addListener is present",
+ async fn() {
+ const channel = new workerThreads.MessageChannel();
+ const worker = new workerThreads.Worker(
+ `
+ import { parentPort } from "node:worker_threads";
+ parentPort.addListener("message", message => {
+ if (message.foo) {
+ const success = typeof message.foo.bar.addListener === "function";
+ parentPort.postMessage(success ? "it works" : "it doesn't work")
+ }
+ })
+ `,
+ {
+ eval: true,
+ },
+ );
+ worker.postMessage({ foo: { bar: channel.port1 } }, [channel.port1]);
+
+ assertEquals((await once(worker, "message"))[0], "it works");
+ worker.terminate();
+ channel.port1.close();
+ channel.port2.close();
+ },
+});