Skip to content

Commit 6a5ce36

Browse files
Trotttargos
authored andcommitted
test: handle unknown message type in worker threads
Check that main thread handles an unknown message type from a worker thread as expected. PR-URL: #27995 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent 1827256 commit 6a5ce36

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

test/parallel/test-worker-message-not-serializable.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,19 @@
66
// expected.
77

88
const common = require('../common');
9-
common.skipIfWorker();
109

1110
const assert = require('assert');
1211

13-
const { Worker, isMainThread } = require('worker_threads');
14-
if (isMainThread) {
15-
const worker = new Worker(__filename);
16-
worker.on('error', common.mustCall((e) => {
17-
assert.strictEqual(e.code, 'ERR_WORKER_UNSERIALIZABLE_ERROR');
18-
}));
19-
} else {
12+
const { Worker } = require('worker_threads');
13+
14+
const worker = new Worker(`
2015
const { internalBinding } = require('internal/test/binding');
2116
const { getEnvMessagePort } = internalBinding('worker');
2217
const { messageTypes } = require('internal/worker/io');
2318
const messagePort = getEnvMessagePort();
2419
messagePort.postMessage({ type: messageTypes.COULD_NOT_SERIALIZE_ERROR });
25-
}
20+
`, { eval: true });
21+
22+
worker.on('error', common.mustCall((e) => {
23+
assert.strictEqual(e.code, 'ERR_WORKER_UNSERIALIZABLE_ERROR');
24+
}));
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
'use strict';
2+
3+
// Check that main thread handles an unknown message type from a worker thread
4+
// as expected.
5+
6+
require('../common');
7+
8+
const assert = require('assert');
9+
const { spawnSync } = require('child_process');
10+
11+
const { Worker } = require('worker_threads');
12+
if (process.argv[2] !== 'spawned') {
13+
const result = spawnSync(process.execPath,
14+
[ '--expose-internals', __filename, 'spawned'],
15+
{ encoding: 'utf8' });
16+
assert.ok(result.stderr.includes('Unknown worker message type FHQWHGADS'),
17+
`Expected error not found in: ${result.stderr}`);
18+
} else {
19+
new Worker(`
20+
const { internalBinding } = require('internal/test/binding');
21+
const { getEnvMessagePort } = internalBinding('worker');
22+
const messagePort = getEnvMessagePort();
23+
messagePort.postMessage({ type: 'FHQWHGADS' });
24+
`, { eval: true });
25+
}

0 commit comments

Comments
 (0)