Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit add1fcd

Browse filesBrowse 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 <john.david.dalton@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
1 parent 0873d0a commit add1fcd
Copy full SHA for add1fcd

File tree

Expand file treeCollapse file tree

3 files changed

+27
-12
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

3 files changed

+27
-12
lines changed
Open diff view settings
Collapse file

‎lib/assert.js‎

Copy file name to clipboardExpand all lines: lib/assert.js
+16-5Lines changed: 16 additions & 5 deletions
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;
Collapse file

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

Copy file name to clipboardExpand all lines: test/parallel/test-assert-fail-deprecation.js
+5-3Lines changed: 5 additions & 3 deletions
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
Collapse file

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

Copy file name to clipboardExpand all lines: test/parallel/test-assert-fail.js
+6-4Lines changed: 6 additions & 4 deletions
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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.