summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/subdir/event_worker.js7
-rw-r--r--cli/tests/workers_test.out5
-rw-r--r--cli/tests/workers_test.ts47
3 files changed, 57 insertions, 2 deletions
diff --git a/cli/tests/subdir/event_worker.js b/cli/tests/subdir/event_worker.js
new file mode 100644
index 000000000..849b6026c
--- /dev/null
+++ b/cli/tests/subdir/event_worker.js
@@ -0,0 +1,7 @@
+onmessage = function (e) {
+ if (e.data === "boom") {
+ throw new Error("boom error!");
+ }
+
+ postMessage(e.data);
+};
diff --git a/cli/tests/workers_test.out b/cli/tests/workers_test.out
index ca7500917..541adc20f 100644
--- a/cli/tests/workers_test.out
+++ b/cli/tests/workers_test.out
@@ -1,9 +1,10 @@
-running 6 tests
+running 7 tests
test worker terminate ... ok [WILDCARD]
test worker nested ... ok [WILDCARD]
test worker throws when executing ... ok [WILDCARD]
test worker fetch API ... ok [WILDCARD]
test worker terminate busy loop ... ok [WILDCARD]
test worker race condition ... ok [WILDCARD]
+test worker is event listener ... ok [WILDCARD]
-test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [WILDCARD]
+test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [WILDCARD]
diff --git a/cli/tests/workers_test.ts b/cli/tests/workers_test.ts
index 2c56a491c..bb00d67fd 100644
--- a/cli/tests/workers_test.ts
+++ b/cli/tests/workers_test.ts
@@ -184,3 +184,50 @@ Deno.test({
await promise;
},
});
+
+Deno.test({
+ name: "worker is event listener",
+ fn: async function (): Promise<void> {
+ let messageHandlersCalled = 0;
+ let errorHandlersCalled = 0;
+
+ const promise1 = createResolvable();
+ const promise2 = createResolvable();
+
+ const worker = new Worker("../tests/subdir/event_worker.js", {
+ type: "module",
+ });
+
+ worker.onmessage = (_e: Event): void => {
+ messageHandlersCalled++;
+ };
+ worker.addEventListener("message", (_e: Event) => {
+ messageHandlersCalled++;
+ });
+ worker.addEventListener("message", (_e: Event) => {
+ messageHandlersCalled++;
+ promise1.resolve();
+ });
+
+ worker.onerror = (e): void => {
+ errorHandlersCalled++;
+ e.preventDefault();
+ };
+ worker.addEventListener("error", (_e: Event) => {
+ errorHandlersCalled++;
+ });
+ worker.addEventListener("error", (_e: Event) => {
+ errorHandlersCalled++;
+ promise2.resolve();
+ });
+
+ worker.postMessage("ping");
+ await promise1;
+ assertEquals(messageHandlersCalled, 3);
+
+ worker.postMessage("boom");
+ await promise2;
+ assertEquals(errorHandlersCalled, 3);
+ worker.terminate();
+ },
+});