tools: lint rule for assert.fail()
`assert.fail()` is often mistakenly used with a single argument even in Node.js core. (See fixes to previous instances in b7f4b1ba4cca320cf576aa73fae15902fd801190, 28e9a022df3ef89a0ea21e4ad86655eb408a8d96. and 676e61872f54dd546e324599c7871c20b798386a.) This commit adds a linting rule to identify instances of this issue. PR-URL: https://github.com/nodejs/node/pull/6261 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Minwoo Jung <jmwsoft@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
4bbd41864a
commit
8ede3d5002
@ -85,6 +85,7 @@ rules:
|
|||||||
prefer-const: 2
|
prefer-const: 2
|
||||||
|
|
||||||
# Custom rules in tools/eslint-rules
|
# Custom rules in tools/eslint-rules
|
||||||
|
assert-fail-single-argument: 2
|
||||||
new-with-error: [2, "Error", "RangeError", "TypeError", "SyntaxError", "ReferenceError"]
|
new-with-error: [2, "Error", "RangeError", "TypeError", "SyntaxError", "ReferenceError"]
|
||||||
align-multiline-assignment: 2
|
align-multiline-assignment: 2
|
||||||
|
|
||||||
|
30
tools/eslint-rules/assert-fail-single-argument.js
Normal file
30
tools/eslint-rules/assert-fail-single-argument.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/**
|
||||||
|
* @fileoverview Prohibit use of a single argument only in `assert.fail()`. It
|
||||||
|
* is almost always an error.
|
||||||
|
* @author Rich Trott
|
||||||
|
*/
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// Rule Definition
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
const msg = 'assert.fail() message should be third argument';
|
||||||
|
|
||||||
|
function isAssert(node) {
|
||||||
|
return node.callee.object && node.callee.object.name === 'assert';
|
||||||
|
}
|
||||||
|
|
||||||
|
function isFail(node) {
|
||||||
|
return node.callee.property && node.callee.property.name === 'fail';
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = function(context) {
|
||||||
|
return {
|
||||||
|
'CallExpression': function(node) {
|
||||||
|
if (isAssert(node) && isFail(node) && node.arguments.length === 1) {
|
||||||
|
context.report(node, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user