test: increase coverage for worker_threads
Provide a test to cover adding setting `onmessage` to a non-function. This provides previously-missing coverage for an else block in the `onmessage` setter. PR-URL: https://github.com/nodejs/node/pull/22942 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Yuta Hiroto <hello@hiroppy.me>
This commit is contained in:
parent
0dbc8c8198
commit
c7bf02a99f
26
test/parallel/test-worker-onmessage-not-a-function.js
Normal file
26
test/parallel/test-worker-onmessage-not-a-function.js
Normal file
@ -0,0 +1,26 @@
|
||||
// When MessagePort.onmessage is set to a value that is not a function, the
|
||||
// setter should call .unref() and .stop(), clearing a previous onmessage
|
||||
// listener from holding the event loop open. This test confirms that
|
||||
// functionality.
|
||||
|
||||
// Flags: --experimental-worker
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
const { Worker, parentPort } = require('worker_threads');
|
||||
|
||||
// Do not use isMainThread so that this test itself can be run inside a Worker.
|
||||
if (!process.env.HAS_STARTED_WORKER) {
|
||||
process.env.HAS_STARTED_WORKER = 1;
|
||||
const w = new Worker(__filename);
|
||||
w.postMessage(2);
|
||||
} else {
|
||||
// .onmessage uses a setter. Set .onmessage to a function that ultimately
|
||||
// should not be called. This will call .ref() and .start() which will keep
|
||||
// the event loop open (and prevent this from exiting) if the subsequent
|
||||
// assignment of a value to .onmessage doesn't call .unref() and .stop().
|
||||
parentPort.onmessage = common.mustNotCall();
|
||||
// Setting `onmessage` to a value that is not a function should clear the
|
||||
// previous value and also should allow the event loop to exit. (In other
|
||||
// words, this test should exit rather than run indefinitely.)
|
||||
parentPort.onmessage = 'fhqwhgads';
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user