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/worker_event_handler_test.js5
-rw-r--r--cli/tests/worker_event_handler_test.js.out11
-rw-r--r--cli/tests/workers/worker_event_handlers.js23
4 files changed, 44 insertions, 0 deletions
diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs
index d2997d747..2e2b0400c 100644
--- a/cli/tests/integration/run_tests.rs
+++ b/cli/tests/integration/run_tests.rs
@@ -1155,6 +1155,11 @@ itest!(error_import_map_unable_to_load {
exit_code: 1,
});
+itest!(worker_event_handler_test {
+ args: "run --quiet --reload --allow-read worker_event_handler_test.js",
+ output: "worker_event_handler_test.js.out",
+});
+
#[test]
fn no_validate_asm() {
let output = util::deno_cmd()
diff --git a/cli/tests/worker_event_handler_test.js b/cli/tests/worker_event_handler_test.js
new file mode 100644
index 000000000..e0ce3d9f8
--- /dev/null
+++ b/cli/tests/worker_event_handler_test.js
@@ -0,0 +1,5 @@
+const w = new Worker(
+ new URL("./workers/worker_event_handlers.js", import.meta.url).href,
+ { type: "module" },
+);
+w.postMessage({});
diff --git a/cli/tests/worker_event_handler_test.js.out b/cli/tests/worker_event_handler_test.js.out
new file mode 100644
index 000000000..5556633b1
--- /dev/null
+++ b/cli/tests/worker_event_handler_test.js.out
@@ -0,0 +1,11 @@
+Target from self.onmessage: [object DedicatedWorkerGlobalScope]
+Target from message event listener: [object DedicatedWorkerGlobalScope]
+Arguments from self.onerror: [
+ "Some error message",
+ "",
+ 0,
+ 0,
+ Error: Some error message
+ at [WILDCARD]
+]
+Is event canceled?: true
diff --git a/cli/tests/workers/worker_event_handlers.js b/cli/tests/workers/worker_event_handlers.js
new file mode 100644
index 000000000..c8976f79e
--- /dev/null
+++ b/cli/tests/workers/worker_event_handlers.js
@@ -0,0 +1,23 @@
+self.onmessage = (evt) => {
+ console.log("Target from self.onmessage:", String(evt.target));
+};
+
+self.addEventListener("message", (evt) => {
+ console.log("Target from message event listener:", String(evt.target));
+
+ // Throw an error here so the global's error event will fire.
+ throw new Error("Some error message");
+});
+
+self.onerror = (...args) => {
+ console.log("Arguments from self.onerror:", args);
+ return true;
+};
+
+self.addEventListener("error", (evt) => {
+ // Returning true from self.onerror means that subsequent event listeners
+ // should see the event as canceled.
+ console.log("Is event canceled?:", evt.defaultPrevented);
+
+ self.close();
+});