| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 5439154 commit a33dc81
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -14,12 +14,18 @@ new RuleTester().run('prefer-assert-iferror', rule, { | |||
| 14 | 14 | ], | |
| 15 | 15 | invalid: [ | |
| 16 | 16 | { | |
| 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);' | ||
| 19 | 22 | }, | |
| 20 | 23 | { | |
| 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);' | ||
| 23 | 29 | } | |
| 24 | 30 | ] | |
| 25 | 31 | }); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -5,9 +5,12 @@ | |||
| 5 | 5 | ||
| 6 | 6 | 'use strict'; | |
| 7 | 7 | ||
| 8 | + const utils = require('./rules-utils.js'); | ||
| 9 | + | ||
| 8 | 10 | module.exports = { | |
| 9 | 11 | create(context) { | |
| 10 | 12 | const sourceCode = context.getSourceCode(); | |
| 13 | + var assertImported = false; | ||
| 11 | 14 | ||
| 12 | 15 | function hasSameTokens(nodeA, nodeB) { | |
| 13 | 16 | const aTokens = sourceCode.getTokens(nodeA); | |
@@ -20,8 +23,15 @@ module.exports = { | |||
| 20 | 23 | }); | |
| 21 | 24 | } | |
| 22 | 25 | ||
| 26 | + function checkAssertNode(node) { | ||
| 27 | + if (utils.isRequired(node, ['assert'])) { | ||
| 28 | + assertImported = true; | ||
| 29 | + } | ||
| 30 | + } | ||
| 31 | + | ||
| 23 | 32 | return { | |
| 24 | - IfStatement(node) { | ||
| 33 | + 'CallExpression': (node) => checkAssertNode(node), | ||
| 34 | + 'IfStatement': (node) => { | ||
| 25 | 35 | const firstStatement = node.consequent.type === 'BlockStatement' ? | |
| 26 | 36 | node.consequent.body[0] : | |
| 27 | 37 | node.consequent; | |
@@ -30,10 +40,19 @@ module.exports = { | |||
| 30 | 40 | firstStatement.type === 'ThrowStatement' && | |
| 31 | 41 | hasSameTokens(node.test, firstStatement.argument) | |
| 32 | 42 | ) { | |
| 43 | + const argument = sourceCode.getText(node.test); | ||
| 33 | 44 | context.report({ | |
| 34 | 45 | node: firstStatement, | |
| 35 | 46 | 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 | + } | ||
| 37 | 56 | }); | |
| 38 | 57 | } | |
| 39 | 58 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments