summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-09-07 21:56:24 +0200
committerAnna Henningsen <anna@addaleax.net>2019-09-09 22:21:37 +0200
commit2833a0d8b7c3f0f5e80059d7a428328c96cbee54 (patch)
treec37a4acaa6a4db4a86c7e29dc2648216d9d77c1b /test
parentd7c5ffc7a423f0df3f289cbc815510e050282d43 (diff)
downloadandroid-node-v8-2833a0d8b7c3f0f5e80059d7a428328c96cbee54.tar.gz
android-node-v8-2833a0d8b7c3f0f5e80059d7a428328c96cbee54.tar.bz2
android-node-v8-2833a0d8b7c3f0f5e80059d7a428328c96cbee54.zip
worker: make terminate() resolve for unref’ed Workers
Once `worker.terminate()` is called, the Worker instance will be destroyed as soon as possible anyway, so in order to make the Promise returned by `worker.terminate()` resolve always, it should be okay to just call `.ref()` on it and keep the main event loop alive temporarily. PR-URL: https://github.com/nodejs/node/pull/29484 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-worker-terminate-unrefed.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/parallel/test-worker-terminate-unrefed.js b/test/parallel/test-worker-terminate-unrefed.js
new file mode 100644
index 0000000000..adf6bbf145
--- /dev/null
+++ b/test/parallel/test-worker-terminate-unrefed.js
@@ -0,0 +1,16 @@
+'use strict';
+const common = require('../common');
+const { once } = require('events');
+const { Worker } = require('worker_threads');
+
+// Test that calling worker.terminate() on an unref()’ed Worker instance
+// still resolves the returned Promise.
+
+async function test() {
+ const worker = new Worker('setTimeout(() => {}, 1000000);', { eval: true });
+ await once(worker, 'online');
+ worker.unref();
+ await worker.terminate();
+}
+
+test().then(common.mustCall());