mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
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>
This commit is contained in:
1 parent
01c4907696
commit
0465373d77
2 files changed
+55
-1
No files matched your search
@@ -549,7 +549,11 @@ function _expectWarning(name, expected, code) {
|
||||
expected.forEach(([_, code]) => assert(code, expected));
|
||||
}
|
||||
return mustCall((warning) => {
|
||||
const [ message, code ] = expected.shift();
|
||||
const expectedProperties = expected.shift();
|
||||
if (!expectedProperties) {
|
||||
assert.fail(`Unexpected extra warning received: ${warning}`);
|
||||
}
|
||||
const [ message, code ] = expectedProperties;
|
||||
assert.strictEqual(warning.name, name);
|
||||
if (typeof message === 'string') {
|
||||
assert.strictEqual(warning.message, message);
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
'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');
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user