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, {
|
new RuleTester().run('prefer-assert-methods', rule, {
|
||||||
valid: [
|
valid: [
|
||||||
'assert.strictEqual(foo, bar)',
|
'assert.strictEqual(foo, bar);',
|
||||||
'assert(foo === bar && baz)'
|
'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: [
|
invalid: [
|
||||||
{
|
{
|
||||||
code: 'assert(foo == bar)',
|
code: 'assert(foo == bar);',
|
||||||
errors: [{ message: "'assert.equal' should be used instead of '=='" }]
|
errors: [{
|
||||||
|
message: "'assert.equal' should be used instead of '=='"
|
||||||
|
}],
|
||||||
|
output: 'assert.equal(foo, bar);'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: 'assert(foo === bar)',
|
code: 'assert(foo === bar);',
|
||||||
errors: [{
|
errors: [{
|
||||||
message: "'assert.strictEqual' should be used instead of '==='"
|
message: "'assert.strictEqual' should be used instead of '==='"
|
||||||
}]
|
}],
|
||||||
|
output: 'assert.strictEqual(foo, bar);'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: 'assert(foo != bar)',
|
code: 'assert(foo != bar);',
|
||||||
errors: [{
|
errors: [{
|
||||||
message: "'assert.notEqual' should be used instead of '!='"
|
message: "'assert.notEqual' should be used instead of '!='"
|
||||||
}]
|
}],
|
||||||
|
output: 'assert.notEqual(foo, bar);'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: 'assert(foo !== bar)',
|
code: 'assert(foo !== bar);',
|
||||||
errors: [{
|
errors: [{
|
||||||
message: "'assert.notStrictEqual' should be used instead of '!=='"
|
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';
|
'use strict';
|
||||||
|
|
||||||
const astSelector = 'ExpressionStatement[expression.type="CallExpression"]' +
|
const astSelector = 'ExpressionStatement[expression.type="CallExpression"]' +
|
||||||
@ -21,7 +25,19 @@ module.exports = function(context) {
|
|||||||
const arg = node.expression.arguments[0];
|
const arg = node.expression.arguments[0];
|
||||||
const assertMethod = preferedAssertMethod[arg.operator];
|
const assertMethod = preferedAssertMethod[arg.operator];
|
||||||
if (assertMethod) {
|
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