tools: add assert.doesNotThrow eslint rule
Prohibit the usage of `assert.doesNotThrow()`. PR-URL: https://github.com/nodejs/node/pull/18669 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
This commit is contained in:
parent
644fdd60d4
commit
15bb8437fd
@ -135,8 +135,11 @@ rules:
|
|||||||
no-mixed-spaces-and-tabs: error
|
no-mixed-spaces-and-tabs: error
|
||||||
no-multiple-empty-lines: [error, {max: 2, maxEOF: 0, maxBOF: 0}]
|
no-multiple-empty-lines: [error, {max: 2, maxEOF: 0, maxBOF: 0}]
|
||||||
no-restricted-syntax: [error, {
|
no-restricted-syntax: [error, {
|
||||||
|
selector: "CallExpression[callee.object.name='assert'][callee.property.name='doesNotThrow']",
|
||||||
|
message: "Please replace `assert.doesNotThrow()` and add a comment next to the code instead."
|
||||||
|
}, {
|
||||||
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 a regular expression for 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."
|
||||||
|
@ -26,6 +26,7 @@ function main({ n, method }) {
|
|||||||
case 'doesNotThrow':
|
case 'doesNotThrow':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n; ++i) {
|
for (i = 0; i < n; ++i) {
|
||||||
|
// eslint-disable-next-line no-restricted-syntax
|
||||||
assert.doesNotThrow(doesNotThrow);
|
assert.doesNotThrow(doesNotThrow);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
|
@ -341,6 +341,7 @@ to the caller.
|
|||||||
The following, for instance, will throw the [`TypeError`][] because there is no
|
The following, for instance, will throw the [`TypeError`][] because there is no
|
||||||
matching error type in the assertion:
|
matching error type in the assertion:
|
||||||
|
|
||||||
|
<!-- eslint-disable no-restricted-syntax -->
|
||||||
```js
|
```js
|
||||||
assert.doesNotThrow(
|
assert.doesNotThrow(
|
||||||
() => {
|
() => {
|
||||||
@ -353,6 +354,7 @@ assert.doesNotThrow(
|
|||||||
However, the following will result in an `AssertionError` with the message
|
However, the following will result in an `AssertionError` with the message
|
||||||
'Got unwanted exception (TypeError)..':
|
'Got unwanted exception (TypeError)..':
|
||||||
|
|
||||||
|
<!-- eslint-disable no-restricted-syntax -->
|
||||||
```js
|
```js
|
||||||
assert.doesNotThrow(
|
assert.doesNotThrow(
|
||||||
() => {
|
() => {
|
||||||
@ -366,6 +368,7 @@ If an `AssertionError` is thrown and a value is provided for the `message`
|
|||||||
parameter, the value of `message` will be appended to the `AssertionError`
|
parameter, the value of `message` will be appended to the `AssertionError`
|
||||||
message:
|
message:
|
||||||
|
|
||||||
|
<!-- eslint-disable no-restricted-syntax -->
|
||||||
```js
|
```js
|
||||||
assert.doesNotThrow(
|
assert.doesNotThrow(
|
||||||
() => {
|
() => {
|
||||||
|
@ -121,7 +121,7 @@ assert.throws(() => thrower(TypeError));
|
|||||||
}
|
}
|
||||||
|
|
||||||
common.expectsError(
|
common.expectsError(
|
||||||
() => assert.doesNotThrow(() => thrower(Error), 'user message'),
|
() => a.doesNotThrow(() => thrower(Error), 'user message'),
|
||||||
{
|
{
|
||||||
type: a.AssertionError,
|
type: a.AssertionError,
|
||||||
code: 'ERR_ASSERTION',
|
code: 'ERR_ASSERTION',
|
||||||
@ -131,7 +131,7 @@ common.expectsError(
|
|||||||
);
|
);
|
||||||
|
|
||||||
common.expectsError(
|
common.expectsError(
|
||||||
() => assert.doesNotThrow(() => thrower(Error), 'user message'),
|
() => a.doesNotThrow(() => thrower(Error), 'user message'),
|
||||||
{
|
{
|
||||||
code: 'ERR_ASSERTION',
|
code: 'ERR_ASSERTION',
|
||||||
message: /Got unwanted exception: user message\n\[object Object\]/
|
message: /Got unwanted exception: user message\n\[object Object\]/
|
||||||
@ -139,7 +139,7 @@ common.expectsError(
|
|||||||
);
|
);
|
||||||
|
|
||||||
common.expectsError(
|
common.expectsError(
|
||||||
() => assert.doesNotThrow(() => thrower(Error)),
|
() => a.doesNotThrow(() => thrower(Error)),
|
||||||
{
|
{
|
||||||
code: 'ERR_ASSERTION',
|
code: 'ERR_ASSERTION',
|
||||||
message: /Got unwanted exception\.\n\[object Object\]/
|
message: /Got unwanted exception\.\n\[object Object\]/
|
||||||
@ -292,7 +292,7 @@ try {
|
|||||||
|
|
||||||
// Verify AssertionError is the result from doesNotThrow with custom Error.
|
// Verify AssertionError is the result from doesNotThrow with custom Error.
|
||||||
try {
|
try {
|
||||||
assert.doesNotThrow(() => {
|
a.doesNotThrow(() => {
|
||||||
throw new TypeError('wrong type');
|
throw new TypeError('wrong type');
|
||||||
}, TypeError, rangeError);
|
}, TypeError, rangeError);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -760,7 +760,6 @@ common.expectsError(
|
|||||||
|
|
||||||
errObj.code = '404';
|
errObj.code = '404';
|
||||||
common.expectsError(
|
common.expectsError(
|
||||||
// eslint-disable-next-line no-restricted-syntax
|
|
||||||
() => assert.throws(errFn, errObj),
|
() => assert.throws(errFn, errObj),
|
||||||
{
|
{
|
||||||
code: 'ERR_ASSERTION',
|
code: 'ERR_ASSERTION',
|
||||||
@ -772,7 +771,6 @@ common.expectsError(
|
|||||||
errObj.code = 404;
|
errObj.code = 404;
|
||||||
errObj.foo = 'bar';
|
errObj.foo = 'bar';
|
||||||
common.expectsError(
|
common.expectsError(
|
||||||
// eslint-disable-next-line no-restricted-syntax
|
|
||||||
() => assert.throws(errFn, errObj),
|
() => assert.throws(errFn, errObj),
|
||||||
{
|
{
|
||||||
code: 'ERR_ASSERTION',
|
code: 'ERR_ASSERTION',
|
||||||
@ -791,7 +789,7 @@ common.expectsError(
|
|||||||
);
|
);
|
||||||
|
|
||||||
common.expectsError(
|
common.expectsError(
|
||||||
() => assert.doesNotThrow(() => { throw new Error(); }, { foo: 'bar' }),
|
() => a.doesNotThrow(() => { throw new Error(); }, { foo: 'bar' }),
|
||||||
{
|
{
|
||||||
type: TypeError,
|
type: TypeError,
|
||||||
code: 'ERR_INVALID_ARG_TYPE',
|
code: 'ERR_INVALID_ARG_TYPE',
|
||||||
@ -822,7 +820,7 @@ common.expectsError(
|
|||||||
assert.throws(() => { throw undefined; }, /undefined/);
|
assert.throws(() => { throw undefined; }, /undefined/);
|
||||||
common.expectsError(
|
common.expectsError(
|
||||||
// eslint-disable-next-line no-throw-literal
|
// eslint-disable-next-line no-throw-literal
|
||||||
() => assert.doesNotThrow(() => { throw undefined; }),
|
() => a.doesNotThrow(() => { throw undefined; }),
|
||||||
{
|
{
|
||||||
type: assert.AssertionError,
|
type: assert.AssertionError,
|
||||||
code: 'ERR_ASSERTION',
|
code: 'ERR_ASSERTION',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user