node/test/parallel/test-common-expect-warning.js
Rich Trott 256bf9e6b6
test: improve expectWarning error message
expectWarning() fails with a TypeError and a message about undefined not
being iterable when the warning is emitted more times than expected.
This change produces a more useful error message.

Refs: https://github.com/nodejs/node/pull/41307/files#r775197738

PR-URL: https://github.com/nodejs/node/pull/41326
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2022-01-31 23:54:22 -05:00

50 lines
1.3 KiB
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const { spawn } = require('child_process');
if (process.argv[2] !== 'child') {
// Expected error not emitted.
{
const child = spawn(
process.execPath, [__filename, 'child', 0], { encoding: 'utf8' }
);
child.on('exit', common.mustCall((status) => {
assert.notStrictEqual(status, 0);
}));
}
// Expected error emitted.
{
const child = spawn(
process.execPath, [__filename, 'child', 1], { encoding: 'utf8' }
);
child.on('exit', common.mustCall((status) => {
assert.strictEqual(status, 0);
}));
}
// Expected error emitted too many times.
{
const child = spawn(
process.execPath, [__filename, 'child', 2], { encoding: 'utf8' }
);
child.stderr.setEncoding('utf8');
let stderr = '';
child.stderr.on('data', (data) => {
stderr += data;
});
child.on('exit', common.mustCall((status) => {
assert.notStrictEqual(status, 0);
assert.match(stderr, /Unexpected extra warning received/);
}));
}
} else {
const iterations = +process.argv[3];
common.expectWarning('fhqwhgads', 'fhqwhgads', 'fhqwhgads');
for (let i = 0; i < iterations; i++) {
process.emitWarning('fhqwhgads', 'fhqwhgads', 'fhqwhgads');
}
}