summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShobhit Chittora <chittorashobhit@gmail.com>2017-11-01 02:12:56 +0530
committerRuben Bridgewater <ruben@bridgewater.de>2018-02-01 11:40:53 +0100
commit2d6912a46bf6f56a4f7b1d354680ad318cc7a153 (patch)
treecd589c31450d458635c31055609c5322e068ed6f
parent300f5ce3461f01daa994a4a4f78546f164d28ca8 (diff)
downloadandroid-node-v8-2d6912a46bf6f56a4f7b1d354680ad318cc7a153.tar.gz
android-node-v8-2d6912a46bf6f56a4f7b1d354680ad318cc7a153.tar.bz2
android-node-v8-2d6912a46bf6f56a4f7b1d354680ad318cc7a153.zip
tools: auto fix custom eslint rule
1. Extends tests 2. Refactors code 3. Adds fixer Refs: #16636 PR-URL: https://github.com/nodejs/node/pull/16652 Refs: https://github.com/nodejs/node/issues/16636 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Anna Henningsen <anna@addaleax.net>
-rw-r--r--test/parallel/test-eslint-prefer-assert-methods.js37
-rw-r--r--tools/eslint-rules/prefer-assert-methods.js18
2 files changed, 43 insertions, 12 deletions
diff --git a/test/parallel/test-eslint-prefer-assert-methods.js b/test/parallel/test-eslint-prefer-assert-methods.js
index 57596132d8..2d05a4851b 100644
--- a/test/parallel/test-eslint-prefer-assert-methods.js
+++ b/test/parallel/test-eslint-prefer-assert-methods.js
@@ -7,31 +7,46 @@ const rule = require('../../tools/eslint-rules/prefer-assert-methods');
new RuleTester().run('prefer-assert-methods', rule, {
valid: [
- 'assert.strictEqual(foo, bar)',
- 'assert(foo === bar && baz)'
+ 'assert.strictEqual(foo, bar);',
+ 'assert(foo === bar && baz);',
+ 'assert.notStrictEqual(foo, bar);',
+ 'assert(foo !== bar && baz);',
+ 'assert.equal(foo, bar);',
+ 'assert(foo == bar && baz);',
+ 'assert.notEqual(foo, bar);',
+ 'assert(foo != bar && baz);',
+ 'assert.ok(foo);',
+ 'assert.ok(foo != bar);',
+ 'assert.ok(foo === bar && baz);'
],
invalid: [
{
- code: 'assert(foo == bar)',
- errors: [{ message: "'assert.equal' should be used instead of '=='" }]
+ code: 'assert(foo == bar);',
+ errors: [{
+ message: "'assert.equal' should be used instead of '=='"
+ }],
+ output: 'assert.equal(foo, bar);'
},
{
- code: 'assert(foo === bar)',
+ code: 'assert(foo === bar);',
errors: [{
message: "'assert.strictEqual' should be used instead of '==='"
- }]
+ }],
+ output: 'assert.strictEqual(foo, bar);'
},
{
- code: 'assert(foo != bar)',
+ code: 'assert(foo != bar);',
errors: [{
message: "'assert.notEqual' should be used instead of '!='"
- }]
+ }],
+ output: 'assert.notEqual(foo, bar);'
},
{
- code: 'assert(foo !== bar)',
+ code: 'assert(foo !== bar);',
errors: [{
message: "'assert.notStrictEqual' should be used instead of '!=='"
- }]
- },
+ }],
+ output: 'assert.notStrictEqual(foo, bar);'
+ }
]
});
diff --git a/tools/eslint-rules/prefer-assert-methods.js b/tools/eslint-rules/prefer-assert-methods.js
index 0604fd3ed9..2917d40de4 100644
--- a/tools/eslint-rules/prefer-assert-methods.js
+++ b/tools/eslint-rules/prefer-assert-methods.js
@@ -1,3 +1,7 @@
+/**
+ * @fileoverview Prohibit the use of assert operators ( ===, !==, ==, != )
+ */
+
'use strict';
const astSelector = 'ExpressionStatement[expression.type="CallExpression"]' +
@@ -21,7 +25,19 @@ module.exports = function(context) {
const arg = node.expression.arguments[0];
const assertMethod = preferedAssertMethod[arg.operator];
if (assertMethod) {
- context.report(node, parseError(assertMethod, arg.operator));
+ context.report({
+ node,
+ message: parseError(assertMethod, arg.operator),
+ fix: (fixer) => {
+ const sourceCode = context.getSourceCode();
+ const left = sourceCode.getText(arg.left);
+ const right = sourceCode.getText(arg.right);
+ return fixer.replaceText(
+ node,
+ `assert.${assertMethod}(${left}, ${right});`
+ );
+ }
+ });
}
}
};