Skip to content

Commit add1fcd

Browse files
BridgeARtargos
authored andcommitted
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 0873d0a commit add1fcd

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
@@ -86,8 +86,9 @@ function innerFail(obj) {
8686
function fail(actual, expected, message, operator, stackStartFn) {
8787
const argsLen = arguments.length;
8888

89+
let internalMessage;
8990
if (argsLen === 0) {
90-
message = 'Failed';
91+
internalMessage = 'Failed';
9192
} else if (argsLen === 1) {
9293
message = actual;
9394
actual = undefined;
@@ -105,13 +106,23 @@ function fail(actual, expected, message, operator, stackStartFn) {
105106
operator = '!=';
106107
}
107108

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

117128
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)