summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-01-13 22:08:34 +0100
committerDaniel Bevenius <daniel.bevenius@gmail.com>2019-01-22 05:38:44 +0100
commit2c9e12e49656fa194376cf01356bc964e0d9161b (patch)
tree3d60ad12fcecb7a2cfc31ada8c52b474c283386d /test
parent1b11824f514ac6fea77b7ae7b92e2ab64d970351 (diff)
downloadandroid-node-v8-2c9e12e49656fa194376cf01356bc964e0d9161b.tar.gz
android-node-v8-2c9e12e49656fa194376cf01356bc964e0d9161b.tar.bz2
android-node-v8-2c9e12e49656fa194376cf01356bc964e0d9161b.zip
test,worker: verify that `.terminate()` breaks microtask queue
PR-URL: https://github.com/nodejs/node/pull/25480 Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-worker-terminate-microtask-loop.js19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/parallel/test-worker-terminate-microtask-loop.js b/test/parallel/test-worker-terminate-microtask-loop.js
new file mode 100644
index 0000000000..b2351c5d0b
--- /dev/null
+++ b/test/parallel/test-worker-terminate-microtask-loop.js
@@ -0,0 +1,19 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const { Worker } = require('worker_threads');
+
+// Verify that `.terminate()` interrupts the microtask queue.
+
+const worker = new Worker(`
+function loop() { Promise.resolve().then(loop); } loop();
+require('worker_threads').parentPort.postMessage('up');
+`, { eval: true });
+
+worker.once('message', common.mustCall(() => {
+ setImmediate(() => worker.terminate());
+}));
+
+worker.once('exit', common.mustCall((code) => {
+ assert.strictEqual(code, 1);
+}));