GeezerVison is showing github.com — tools: lint rule for assert.fail() · nodejs/node@8fa2029
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: .eslintrc +1Lines changed: 1 addition & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
85 | 85 | prefer-const: 2 |
86 | 86 |
|
87 | 87 | # Custom rules in tools/eslint-rules |
| 88 | + assert-fail-single-argument: 2 |
88 | 89 | new-with-error: [2, "Error", "RangeError", "TypeError", "SyntaxError", "ReferenceError"] |
89 | 90 |
|
90 | 91 |
|
|
Collapse file
Copy file name to clipboard +30Lines changed: 30 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +/** |
| 2 | + * @fileoverview Prohibit use of a single argument only in `assert.fail()`. It |
| 3 | + * is almost always an error. |
| 4 | + * @author Rich Trott |
| 5 | + */ |
| 6 | +'use strict'; |
| 7 | + |
| 8 | +//------------------------------------------------------------------------------ |
| 9 | +// Rule Definition |
| 10 | +//------------------------------------------------------------------------------ |
| 11 | + |
| 12 | +const msg = 'assert.fail() message should be third argument'; |
| 13 | + |
| 14 | +function isAssert(node) { |
| 15 | + return node.callee.object && node.callee.object.name === 'assert'; |
| 16 | +} |
| 17 | + |
| 18 | +function isFail(node) { |
| 19 | + return node.callee.property && node.callee.property.name === 'fail'; |
| 20 | +} |
| 21 | + |
| 22 | +module.exports = function(context) { |
| 23 | + return { |
| 24 | + 'CallExpression': function(node) { |
| 25 | + if (isAssert(node) && isFail(node) && node.arguments.length === 1) { |
| 26 | + context.report(node, msg); |
| 27 | + } |
| 28 | + } |
| 29 | + }; |
| 30 | +}; |