assert: fix assert.fail() stack

This makes sure the error message visible in the error stack created
when using `assert.fail()` without any arguments or the message set
to `undefined` or `null` as only argument.
That was masked before due to other changes.

PR-URL: https://github.com/nodejs/node/pull/27525
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
This commit is contained in:
Ruben Bridgewater 2019-05-01 22:49:04 +02:00 committed by Rich Trott
parent 7cfcf8069b
commit 3593af00f8
2 changed files with 8 additions and 9 deletions

View File

@ -92,9 +92,10 @@ 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; let internalMessage = false;
if (argsLen === 0) { if (actual == null && argsLen <= 1) {
internalMessage = 'Failed'; internalMessage = true;
message = 'Failed';
} else if (argsLen === 1) { } else if (argsLen === 1) {
message = actual; message = actual;
actual = undefined; actual = undefined;
@ -118,14 +119,11 @@ function fail(actual, expected, message, operator, stackStartFn) {
actual, actual,
expected, expected,
operator: operator === undefined ? 'fail' : operator, operator: operator === undefined ? 'fail' : operator,
stackStartFn: stackStartFn || fail stackStartFn: stackStartFn || fail,
message
}; };
if (message !== undefined) {
errArgs.message = message;
}
const err = new AssertionError(errArgs); const err = new AssertionError(errArgs);
if (internalMessage) { if (internalMessage) {
err.message = internalMessage;
err.generatedMessage = true; err.generatedMessage = true;
} }
throw err; throw err;

View File

@ -13,7 +13,8 @@ assert.throws(
operator: 'fail', operator: 'fail',
actual: undefined, actual: undefined,
expected: undefined, expected: undefined,
generatedMessage: true generatedMessage: true,
stack: /Failed/
} }
); );