mirror of https://github.com/lukechilds/node.git
Browse Source
`assert.fail()` is often mistakenly used with a single argument even in Node.js core. (See fixes to previous instances inprocess-exit-stdio-flushingb7f4b1ba4c
,28e9a022df
. 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>
Rich Trott
9 years ago
committed by
James M Snell
2 changed files with 31 additions and 0 deletions
@ -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…
Reference in new issue