diff options
Diffstat (limited to 'tests/unit_node/worker_threads_test.ts')
-rw-r--r-- | tests/unit_node/worker_threads_test.ts | 28 |
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(); + }, +}); |