From 2c9e12e49656fa194376cf01356bc964e0d9161b Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Sun, 13 Jan 2019 22:08:34 +0100 Subject: [PATCH] test,worker: verify that `.terminate()` breaks microtask queue PR-URL: https://github.com/nodejs/node/pull/25480 Reviewed-By: James M Snell --- .../test-worker-terminate-microtask-loop.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 test/parallel/test-worker-terminate-microtask-loop.js 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 00000000000000..b2351c5d0bb051 --- /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); +}));