41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
|
'use strict';
|
||
|
const common = require('../common');
|
||
|
const tmpdir = require('../common/tmpdir');
|
||
|
const assert = require('assert');
|
||
|
|
||
|
// Attempts to test that the source map JS code run on process shutdown
|
||
|
// does not call any user-defined JS code.
|
||
|
|
||
|
const { Worker, workerData, parentPort } = require('worker_threads');
|
||
|
|
||
|
if (!workerData) {
|
||
|
tmpdir.refresh();
|
||
|
process.env.NODE_V8_COVERAGE = tmpdir.path;
|
||
|
|
||
|
// Count the number of some calls that should not be made.
|
||
|
const callCount = new Int32Array(new SharedArrayBuffer(4));
|
||
|
const w = new Worker(__filename, { workerData: { callCount } });
|
||
|
w.on('message', common.mustCall(() => w.terminate()));
|
||
|
w.on('exit', common.mustCall(() => {
|
||
|
assert.strictEqual(callCount[0], 0);
|
||
|
}));
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const { callCount } = workerData;
|
||
|
|
||
|
function increaseCallCount() { callCount[0]++; }
|
||
|
|
||
|
// Increase the call count when a forbidden method is called.
|
||
|
Object.getPrototypeOf((new Map()).entries()).next = increaseCallCount;
|
||
|
Map.prototype.entries = increaseCallCount;
|
||
|
Object.keys = increaseCallCount;
|
||
|
Object.create = increaseCallCount;
|
||
|
Object.hasOwnProperty = increaseCallCount;
|
||
|
Object.defineProperty(Object.prototype, 'value', {
|
||
|
get: increaseCallCount,
|
||
|
set: increaseCallCount
|
||
|
});
|
||
|
|
||
|
parentPort.postMessage('done');
|