diff --git a/test/parallel/test-worker-message-not-serializable.js b/test/parallel/test-worker-message-not-serializable.js index 875cc1d58a148a..3753c7de6cbdf9 100644 --- a/test/parallel/test-worker-message-not-serializable.js +++ b/test/parallel/test-worker-message-not-serializable.js @@ -6,20 +6,19 @@ // expected. const common = require('../common'); -common.skipIfWorker(); const assert = require('assert'); -const { Worker, isMainThread } = require('worker_threads'); -if (isMainThread) { - const worker = new Worker(__filename); - worker.on('error', common.mustCall((e) => { - assert.strictEqual(e.code, 'ERR_WORKER_UNSERIALIZABLE_ERROR'); - })); -} else { +const { Worker } = require('worker_threads'); + +const worker = new Worker(` const { internalBinding } = require('internal/test/binding'); const { getEnvMessagePort } = internalBinding('worker'); const { messageTypes } = require('internal/worker/io'); const messagePort = getEnvMessagePort(); messagePort.postMessage({ type: messageTypes.COULD_NOT_SERIALIZE_ERROR }); -} +`, { eval: true }); + +worker.on('error', common.mustCall((e) => { + assert.strictEqual(e.code, 'ERR_WORKER_UNSERIALIZABLE_ERROR'); +})); diff --git a/test/parallel/test-worker-message-type-unknown.js b/test/parallel/test-worker-message-type-unknown.js new file mode 100644 index 00000000000000..32f6c2a32bd6b4 --- /dev/null +++ b/test/parallel/test-worker-message-type-unknown.js @@ -0,0 +1,25 @@ +'use strict'; + +// Check that main thread handles an unknown message type from a worker thread +// as expected. + +require('../common'); + +const assert = require('assert'); +const { spawnSync } = require('child_process'); + +const { Worker } = require('worker_threads'); +if (process.argv[2] !== 'spawned') { + const result = spawnSync(process.execPath, + [ '--expose-internals', __filename, 'spawned'], + { encoding: 'utf8' }); + assert.ok(result.stderr.includes('Unknown worker message type FHQWHGADS'), + `Expected error not found in: ${result.stderr}`); +} else { + new Worker(` + const { internalBinding } = require('internal/test/binding'); + const { getEnvMessagePort } = internalBinding('worker'); + const messagePort = getEnvMessagePort(); + messagePort.postMessage({ type: 'FHQWHGADS' }); + `, { eval: true }); +}