From 28bf87f586905f57de89fe110f04f7cdfa827103 Mon Sep 17 00:00:00 2001 From: Alistair Smith Date: Thu, 5 Jun 2025 12:54:27 -0700 Subject: [PATCH] coverage (ran in both node & bun) --- .../worker-thread-id-post-termination.mjs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 test/js/node/worker_threads/worker-thread-id-post-termination.mjs diff --git a/test/js/node/worker_threads/worker-thread-id-post-termination.mjs b/test/js/node/worker_threads/worker-thread-id-post-termination.mjs new file mode 100644 index 0000000000..3cd550b8ea --- /dev/null +++ b/test/js/node/worker_threads/worker-thread-id-post-termination.mjs @@ -0,0 +1,23 @@ +import assert from "node:assert"; +import { setTimeout as sleep } from "node:timers/promises"; +import { fileURLToPath } from "node:url"; +import { Worker, isMainThread, threadId } from "node:worker_threads"; + +const sleeptime = 100; + +if (isMainThread) { + const worker = new Worker(fileURLToPath(import.meta.url)); + assert.strictEqual(threadId, 0); + assert.strictEqual(worker.threadId, 1); + console.log(" (main) threadId:", worker.threadId); + + await sleep(sleeptime); + assert.strictEqual(await worker.terminate(), 1); + assert.strictEqual(worker.threadId, -1); // should be -1 after termination + assert.strictEqual(await worker.terminate(), undefined); // sequential calling is basically no-op + assert.strictEqual(worker.threadId, -1); +} else { + console.log("(worker) threadId:", threadId); + assert.strictEqual(threadId, 1); + await sleep(sleeptime * 2); // keep it alive definitely longer than the parent +}