diff options
Diffstat (limited to 'deps/node/deps/node-inspect/tools/eslint-rules/prefer-assert-methods.js')
-rw-r--r-- | deps/node/deps/node-inspect/tools/eslint-rules/prefer-assert-methods.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/deps/node/deps/node-inspect/tools/eslint-rules/prefer-assert-methods.js b/deps/node/deps/node-inspect/tools/eslint-rules/prefer-assert-methods.js new file mode 100644 index 00000000..fa345eb7 --- /dev/null +++ b/deps/node/deps/node-inspect/tools/eslint-rules/prefer-assert-methods.js @@ -0,0 +1,39 @@ +'use strict'; + +function isAssert(node) { + return node.expression && + node.expression.type === 'CallExpression' && + node.expression.callee && + node.expression.callee.name === 'assert'; +} + +function getFirstArg(expression) { + return expression.arguments && expression.arguments[0]; +} + +function parseError(method, op) { + return `'assert.${method}' should be used instead of '${op}'`; +} + +const preferedAssertMethod = { + '===': 'strictEqual', + '!==': 'notStrictEqual', + '==': 'equal', + '!=': 'notEqual' +}; + +module.exports = function(context) { + return { + ExpressionStatement(node) { + if (isAssert(node)) { + const arg = getFirstArg(node.expression); + if (arg && arg.type === 'BinaryExpression') { + const assertMethod = preferedAssertMethod[arg.operator]; + if (assertMethod) { + context.report(node, parseError(assertMethod, arg.operator)); + } + } + } + } + }; +}; |