assert: add default operator to assert.fail()

This makes sure `assert.fail()` contains an operator instead of being
undefined.

On top of that it also fixes the `err.generatedMessage` property.
Before, it was not always set correct.

PR-URL: https://github.com/nodejs/node/pull/22694
Reviewed-By: John-David Dalton <john.david.dalton@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
This commit is contained in:
Ruben Bridgewater 2018-09-04 15:18:44 +02:00
parent cb3d6d5113
commit eee5adfab5
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762
3 changed files with 27 additions and 12 deletions

View File

@ -87,8 +87,9 @@ function innerFail(obj) {
function fail(actual, expected, message, operator, stackStartFn) { function fail(actual, expected, message, operator, stackStartFn) {
const argsLen = arguments.length; const argsLen = arguments.length;
let internalMessage;
if (argsLen === 0) { if (argsLen === 0) {
message = 'Failed'; internalMessage = 'Failed';
} else if (argsLen === 1) { } else if (argsLen === 1) {
message = actual; message = actual;
actual = undefined; actual = undefined;
@ -106,13 +107,23 @@ function fail(actual, expected, message, operator, stackStartFn) {
operator = '!='; operator = '!=';
} }
innerFail({ if (message instanceof Error) throw message;
const errArgs = {
actual, actual,
expected, expected,
message, operator: operator === undefined ? 'fail' : operator,
operator,
stackStartFn: stackStartFn || fail stackStartFn: stackStartFn || fail
}); };
if (message !== undefined) {
errArgs.message = message;
}
const err = new AssertionError(errArgs);
if (internalMessage) {
err.message = internalMessage;
err.generatedMessage = true;
}
throw err;
} }
assert.fail = fail; assert.fail = fail;

View File

@ -19,7 +19,8 @@ assert.throws(() => {
message: '\'first\' != \'second\'', message: '\'first\' != \'second\'',
operator: '!=', operator: '!=',
actual: 'first', actual: 'first',
expected: 'second' expected: 'second',
generatedMessage: true
}); });
// Three args // Three args
@ -29,9 +30,10 @@ assert.throws(() => {
code: 'ERR_ASSERTION', code: 'ERR_ASSERTION',
name: 'AssertionError [ERR_ASSERTION]', name: 'AssertionError [ERR_ASSERTION]',
message: 'another custom message', message: 'another custom message',
operator: undefined, operator: 'fail',
actual: 'ignored', actual: 'ignored',
expected: 'ignored' expected: 'ignored',
generatedMessage: false
}); });
// Three args with custom Error // Three args with custom Error

View File

@ -10,9 +10,10 @@ assert.throws(
code: 'ERR_ASSERTION', code: 'ERR_ASSERTION',
name: 'AssertionError [ERR_ASSERTION]', name: 'AssertionError [ERR_ASSERTION]',
message: 'Failed', message: 'Failed',
operator: undefined, operator: 'fail',
actual: undefined, actual: undefined,
expected: undefined expected: undefined,
generatedMessage: true
} }
); );
@ -23,9 +24,10 @@ assert.throws(() => {
code: 'ERR_ASSERTION', code: 'ERR_ASSERTION',
name: 'AssertionError [ERR_ASSERTION]', name: 'AssertionError [ERR_ASSERTION]',
message: 'custom message', message: 'custom message',
operator: undefined, operator: 'fail',
actual: undefined, actual: undefined,
expected: undefined expected: undefined,
generatedMessage: false
}); });
// One arg = Error // One arg = Error