diff options
Diffstat (limited to 'cli/tests/subdir')
-rw-r--r-- | cli/tests/subdir/busy_worker.js | 8 | ||||
-rw-r--r-- | cli/tests/subdir/racy_worker.js | 21 |
2 files changed, 29 insertions, 0 deletions
diff --git a/cli/tests/subdir/busy_worker.js b/cli/tests/subdir/busy_worker.js new file mode 100644 index 000000000..7deba0321 --- /dev/null +++ b/cli/tests/subdir/busy_worker.js @@ -0,0 +1,8 @@ +self.onmessage = function (_evt) { + // infinite loop + for (let i = 0; true; i++) { + if (i % 1000 == 0) { + postMessage(i); + } + } +}; diff --git a/cli/tests/subdir/racy_worker.js b/cli/tests/subdir/racy_worker.js new file mode 100644 index 000000000..83756b791 --- /dev/null +++ b/cli/tests/subdir/racy_worker.js @@ -0,0 +1,21 @@ +// See issue for details +// https://github.com/denoland/deno/issues/4080 +// +// After first call to `postMessage() this worker schedules +// [close(), postMessage()] ops on the same turn of microtask queue +// (because message is rather big). +// Only single `postMessage()` call should make it +// to host, ie. after calling `close()` no more code should be run. + +setTimeout(() => { + close(); +}, 50); + +while (true) { + await new Promise((done) => { + setTimeout(() => { + postMessage({ buf: new Array(999999) }); + done(); + }); + }); +} |