From 0156f82e7334f9ef31ff60b579baa4ba10bcd226 Mon Sep 17 00:00:00 2001 From: Satya Rohith Date: Tue, 30 Apr 2024 16:59:39 +0530 Subject: fix(ext/node): support multiple message listeners on MessagePort (#23600) Closes https://github.com/denoland/deno/issues/23561 --- tests/unit_node/worker_threads_test.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'tests/unit_node/worker_threads_test.ts') diff --git a/tests/unit_node/worker_threads_test.ts b/tests/unit_node/worker_threads_test.ts index bc2becd66..f46d982fe 100644 --- a/tests/unit_node/worker_threads_test.ts +++ b/tests/unit_node/worker_threads_test.ts @@ -515,3 +515,24 @@ Deno.test({ await worker.terminate(); }, }); + +Deno.test({ + name: + "[node/worker_threads] MessagePort.on all message listeners are invoked", + async fn() { + const output: string[] = []; + const deferred = Promise.withResolvers(); + const { port1, port2 } = new workerThreads.MessageChannel(); + port1.on("message", (msg) => output.push(msg)); + port1.on("message", (msg) => output.push(msg + 2)); + port1.on("message", (msg) => { + output.push(msg + 3); + deferred.resolve(); + }); + port2.postMessage("hi!"); + await deferred.promise; + assertEquals(output, ["hi!", "hi!2", "hi!3"]); + port2.close(); + port1.close(); + }, +}); -- cgit v1.2.3