From f7496896c4ea088cbd5e4ed29eeecca655e1ac0b Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Mon, 9 Apr 2018 00:12:48 +0200 Subject: tools: add eslintrc rule for `assert.rejects` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-By: Michaƫl Zasso Reviewed-By: James M Snell Reviewed-By: Trivikram Kamat --- .eslintrc.js | 6 +++++- lib/.eslintrc.yaml | 4 +++- test/parallel/test-assert-async.js | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 2eb3eae6a8..53d0b39d0a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -155,9 +155,13 @@ module.exports = { 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='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])`, - 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]`, diff --git a/lib/.eslintrc.yaml b/lib/.eslintrc.yaml index bf2251525e..80cada0b8c 100644 --- a/lib/.eslintrc.yaml +++ b/lib/.eslintrc.yaml @@ -4,8 +4,10 @@ rules: - 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='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])" - 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]" message: "assert.throws() must be invoked with at least two arguments." - selector: "CallExpression[callee.name='setTimeout'][arguments.length<2]" diff --git a/test/parallel/test-assert-async.js b/test/parallel/test-assert-async.js index 2a865c121f..00a4fe7c72 100644 --- a/test/parallel/test-assert-async.js +++ b/test/parallel/test-assert-async.js @@ -50,7 +50,7 @@ const promises = []; promises.push(assert.rejects(() => { throw THROWN_ERROR; - }).catch(common.mustCall((err) => { + }, {}).catch(common.mustCall((err) => { assert.strictEqual(err, THROWN_ERROR); }))); } -- cgit v1.2.3