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>
This commit is contained in:
parent
300f5ce346
commit
2d6912a46b
@ -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);'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
@ -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});`
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user