From dcd552d1d817da8a68ec8eaa4efc7300c8352b78 Mon Sep 17 00:00:00 2001 From: dobbydobap Date: Wed, 8 Jul 2026 21:27:25 +0530 Subject: [PATCH] test: cover worker throwing primitive values A worker that throws a non-Error value (string, number, bigint, boolean, null, undefined) surfaces that value on the parent's 'error' handler. This was reported as a wrapped ERR_UNHANDLED_ERROR and is now correct, but had no regression coverage. Refs: https://github.com/nodejs/node/issues/35506 Signed-off-by: dobbydobap --- test/parallel/test-worker-error-primitive.js | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 test/parallel/test-worker-error-primitive.js diff --git a/test/parallel/test-worker-error-primitive.js b/test/parallel/test-worker-error-primitive.js new file mode 100644 index 00000000000000..9914db91044151 --- /dev/null +++ b/test/parallel/test-worker-error-primitive.js @@ -0,0 +1,25 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const { Worker } = require('worker_threads'); + +const cases = [ + { code: 'throw "boom";', value: 'boom' }, + { code: 'throw 42;', value: 42 }, + { code: 'throw 7n;', value: 7n }, + { code: 'throw true;', value: true }, + { code: 'throw null;', value: null }, + { code: 'throw undefined;', value: undefined }, + { code: 'throw Symbol.for("a");', value: Symbol.for('a') }, +]; + +for (const { code, value } of cases) { + const worker = new Worker(code, { eval: true }); + worker.on('message', common.mustNotCall()); + worker.on('error', common.mustCall((err) => { + assert.strictEqual(err, value); + })); + worker.on('exit', common.mustCall((exitCode) => { + assert.strictEqual(exitCode, 1); + })); +}