Skip to content

Commit 0fb6afc

Browse files
Drop "eslint-plugin-istanbul" and implement as internal ESLint rule (#3388)
1 parent 82ff653 commit 0fb6afc

File tree

5 files changed

+27
-30
lines changed

5 files changed

+27
-30
lines changed

.eslintrc.yml

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ reportUnusedDisableDirectives: true
88
plugins:
99
- internal-rules
1010
- node
11-
- istanbul
1211
- import
1312
settings:
1413
node:
@@ -23,14 +22,7 @@ rules:
2322
internal-rules/only-ascii: error
2423
internal-rules/no-dir-import: error
2524
internal-rules/require-to-string-tag: off
26-
27-
##############################################################################
28-
# `eslint-plugin-istanbul` rule list based on `v0.1.2`
29-
# https://github.com/istanbuljs/eslint-plugin-istanbul#rules
30-
##############################################################################
31-
32-
istanbul/no-ignore-file: error
33-
istanbul/prefer-ignore-reason: error
25+
internal-rules/require-coverage-ignore-reason: error
3426

3527
##############################################################################
3628
# `eslint-plugin-node` rule list based on `v11.1.x`

package-lock.json

Lines changed: 0 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@
6666
"eslint": "7.32.0",
6767
"eslint-plugin-import": "2.25.2",
6868
"eslint-plugin-internal-rules": "file:./resources/eslint-internal-rules",
69-
"eslint-plugin-istanbul": "0.1.2",
7069
"eslint-plugin-node": "11.1.0",
7170
"eslint-plugin-tsdoc": "0.2.14",
7271
"mocha": "9.1.3",

resources/eslint-internal-rules/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
const onlyASCII = require('./only-ascii.js');
44
const noDirImport = require('./no-dir-import.js');
55
const requireToStringTag = require('./require-to-string-tag.js');
6+
const requireCoverageIgnoreReason = require('./require-coverage-ignore-reason.js');
67

78
module.exports = {
89
rules: {
910
'only-ascii': onlyASCII,
1011
'no-dir-import': noDirImport,
1112
'require-to-string-tag': requireToStringTag,
13+
'require-coverage-ignore-reason': requireCoverageIgnoreReason,
1214
},
1315
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'use strict';
2+
3+
module.exports = function requireCoverageIgnoreReason(context) {
4+
const istanbulRegExp = /^\s*istanbul\s+ignore\s+(if|else|next|file)\s+/;
5+
return {
6+
Program() {
7+
const sourceCode = context.getSourceCode();
8+
9+
for (const node of sourceCode.getAllComments()) {
10+
const comment = node.value;
11+
12+
if (comment.match(istanbulRegExp)) {
13+
const reason = comment.replace(istanbulRegExp, '');
14+
if (!reason.match(/\(.+\)$/)) {
15+
context.report({
16+
message: 'Add a reason why code coverage should be ignored',
17+
node,
18+
});
19+
}
20+
}
21+
}
22+
},
23+
};
24+
};

0 commit comments

Comments
 (0)