diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/integration/worker_tests.rs | 7 | ||||
-rw-r--r-- | cli/tests/testdata/workers/worker_doest_stall_event_loop.ts | 29 | ||||
-rw-r--r-- | cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out | 6 |
3 files changed, 42 insertions, 0 deletions
diff --git a/cli/tests/integration/worker_tests.rs b/cli/tests/integration/worker_tests.rs index 916e8c887..aa6d64d2b 100644 --- a/cli/tests/integration/worker_tests.rs +++ b/cli/tests/integration/worker_tests.rs @@ -108,3 +108,10 @@ itest!(worker_error_event { output: "workers/error_event.ts.out", exit_code: 1, }); + +// Regression test for https://github.com/denoland/deno/issues/19903 +itest!(worker_doest_stall_event_loop { + args: "run --quiet -A workers/worker_doest_stall_event_loop.ts", + output: "workers/worker_doest_stall_event_loop.ts.out", + exit_code: 0, +}); diff --git a/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts b/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts new file mode 100644 index 000000000..bfddee2ec --- /dev/null +++ b/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts @@ -0,0 +1,29 @@ +const moduleCode = ` +console.log('module start'); +const hash = await crypto.subtle.digest('SHA-1', new TextEncoder().encode('data')); +const __default = {}; +export { __default as default }; +console.log('module finish'); +`; + +const workerCode = ` + console.log('worker!'); + + globalThis.onmessage = (msg) => { + const { moduleCode } = msg.data; + (async () => { + console.log('before import'); + await import(URL.createObjectURL(new Blob([ moduleCode ]))); + console.log('after import'); + self.postMessage('thanks'); + })(); + } +`; +const worker = new Worker(URL.createObjectURL(new Blob([workerCode])), { + type: "module", +}); +worker.onmessage = () => { + console.log("worker.terminate"); + worker.terminate(); +}; +worker.postMessage({ moduleCode }); diff --git a/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out b/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out new file mode 100644 index 000000000..5ed65b02f --- /dev/null +++ b/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out @@ -0,0 +1,6 @@ +worker! +before import +module start +module finish +after import +worker.terminate |