summaryrefslogtreecommitdiff
path: root/tests/unit_node/worker_threads_test.ts
diff options
context:
space:
mode:
authorSatya Rohith <me@satyarohith.com>2024-04-30 16:59:39 +0530
committerGitHub <noreply@github.com>2024-04-30 16:59:39 +0530
commit0156f82e7334f9ef31ff60b579baa4ba10bcd226 (patch)
treed692f9b82b7244b4f6c5672479a84d552ea7fe7c /tests/unit_node/worker_threads_test.ts
parentce4a7773ccb606c51c824881e37043bc937c94f2 (diff)
fix(ext/node): support multiple message listeners on MessagePort (#23600)
Closes https://github.com/denoland/deno/issues/23561
Diffstat (limited to 'tests/unit_node/worker_threads_test.ts')
-rw-r--r--tests/unit_node/worker_threads_test.ts21
1 files changed, 21 insertions, 0 deletions
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<void>();
+ 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();
+ },
+});