Skip to content

Commit c667c87

Browse files
BridgeARjasnell
authored andcommitted
tools: add eslintrc rule for assert.rejects
This makes sure `assert.rejects` is always called with a second argument. Besides that it is also changes a eslint error message to suggest objects instead of a regular expression. PR-URL: #19885 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]>
1 parent b3c1bd3 commit c667c87

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

.eslintrc.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,13 @@ module.exports = {
155155
selector: "CallExpression[callee.object.name='assert'][callee.property.name='doesNotThrow']",
156156
message: "Please replace `assert.doesNotThrow()` and add a comment next to the code instead."
157157
},
158+
{
159+
selector: `CallExpression[callee.object.name='assert'][callee.property.name='rejects'][arguments.length<2]`,
160+
message: 'assert.rejects() must be invoked with at least two arguments.',
161+
},
158162
{
159163
selector: `CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.1.type='Literal']:not([arguments.1.regex])`,
160-
message: 'use a regular expression for second argument of assert.throws()',
164+
message: 'Use an object as second argument of assert.throws()',
161165
},
162166
{
163167
selector: `CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.length<2]`,

lib/.eslintrc.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ rules:
44
- error
55
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='doesNotThrow']"
66
message: "Please replace `assert.doesNotThrow()` and add a comment next to the code instead."
7+
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='rejects'][arguments.length<2]"
8+
message: "assert.rejects() must be invoked with at least two arguments."
79
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.1.type='Literal']:not([arguments.1.regex])"
8-
message: "use a regular expression for second argument of assert.throws()"
10+
message: "Use an object as second argument of assert.throws()"
911
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.length<2]"
1012
message: "assert.throws() must be invoked with at least two arguments."
1113
- selector: "CallExpression[callee.name='setTimeout'][arguments.length<2]"

test/parallel/test-assert-async.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const promises = [];
5050

5151
promises.push(assert.rejects(() => {
5252
throw THROWN_ERROR;
53-
}).catch(common.mustCall((err) => {
53+
}, {}).catch(common.mustCall((err) => {
5454
assert.strictEqual(err, THROWN_ERROR);
5555
})));
5656
}

0 commit comments

Comments
 (0)