diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/subdir/event_worker.js | 7 | ||||
-rw-r--r-- | cli/tests/workers_test.out | 5 | ||||
-rw-r--r-- | cli/tests/workers_test.ts | 47 |
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(); + }, +}); |