Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a33dc81

Browse filesBrowse files
shobhitchittoraMylesBorins
authored andcommitted
tools: add fixer for prefer-assert-iferror.js
PR-URL: #16648 Refs: #16636 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
1 parent 5439154 commit a33dc81
Copy full SHA for a33dc81

File tree

Expand file treeCollapse file tree

2 files changed

+31
-6
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+31
-6
lines changed
Open diff view settings
Collapse file

‎test/parallel/test-eslint-prefer-assert-iferror.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-eslint-prefer-assert-iferror.js
+10-4Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,18 @@ new RuleTester().run('prefer-assert-iferror', rule, {
1414
],
1515
invalid: [
1616
{
17-
code: 'if (err) throw err;',
18-
errors: [{ message: 'Use assert.ifError(err) instead.' }]
17+
code: 'require("assert");\n' +
18+
'if (err) throw err;',
19+
errors: [{ message: 'Use assert.ifError(err) instead.' }],
20+
output: 'require("assert");\n' +
21+
'assert.ifError(err);'
1922
},
2023
{
21-
code: 'if (error) { throw error; }',
22-
errors: [{ message: 'Use assert.ifError(error) instead.' }]
24+
code: 'require("assert");\n' +
25+
'if (error) { throw error; }',
26+
errors: [{ message: 'Use assert.ifError(error) instead.' }],
27+
output: 'require("assert");\n' +
28+
'assert.ifError(error);'
2329
}
2430
]
2531
});
Collapse file

‎tools/eslint-rules/prefer-assert-iferror.js‎

Copy file name to clipboardExpand all lines: tools/eslint-rules/prefer-assert-iferror.js
+21-2Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55

66
'use strict';
77

8+
const utils = require('./rules-utils.js');
9+
810
module.exports = {
911
create(context) {
1012
const sourceCode = context.getSourceCode();
13+
var assertImported = false;
1114

1215
function hasSameTokens(nodeA, nodeB) {
1316
const aTokens = sourceCode.getTokens(nodeA);
@@ -20,8 +23,15 @@ module.exports = {
2023
});
2124
}
2225

26+
function checkAssertNode(node) {
27+
if (utils.isRequired(node, ['assert'])) {
28+
assertImported = true;
29+
}
30+
}
31+
2332
return {
24-
IfStatement(node) {
33+
'CallExpression': (node) => checkAssertNode(node),
34+
'IfStatement': (node) => {
2535
const firstStatement = node.consequent.type === 'BlockStatement' ?
2636
node.consequent.body[0] :
2737
node.consequent;
@@ -30,10 +40,19 @@ module.exports = {
3040
firstStatement.type === 'ThrowStatement' &&
3141
hasSameTokens(node.test, firstStatement.argument)
3242
) {
43+
const argument = sourceCode.getText(node.test);
3344
context.report({
3445
node: firstStatement,
3546
message: 'Use assert.ifError({{argument}}) instead.',
36-
data: { argument: sourceCode.getText(node.test) }
47+
data: { argument },
48+
fix: (fixer) => {
49+
if (assertImported) {
50+
return fixer.replaceText(
51+
node,
52+
`assert.ifError(${argument});`
53+
);
54+
}
55+
}
3756
});
3857
}
3958
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.