Skip to content

Commit eee5adf

Browse files
committed
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: #22694 Reviewed-By: John-David Dalton <[email protected]> Reviewed-By: Matteo Collina <[email protected]>
1 parent cb3d6d5 commit eee5adf

File tree

3 files changed

+27
-12
lines changed

3 files changed

+27
-12
lines changed

lib/assert.js

+16-5
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,9 @@ function innerFail(obj) {
8787
function fail(actual, expected, message, operator, stackStartFn) {
8888
const argsLen = arguments.length;
8989

90+
let internalMessage;
9091
if (argsLen === 0) {
91-
message = 'Failed';
92+
internalMessage = 'Failed';
9293
} else if (argsLen === 1) {
9394
message = actual;
9495
actual = undefined;
@@ -106,13 +107,23 @@ function fail(actual, expected, message, operator, stackStartFn) {
106107
operator = '!=';
107108
}
108109

109-
innerFail({
110+
if (message instanceof Error) throw message;
111+
112+
const errArgs = {
110113
actual,
111114
expected,
112-
message,
113-
operator,
115+
operator: operator === undefined ? 'fail' : operator,
114116
stackStartFn: stackStartFn || fail
115-
});
117+
};
118+
if (message !== undefined) {
119+
errArgs.message = message;
120+
}
121+
const err = new AssertionError(errArgs);
122+
if (internalMessage) {
123+
err.message = internalMessage;
124+
err.generatedMessage = true;
125+
}
126+
throw err;
116127
}
117128

118129
assert.fail = fail;

test/parallel/test-assert-fail-deprecation.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ assert.throws(() => {
1919
message: '\'first\' != \'second\'',
2020
operator: '!=',
2121
actual: 'first',
22-
expected: 'second'
22+
expected: 'second',
23+
generatedMessage: true
2324
});
2425

2526
// Three args
@@ -29,9 +30,10 @@ assert.throws(() => {
2930
code: 'ERR_ASSERTION',
3031
name: 'AssertionError [ERR_ASSERTION]',
3132
message: 'another custom message',
32-
operator: undefined,
33+
operator: 'fail',
3334
actual: 'ignored',
34-
expected: 'ignored'
35+
expected: 'ignored',
36+
generatedMessage: false
3537
});
3638

3739
// Three args with custom Error

test/parallel/test-assert-fail.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ assert.throws(
1010
code: 'ERR_ASSERTION',
1111
name: 'AssertionError [ERR_ASSERTION]',
1212
message: 'Failed',
13-
operator: undefined,
13+
operator: 'fail',
1414
actual: undefined,
15-
expected: undefined
15+
expected: undefined,
16+
generatedMessage: true
1617
}
1718
);
1819

@@ -23,9 +24,10 @@ assert.throws(() => {
2324
code: 'ERR_ASSERTION',
2425
name: 'AssertionError [ERR_ASSERTION]',
2526
message: 'custom message',
26-
operator: undefined,
27+
operator: 'fail',
2728
actual: undefined,
28-
expected: undefined
29+
expected: undefined,
30+
generatedMessage: false
2931
});
3032

3133
// One arg = Error

0 commit comments

Comments
 (0)