diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/subdir/event_worker_scope.js | 43 | ||||
-rw-r--r-- | cli/tests/workers_test.out | 5 | ||||
-rw-r--r-- | cli/tests/workers_test.ts | 27 |
3 files changed, 73 insertions, 2 deletions
diff --git a/cli/tests/subdir/event_worker_scope.js b/cli/tests/subdir/event_worker_scope.js new file mode 100644 index 000000000..0381801a8 --- /dev/null +++ b/cli/tests/subdir/event_worker_scope.js @@ -0,0 +1,43 @@ +let messageHandlersCalled = 0; +let errorHandlersCalled = 0; + +onmessage = function (e) { + if (e.data === "boom") { + throw new Error("boom error!"); + } + messageHandlersCalled++; +}; + +self.addEventListener("message", (_e) => { + messageHandlersCalled++; +}); + +self.addEventListener("message", (_e) => { + messageHandlersCalled++; +}); + +self.addEventListener("message", (_e) => { + messageHandlersCalled++; + + postMessage({ + messageHandlersCalled, + errorHandlersCalled, + }); +}); + +onerror = function (_e) { + errorHandlersCalled++; +}; + +self.addEventListener("error", (_e) => { + errorHandlersCalled++; +}); + +self.addEventListener("error", (_e) => { + errorHandlersCalled++; +}); + +self.addEventListener("error", (e) => { + errorHandlersCalled++; + e.preventDefault(); +}); diff --git a/cli/tests/workers_test.out b/cli/tests/workers_test.out index 541adc20f..d3c25d3dd 100644 --- a/cli/tests/workers_test.out +++ b/cli/tests/workers_test.out @@ -1,4 +1,4 @@ -running 7 tests +running 8 tests test worker terminate ... ok [WILDCARD] test worker nested ... ok [WILDCARD] test worker throws when executing ... ok [WILDCARD] @@ -6,5 +6,6 @@ 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 worker scope is event listener ... ok [WILDCARD] -test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [WILDCARD] +test result: ok. 8 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 bb00d67fd..d18186658 100644 --- a/cli/tests/workers_test.ts +++ b/cli/tests/workers_test.ts @@ -231,3 +231,30 @@ Deno.test({ worker.terminate(); }, }); + +Deno.test({ + name: "worker scope is event listener", + fn: async function (): Promise<void> { + const promise1 = createResolvable(); + + const worker = new Worker("../tests/subdir/event_worker_scope.js", { + type: "module", + }); + + worker.onmessage = (e: MessageEvent): void => { + const { messageHandlersCalled, errorHandlersCalled } = e.data; + assertEquals(messageHandlersCalled, 4); + assertEquals(errorHandlersCalled, 4); + promise1.resolve(); + }; + + worker.onerror = (_e): void => { + throw new Error("unreachable"); + }; + + worker.postMessage("boom"); + worker.postMessage("ping"); + await promise1; + worker.terminate(); + }, +}); |