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: https://github.com/nodejs/node/pull/19885 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit is contained in:
parent
2c3146d06d
commit
f7496896c4
@ -155,9 +155,13 @@ module.exports = {
|
|||||||
selector: "CallExpression[callee.object.name='assert'][callee.property.name='doesNotThrow']",
|
selector: "CallExpression[callee.object.name='assert'][callee.property.name='doesNotThrow']",
|
||||||
message: "Please replace `assert.doesNotThrow()` and add a comment next to the code instead."
|
message: "Please replace `assert.doesNotThrow()` and add a comment next to the code instead."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
selector: `CallExpression[callee.object.name='assert'][callee.property.name='rejects'][arguments.length<2]`,
|
||||||
|
message: 'assert.rejects() must be invoked with at least two arguments.',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
selector: `CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.1.type='Literal']:not([arguments.1.regex])`,
|
selector: `CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.1.type='Literal']:not([arguments.1.regex])`,
|
||||||
message: 'use a regular expression for second argument of assert.throws()',
|
message: 'Use an object as second argument of assert.throws()',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
selector: `CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.length<2]`,
|
selector: `CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.length<2]`,
|
||||||
|
@ -4,8 +4,10 @@ rules:
|
|||||||
- error
|
- error
|
||||||
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='doesNotThrow']"
|
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='doesNotThrow']"
|
||||||
message: "Please replace `assert.doesNotThrow()` and add a comment next to the code instead."
|
message: "Please replace `assert.doesNotThrow()` and add a comment next to the code instead."
|
||||||
|
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='rejects'][arguments.length<2]"
|
||||||
|
message: "assert.rejects() must be invoked with at least two arguments."
|
||||||
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.1.type='Literal']:not([arguments.1.regex])"
|
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.1.type='Literal']:not([arguments.1.regex])"
|
||||||
message: "use a regular expression for second argument of assert.throws()"
|
message: "Use an object as second argument of assert.throws()"
|
||||||
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.length<2]"
|
- selector: "CallExpression[callee.object.name='assert'][callee.property.name='throws'][arguments.length<2]"
|
||||||
message: "assert.throws() must be invoked with at least two arguments."
|
message: "assert.throws() must be invoked with at least two arguments."
|
||||||
- selector: "CallExpression[callee.name='setTimeout'][arguments.length<2]"
|
- selector: "CallExpression[callee.name='setTimeout'][arguments.length<2]"
|
||||||
|
@ -50,7 +50,7 @@ const promises = [];
|
|||||||
|
|
||||||
promises.push(assert.rejects(() => {
|
promises.push(assert.rejects(() => {
|
||||||
throw THROWN_ERROR;
|
throw THROWN_ERROR;
|
||||||
}).catch(common.mustCall((err) => {
|
}, {}).catch(common.mustCall((err) => {
|
||||||
assert.strictEqual(err, THROWN_ERROR);
|
assert.strictEqual(err, THROWN_ERROR);
|
||||||
})));
|
})));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user