@plugjs/plug 0.0.26 → 0.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugs/coverage/report.cjs +25 -8
- package/dist/plugs/coverage/report.cjs.map +2 -2
- package/dist/plugs/coverage/report.d.ts +8 -2
- package/dist/plugs/coverage/report.mjs +25 -8
- package/dist/plugs/coverage/report.mjs.map +2 -2
- package/dist/plugs/coverage.cjs +6 -3
- package/dist/plugs/coverage.cjs.map +1 -1
- package/dist/plugs/coverage.mjs +6 -3
- package/dist/plugs/coverage.mjs.map +1 -1
- package/package.json +3 -3
- package/src/plugs/coverage/report.ts +39 -16
- package/src/plugs/coverage.ts +6 -3
|
@@ -32,8 +32,9 @@ var import_log = require("../../log.cjs");
|
|
|
32
32
|
var import_asyncfs = require("../../utils/asyncfs.cjs");
|
|
33
33
|
var COVERAGE_SKIPPED = -2;
|
|
34
34
|
var COVERAGE_IGNORED = -1;
|
|
35
|
-
var ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next)(\s|$)/g;
|
|
35
|
+
var ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next|file)(\s|$)/g;
|
|
36
36
|
async function coverageReport(analyser, sourceFiles, log) {
|
|
37
|
+
var _a;
|
|
37
38
|
const results = {};
|
|
38
39
|
const nodes = {
|
|
39
40
|
coveredNodes: 0,
|
|
@@ -127,8 +128,8 @@ async function coverageReport(analyser, sourceFiles, log) {
|
|
|
127
128
|
}
|
|
128
129
|
};
|
|
129
130
|
const visitNode = (node, depth) => {
|
|
130
|
-
var
|
|
131
|
-
log.trace("-".padStart(depth * 2 + 1, " "), node.type, `${(
|
|
131
|
+
var _a2, _b;
|
|
132
|
+
log.trace("-".padStart(depth * 2 + 1, " "), node.type, `${(_a2 = node.loc) == null ? void 0 : _a2.start.line}:${(_b = node.loc) == null ? void 0 : _b.start.column}`);
|
|
132
133
|
if ((0, import_types.isFile)(node))
|
|
133
134
|
return visitChildren(node, depth);
|
|
134
135
|
if ((0, import_types.isProgram)(node))
|
|
@@ -187,7 +188,23 @@ async function coverageReport(analyser, sourceFiles, log) {
|
|
|
187
188
|
nodeCoverage.coveredNodes = 0;
|
|
188
189
|
nodeCoverage.missingNodes = 0;
|
|
189
190
|
nodeCoverage.ignoredNodes = 0;
|
|
190
|
-
|
|
191
|
+
let ignoreFileCoverage = false;
|
|
192
|
+
for (const comment of ((_a = tree.program.body[0]) == null ? void 0 : _a.leadingComments) || []) {
|
|
193
|
+
for (const match of comment.value.matchAll(ignoreRegexp)) {
|
|
194
|
+
if (match[2] === "file") {
|
|
195
|
+
ignoreFileCoverage = true;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (ignoreFileCoverage)
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
if (ignoreFileCoverage) {
|
|
203
|
+
setCodeCoverage(tree.program, COVERAGE_IGNORED, true);
|
|
204
|
+
} else {
|
|
205
|
+
visitChildren(tree.program, -1);
|
|
206
|
+
}
|
|
207
|
+
setCodeCoverage(tree.comments, COVERAGE_SKIPPED, false);
|
|
191
208
|
updateNodeCoverageResult(nodeCoverage);
|
|
192
209
|
nodes.coveredNodes += nodeCoverage.coveredNodes;
|
|
193
210
|
nodes.missingNodes += nodeCoverage.missingNodes;
|
|
@@ -202,11 +219,11 @@ function updateNodeCoverageResult(result) {
|
|
|
202
219
|
const { coveredNodes, missingNodes, ignoredNodes } = result;
|
|
203
220
|
const totalNodes = result.totalNodes = coveredNodes + missingNodes + ignoredNodes;
|
|
204
221
|
if (totalNodes === 0) {
|
|
205
|
-
result.coverage =
|
|
206
|
-
} else if (totalNodes
|
|
207
|
-
result.coverage =
|
|
222
|
+
result.coverage = null;
|
|
223
|
+
} else if (totalNodes === ignoredNodes) {
|
|
224
|
+
result.coverage = null;
|
|
208
225
|
} else {
|
|
209
|
-
result.coverage =
|
|
226
|
+
result.coverage = Math.floor(100 * coveredNodes / (totalNodes - ignoredNodes));
|
|
210
227
|
}
|
|
211
228
|
}
|
|
212
229
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/plugs/coverage/report.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA8B;AAE9B,mBAYO;AACP,oBAAsB;AAEtB,iBAAmB;AACnB,qBAAyB;AAiBlB,IAAM,mBAAmB;AAMzB,IAAM,mBAAmB;
|
|
5
|
-
"names": []
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["_a"]
|
|
6
6
|
}
|
|
@@ -21,8 +21,14 @@ export interface NodeCoverageResult {
|
|
|
21
21
|
ignoredNodes: number;
|
|
22
22
|
/** Total number of nodes (sum of `covered`, `missing` and `ignored`) */
|
|
23
23
|
totalNodes: number;
|
|
24
|
-
/**
|
|
25
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Percentage of code coverage (covered as a % of total - ignored nodes)
|
|
26
|
+
*
|
|
27
|
+
* A `null` value for this field indicates that no coverage data was generated
|
|
28
|
+
* either because the source was all ignored or skipped (e.g. when using
|
|
29
|
+
* `coverage ignore file` or when covering a TS source only with types).
|
|
30
|
+
*/
|
|
31
|
+
coverage: number | null;
|
|
26
32
|
}
|
|
27
33
|
/** Per-file coverage result */
|
|
28
34
|
export interface CoverageResult {
|
|
@@ -18,8 +18,9 @@ import { $p } from "../../log.mjs";
|
|
|
18
18
|
import { readFile } from "../../utils/asyncfs.mjs";
|
|
19
19
|
var COVERAGE_SKIPPED = -2;
|
|
20
20
|
var COVERAGE_IGNORED = -1;
|
|
21
|
-
var ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next)(\s|$)/g;
|
|
21
|
+
var ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next|file)(\s|$)/g;
|
|
22
22
|
async function coverageReport(analyser, sourceFiles, log) {
|
|
23
|
+
var _a;
|
|
23
24
|
const results = {};
|
|
24
25
|
const nodes = {
|
|
25
26
|
coveredNodes: 0,
|
|
@@ -113,8 +114,8 @@ async function coverageReport(analyser, sourceFiles, log) {
|
|
|
113
114
|
}
|
|
114
115
|
};
|
|
115
116
|
const visitNode = (node, depth) => {
|
|
116
|
-
var
|
|
117
|
-
log.trace("-".padStart(depth * 2 + 1, " "), node.type, `${(
|
|
117
|
+
var _a2, _b;
|
|
118
|
+
log.trace("-".padStart(depth * 2 + 1, " "), node.type, `${(_a2 = node.loc) == null ? void 0 : _a2.start.line}:${(_b = node.loc) == null ? void 0 : _b.start.column}`);
|
|
118
119
|
if (isFile(node))
|
|
119
120
|
return visitChildren(node, depth);
|
|
120
121
|
if (isProgram(node))
|
|
@@ -173,7 +174,23 @@ async function coverageReport(analyser, sourceFiles, log) {
|
|
|
173
174
|
nodeCoverage.coveredNodes = 0;
|
|
174
175
|
nodeCoverage.missingNodes = 0;
|
|
175
176
|
nodeCoverage.ignoredNodes = 0;
|
|
176
|
-
|
|
177
|
+
let ignoreFileCoverage = false;
|
|
178
|
+
for (const comment of ((_a = tree.program.body[0]) == null ? void 0 : _a.leadingComments) || []) {
|
|
179
|
+
for (const match of comment.value.matchAll(ignoreRegexp)) {
|
|
180
|
+
if (match[2] === "file") {
|
|
181
|
+
ignoreFileCoverage = true;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (ignoreFileCoverage)
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
if (ignoreFileCoverage) {
|
|
189
|
+
setCodeCoverage(tree.program, COVERAGE_IGNORED, true);
|
|
190
|
+
} else {
|
|
191
|
+
visitChildren(tree.program, -1);
|
|
192
|
+
}
|
|
193
|
+
setCodeCoverage(tree.comments, COVERAGE_SKIPPED, false);
|
|
177
194
|
updateNodeCoverageResult(nodeCoverage);
|
|
178
195
|
nodes.coveredNodes += nodeCoverage.coveredNodes;
|
|
179
196
|
nodes.missingNodes += nodeCoverage.missingNodes;
|
|
@@ -188,11 +205,11 @@ function updateNodeCoverageResult(result) {
|
|
|
188
205
|
const { coveredNodes, missingNodes, ignoredNodes } = result;
|
|
189
206
|
const totalNodes = result.totalNodes = coveredNodes + missingNodes + ignoredNodes;
|
|
190
207
|
if (totalNodes === 0) {
|
|
191
|
-
result.coverage =
|
|
192
|
-
} else if (totalNodes
|
|
193
|
-
result.coverage =
|
|
208
|
+
result.coverage = null;
|
|
209
|
+
} else if (totalNodes === ignoredNodes) {
|
|
210
|
+
result.coverage = null;
|
|
194
211
|
} else {
|
|
195
|
-
result.coverage =
|
|
212
|
+
result.coverage = Math.floor(100 * coveredNodes / (totalNodes - ignoredNodes));
|
|
196
213
|
}
|
|
197
214
|
}
|
|
198
215
|
export {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/plugs/coverage/report.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,qBAAqB;AAE9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,aAAa;AAEtB,SAAS,UAAU;AACnB,SAAS,gBAAgB;AAiBlB,IAAM,mBAAmB;AAMzB,IAAM,mBAAmB;
|
|
5
|
-
"names": []
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["_a"]
|
|
6
6
|
}
|
package/dist/plugs/coverage.cjs
CHANGED
|
@@ -72,9 +72,9 @@ var import_report = require("./coverage/report.cjs");
|
|
|
72
72
|
let fileWarnings = 0;
|
|
73
73
|
const _report = context.log.report("Coverage report");
|
|
74
74
|
for (const [_file, result] of Object.entries(report.results)) {
|
|
75
|
-
const { coverage
|
|
75
|
+
const { coverage } = result.nodeCoverage;
|
|
76
76
|
const file = _file;
|
|
77
|
-
if (
|
|
77
|
+
if (coverage == null) {
|
|
78
78
|
_report.annotate(import_log.NOTICE, file, "n/a");
|
|
79
79
|
} else if (coverage < minimumFileCoverage) {
|
|
80
80
|
_report.annotate(import_log.ERROR, file, `${coverage} %`);
|
|
@@ -86,7 +86,10 @@ var import_report = require("./coverage/report.cjs");
|
|
|
86
86
|
_report.annotate(import_log.NOTICE, file, `${coverage} %`);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
if (report.nodes.coverage
|
|
89
|
+
if (report.nodes.coverage == null) {
|
|
90
|
+
const message = "No coverage data collected";
|
|
91
|
+
_report.add({ level: import_log.WARN, message });
|
|
92
|
+
} else if (report.nodes.coverage < minimumCoverage) {
|
|
90
93
|
const message = `${(0, import_log.$red)(`${report.nodes.coverage}%`)} does not meet minimum coverage ${(0, import_log.$gry)(`(${minimumCoverage}%)`)}`;
|
|
91
94
|
_report.add({ level: import_log.ERROR, message });
|
|
92
95
|
} else if (report.nodes.coverage < optimalCoverage) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/plugs/coverage.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,uBAAoB;AAEpB,uBAAmC;AAEnC,mBAAsB;AACtB,iBAA+D;AAC/D,mBAAoC;AACpC,kBAAwB;AACxB,kBAAqB;AACrB,sBAA+B;AAC/B,oBAA+B;AAAA,IA8D/B,qBAAQ,YAAY,MAAM,SAA4C;AAAA,EAEpE,YACqB,cACA,WAA2C,CAAC,GAC/D;AAFmB;AACA;AAAA,EAClB;AAAA,EAEH,MAAM,KAAK,OAAc,SAA8C;AACrE,UAAM,cAAc,QAAQ,QAAQ,KAAK,YAAY;AACrD,UAAM,gBAAgC,CAAC;AACvC,qBAAiB,YAAQ,kBAAK,aAAa,CAAE,iBAAkB,CAAC,GAAG;AACjE,oBAAc,SAAK,kCAAoB,aAAa,IAAI,CAAC;AAAA,IAC3D;AAEA,QAAI,cAAc,WAAW,GAAG;AAC9B,YAAM,QAAQ,IAAI,KAAK,kCAA8B,eAAG,WAAW,GAAG;AAAA,IACxE;AAEA,UAAM,cAAc,CAAE,GAAG,MAAM,cAAc,CAAE;AAE/C,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,WAAW,UAAM;AAAA,MACnB;AAAA,MACA;AAAA,MACA,KAAK,SAAS,iBAAiB;AAAA,MAC/B,QAAQ;AAAA,IACZ;AACA,YAAQ,IAAI,KAAK,UAAU,cAAc,QAAQ,sBAAkB,gBAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAExF,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,SAAS,UAAM,8BAAe,UAAU,aAAa,QAAQ,GAAG;AACtE,YAAQ,IAAI,KAAK,YAAY,YAAY,QAAQ,oBAAgB,gBAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAEtF,aAAS,QAAQ;AAEjB,UAAM;AAAA,MACJ,kBAAkB;AAAA,MAClB,sBAAsB;AAAA,MACtB,kBAAkB,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAAA,MACxD,sBAAsB,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAAA,IAClE,IAAI,KAAK;AAET,QAAI,MAAM;AACV,eAAW,QAAQ,QAAQ;AACzB,UAAI,KAAK,SAAS;AAAK,cAAM,KAAK;AAAA,IACpC;AAEA,QAAI,YAAY;AAChB,eAAW,QAAQ,OAAO,SAAS;AACjC,UAAI,KAAK,SAAS;AAAW,oBAAY,KAAK;AAAA,IAChD;AAEA,QAAI,aAAa;AACjB,QAAI,eAAe;AACnB,UAAM,UAAU,QAAQ,IAAI,OAAO,iBAAiB;AAEpD,eAAW,CAAE,OAAO,MAAO,KAAK,OAAO,QAAQ,OAAO,OAAO,GAAG;AAC9D,YAAM,EAAE,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/plugs/coverage.mjs
CHANGED
|
@@ -55,9 +55,9 @@ install("coverage", class Coverage {
|
|
|
55
55
|
let fileWarnings = 0;
|
|
56
56
|
const _report = context.log.report("Coverage report");
|
|
57
57
|
for (const [_file, result] of Object.entries(report.results)) {
|
|
58
|
-
const { coverage
|
|
58
|
+
const { coverage } = result.nodeCoverage;
|
|
59
59
|
const file = _file;
|
|
60
|
-
if (
|
|
60
|
+
if (coverage == null) {
|
|
61
61
|
_report.annotate(NOTICE, file, "n/a");
|
|
62
62
|
} else if (coverage < minimumFileCoverage) {
|
|
63
63
|
_report.annotate(ERROR, file, `${coverage} %`);
|
|
@@ -69,7 +69,10 @@ install("coverage", class Coverage {
|
|
|
69
69
|
_report.annotate(NOTICE, file, `${coverage} %`);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
if (report.nodes.coverage
|
|
72
|
+
if (report.nodes.coverage == null) {
|
|
73
|
+
const message = "No coverage data collected";
|
|
74
|
+
_report.add({ level: WARN, message });
|
|
75
|
+
} else if (report.nodes.coverage < minimumCoverage) {
|
|
73
76
|
const message = `${$red(`${report.nodes.coverage}%`)} does not meet minimum coverage ${$gry(`(${minimumCoverage}%)`)}`;
|
|
74
77
|
_report.add({ level: ERROR, message });
|
|
75
78
|
} else if (report.nodes.coverage < optimalCoverage) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/plugs/coverage.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,WAAW;AAEpB,SAAS,MAAM,oBAAoB;AAEnC,SAAS,aAAa;AACtB,SAAS,MAAM,KAAK,IAAI,MAAM,MAAM,OAAO,QAAQ,YAAY;AAC/D,SAAS,2BAA2B;AACpC,SAAS,eAAe;AACxB,SAAS,YAAY;AACrB,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AA8D/B,QAAQ,YAAY,MAAM,SAA4C;AAAA,EAEpE,YACqB,cACA,WAA2C,CAAC,GAC/D;AAFmB;AACA;AAAA,EAClB;AAAA,EAEH,MAAM,KAAK,OAAc,SAA8C;AACrE,UAAM,cAAc,QAAQ,QAAQ,KAAK,YAAY;AACrD,UAAM,gBAAgC,CAAC;AACvC,qBAAiB,QAAQ,KAAK,aAAa,CAAE,iBAAkB,CAAC,GAAG;AACjE,oBAAc,KAAK,oBAAoB,aAAa,IAAI,CAAC;AAAA,IAC3D;AAEA,QAAI,cAAc,WAAW,GAAG;AAC9B,YAAM,QAAQ,IAAI,KAAK,8BAA8B,GAAG,WAAW,GAAG;AAAA,IACxE;AAEA,UAAM,cAAc,CAAE,GAAG,MAAM,cAAc,CAAE;AAE/C,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,WAAW,MAAM;AAAA,MACnB;AAAA,MACA;AAAA,MACA,KAAK,SAAS,iBAAiB;AAAA,MAC/B,QAAQ;AAAA,IACZ;AACA,YAAQ,IAAI,KAAK,UAAU,cAAc,QAAQ,kBAAkB,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAExF,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,SAAS,MAAM,eAAe,UAAU,aAAa,QAAQ,GAAG;AACtE,YAAQ,IAAI,KAAK,YAAY,YAAY,QAAQ,gBAAgB,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAEtF,aAAS,QAAQ;AAEjB,UAAM;AAAA,MACJ,kBAAkB;AAAA,MAClB,sBAAsB;AAAA,MACtB,kBAAkB,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAAA,MACxD,sBAAsB,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAAA,IAClE,IAAI,KAAK;AAET,QAAI,MAAM;AACV,eAAW,QAAQ,QAAQ;AACzB,UAAI,KAAK,SAAS;AAAK,cAAM,KAAK;AAAA,IACpC;AAEA,QAAI,YAAY;AAChB,eAAW,QAAQ,OAAO,SAAS;AACjC,UAAI,KAAK,SAAS;AAAW,oBAAY,KAAK;AAAA,IAChD;AAEA,QAAI,aAAa;AACjB,QAAI,eAAe;AACnB,UAAM,UAAU,QAAQ,IAAI,OAAO,iBAAiB;AAEpD,eAAW,CAAE,OAAO,MAAO,KAAK,OAAO,QAAQ,OAAO,OAAO,GAAG;AAC9D,YAAM,EAAE,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plugjs/plug",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.27",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"author": "",
|
|
29
29
|
"license": "ISC",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@babel/parser": "^7.20.
|
|
31
|
+
"@babel/parser": "^7.20.1",
|
|
32
32
|
"@babel/types": "^7.20.0",
|
|
33
|
-
"@plugjs/cov8-html": "^0.0.
|
|
33
|
+
"@plugjs/cov8-html": "^0.0.5",
|
|
34
34
|
"@types/mocha": "^10.0.0",
|
|
35
35
|
"@types/node": "<17",
|
|
36
36
|
"diff": "^5.1.0",
|
|
@@ -51,8 +51,14 @@ export interface NodeCoverageResult {
|
|
|
51
51
|
ignoredNodes: number,
|
|
52
52
|
/** Total number of nodes (sum of `covered`, `missing` and `ignored`) */
|
|
53
53
|
totalNodes: number,
|
|
54
|
-
/**
|
|
55
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Percentage of code coverage (covered as a % of total - ignored nodes)
|
|
56
|
+
*
|
|
57
|
+
* A `null` value for this field indicates that no coverage data was generated
|
|
58
|
+
* either because the source was all ignored or skipped (e.g. when using
|
|
59
|
+
* `coverage ignore file` or when covering a TS source only with types).
|
|
60
|
+
*/
|
|
61
|
+
coverage: number | null,
|
|
56
62
|
}
|
|
57
63
|
|
|
58
64
|
/** Per-file coverage result */
|
|
@@ -85,10 +91,10 @@ export interface CoverageReport {
|
|
|
85
91
|
* ========================================================================== */
|
|
86
92
|
|
|
87
93
|
/** Tokens for `coverage ignore xxx`, this should be self-explanatory */
|
|
88
|
-
type IgnoreCoverage = 'test' | 'if' | 'else' | 'try' | 'catch' | 'finally' | 'next'
|
|
94
|
+
type IgnoreCoverage = 'test' | 'if' | 'else' | 'try' | 'catch' | 'finally' | 'next' | 'file'
|
|
89
95
|
|
|
90
96
|
/** Regular expression matching strings like `coverage ignore xxx` */
|
|
91
|
-
const ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next)(\s|$)/g
|
|
97
|
+
const ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next|file)(\s|$)/g
|
|
92
98
|
|
|
93
99
|
/* ========================================================================== *
|
|
94
100
|
* EXPORTED CONSTANTS AND TYPES *
|
|
@@ -304,16 +310,33 @@ export async function coverageReport(
|
|
|
304
310
|
nodeCoverage.missingNodes = 0
|
|
305
311
|
nodeCoverage.ignoredNodes = 0
|
|
306
312
|
|
|
307
|
-
/*
|
|
308
|
-
|
|
313
|
+
/* Check if one of the first comments is "coverage ignore file" */
|
|
314
|
+
let ignoreFileCoverage = false
|
|
315
|
+
for (const comment of tree.program.body[0]?.leadingComments || []) {
|
|
316
|
+
for (const match of comment.value.matchAll(ignoreRegexp)) {
|
|
317
|
+
if (match[2] === 'file') {
|
|
318
|
+
ignoreFileCoverage = true
|
|
319
|
+
break
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/* Already matched "coverage ignore file", skip the rest */
|
|
323
|
+
if (ignoreFileCoverage) break
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/* If we found a "coverage ignore file" at the beginning, ignore the file */
|
|
327
|
+
if (ignoreFileCoverage) {
|
|
328
|
+
setCodeCoverage(tree.program, COVERAGE_IGNORED, true)
|
|
329
|
+
} else {
|
|
330
|
+
visitChildren(tree.program, -1)
|
|
331
|
+
}
|
|
309
332
|
|
|
310
333
|
/*
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
334
|
+
* As comments are mixed within codes (and do not get visited in the
|
|
335
|
+
* tree) we force-skip them _AFTER_ the tree is visited, otherwise (for
|
|
336
|
+
* example) a comment within a block will be shown with the coverage of
|
|
337
|
+
* the block itself.
|
|
338
|
+
*/
|
|
339
|
+
setCodeCoverage(tree.comments, COVERAGE_SKIPPED, false)
|
|
317
340
|
|
|
318
341
|
/* Update nodes coverage results */
|
|
319
342
|
updateNodeCoverageResult(nodeCoverage)
|
|
@@ -336,10 +359,10 @@ function updateNodeCoverageResult(result: NodeCoverageResult): void {
|
|
|
336
359
|
const { coveredNodes, missingNodes, ignoredNodes } = result
|
|
337
360
|
const totalNodes = result.totalNodes = coveredNodes + missingNodes + ignoredNodes
|
|
338
361
|
if (totalNodes === 0) {
|
|
339
|
-
result.coverage =
|
|
340
|
-
} else if (totalNodes
|
|
341
|
-
result.coverage =
|
|
362
|
+
result.coverage = null // No "total" nodes, means all ignored
|
|
363
|
+
} else if (totalNodes === ignoredNodes) {
|
|
364
|
+
result.coverage = null // All nodes were ignored (e.g. coverage ignore file)
|
|
342
365
|
} else {
|
|
343
|
-
result.coverage =
|
|
366
|
+
result.coverage = Math.floor((100 * coveredNodes) / (totalNodes - ignoredNodes))
|
|
344
367
|
}
|
|
345
368
|
}
|
package/src/plugs/coverage.ts
CHANGED
|
@@ -127,10 +127,10 @@ install('coverage', class Coverage implements Plug<Files | undefined> {
|
|
|
127
127
|
const _report = context.log.report('Coverage report')
|
|
128
128
|
|
|
129
129
|
for (const [ _file, result ] of Object.entries(report.results)) {
|
|
130
|
-
const { coverage
|
|
130
|
+
const { coverage } = result.nodeCoverage
|
|
131
131
|
const file = _file as AbsolutePath
|
|
132
132
|
|
|
133
|
-
if (
|
|
133
|
+
if (coverage == null) {
|
|
134
134
|
_report.annotate(NOTICE, file, 'n/a')
|
|
135
135
|
} else if (coverage < minimumFileCoverage) {
|
|
136
136
|
_report.annotate(ERROR, file, `${coverage} %`)
|
|
@@ -143,7 +143,10 @@ install('coverage', class Coverage implements Plug<Files | undefined> {
|
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
if (report.nodes.coverage
|
|
146
|
+
if (report.nodes.coverage == null) {
|
|
147
|
+
const message = 'No coverage data collected'
|
|
148
|
+
_report.add({ level: WARN, message })
|
|
149
|
+
} else if (report.nodes.coverage < minimumCoverage) {
|
|
147
150
|
const message = `${$red(`${report.nodes.coverage}%`)} does not meet minimum coverage ${$gry(`(${minimumCoverage}%)`)}`
|
|
148
151
|
_report.add({ level: ERROR, message })
|
|
149
152
|
} else if (report.nodes.coverage < optimalCoverage) {
|