test: make handling of noWarnCode stricter

This change requires all expected warnings to be specified along with
their respective code and will raise an error if the code does not
match. This also kind of fixes the behavior when the expected warning
code was noWarnCode and there is an actual warning code.

PR-URL: https://github.com/nodejs/node/pull/21075
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
Tobias Nießen 2018-05-31 17:21:59 +02:00
parent 5a6b1975d5
commit 41843e23f2
No known key found for this signature in database
GPG Key ID: 718207F8FD156B70
3 changed files with 7 additions and 14 deletions

View File

@ -589,7 +589,7 @@ exports.isAlive = function isAlive(pid) {
} }
}; };
exports.noWarnCode = 'no_expected_warning_code'; exports.noWarnCode = undefined;
function expectWarning(name, expected) { function expectWarning(name, expected) {
const map = new Map(expected); const map = new Map(expected);
@ -598,14 +598,7 @@ function expectWarning(name, expected) {
assert.ok(map.has(warning.message), assert.ok(map.has(warning.message),
`unexpected error message: "${warning.message}"`); `unexpected error message: "${warning.message}"`);
const code = map.get(warning.message); const code = map.get(warning.message);
if (code === undefined) { assert.strictEqual(warning.code, code);
throw new Error('An error code must be specified or use ' +
'common.noWarnCode if there is no error code. The error ' +
`code for this warning was ${warning.code}`);
}
if (code !== exports.noWarnCode) {
assert.strictEqual(warning.code, code);
}
// Remove a warning message after it is seen so that we guarantee that we // Remove a warning message after it is seen so that we guarantee that we
// get each message only once. // get each message only once.
map.delete(expected); map.delete(expected);

View File

@ -6,7 +6,7 @@ const expectedDeprecationWarning = ['Unhandled promise rejections are ' +
'deprecated. In the future, promise ' + 'deprecated. In the future, promise ' +
'rejections that are not handled will ' + 'rejections that are not handled will ' +
'terminate the Node.js process with a ' + 'terminate the Node.js process with a ' +
'non-zero exit code.', common.noWarnCode]; 'non-zero exit code.', 'DEP0018'];
const expectedPromiseWarning = ['Unhandled promise rejection. ' + const expectedPromiseWarning = ['Unhandled promise rejection. ' +
'This error originated either by throwing ' + 'This error originated either by throwing ' +
'inside of an async function without a catch ' + 'inside of an async function without a catch ' +

View File

@ -142,10 +142,10 @@ assert.strictEqual(util.isFunction(), false);
assert.strictEqual(util.isFunction('string'), false); assert.strictEqual(util.isFunction('string'), false);
common.expectWarning('DeprecationWarning', [ common.expectWarning('DeprecationWarning', [
['util.print is deprecated. Use console.log instead.', common.noWarnCode], ['util.print is deprecated. Use console.log instead.', 'DEP0026'],
['util.puts is deprecated. Use console.log instead.', common.noWarnCode], ['util.puts is deprecated. Use console.log instead.', 'DEP0027'],
['util.debug is deprecated. Use console.error instead.', common.noWarnCode], ['util.debug is deprecated. Use console.error instead.', 'DEP0028'],
['util.error is deprecated. Use console.error instead.', common.noWarnCode] ['util.error is deprecated. Use console.error instead.', 'DEP0029']
]); ]);
util.print('test'); util.print('test');