summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/tests/integration/run_tests.rs5
-rw-r--r--cli/tests/testdata/worker_message_before_close.js16
-rw-r--r--cli/tests/testdata/worker_message_before_close.js.out8
-rw-r--r--cli/tests/testdata/workers/message_before_close.js6
4 files changed, 35 insertions, 0 deletions
diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs
index 981b85199..2c0a16582 100644
--- a/cli/tests/integration/run_tests.rs
+++ b/cli/tests/integration/run_tests.rs
@@ -1177,6 +1177,11 @@ itest!(worker_close_race {
output: "worker_close_race.js.out",
});
+itest!(worker_message_before_close {
+ args: "run --quiet --reload --allow-read worker_message_before_close.js",
+ output: "worker_message_before_close.js.out",
+});
+
#[test]
fn no_validate_asm() {
let output = util::deno_cmd()
diff --git a/cli/tests/testdata/worker_message_before_close.js b/cli/tests/testdata/worker_message_before_close.js
new file mode 100644
index 000000000..6a9149af1
--- /dev/null
+++ b/cli/tests/testdata/worker_message_before_close.js
@@ -0,0 +1,16 @@
+for (let i = 0; i < 4; i++) {
+ const worker = new Worker(
+ new URL("./workers/message_before_close.js", import.meta.url).href,
+ { type: "module", name: String(i) },
+ );
+
+ worker.addEventListener("message", (message) => {
+ // Only print responses after all reception logs.
+ setTimeout(() => {
+ console.log("response from worker %d received", message.data);
+ }, 500);
+ });
+ worker.postMessage(i);
+}
+
+export {};
diff --git a/cli/tests/testdata/worker_message_before_close.js.out b/cli/tests/testdata/worker_message_before_close.js.out
new file mode 100644
index 000000000..f1cc558a2
--- /dev/null
+++ b/cli/tests/testdata/worker_message_before_close.js.out
@@ -0,0 +1,8 @@
+message received in worker 0
+message received in worker 1
+message received in worker 2
+message received in worker 3
+response from worker 0 received
+response from worker 1 received
+response from worker 2 received
+response from worker 3 received
diff --git a/cli/tests/testdata/workers/message_before_close.js b/cli/tests/testdata/workers/message_before_close.js
new file mode 100644
index 000000000..0213abcb3
--- /dev/null
+++ b/cli/tests/testdata/workers/message_before_close.js
@@ -0,0 +1,6 @@
+self.onmessage = (params) => {
+ const workerId = params.data;
+ console.log("message received in worker %d", workerId);
+ self.postMessage(workerId);
+ self.close();
+};