summaryrefslogtreecommitdiff
path: root/deps/node/deps/node-inspect/tools/eslint-rules/prefer-assert-methods.js
diff options
context:
space:
mode:
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.js39
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));
+ }
+ }
+ }
+ }
+ };
+};