@vitest/coverage-istanbul 3.2.0-beta.2 → 3.2.0
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/index.js +4 -0
- package/dist/provider.js +13 -2
- package/package.json +4 -4
package/dist/index.js
CHANGED
@@ -2,10 +2,13 @@ import { C as COVERAGE_STORE_KEY } from './constants-BCJfMgEg.js';
|
|
2
2
|
|
3
3
|
const mod = {
|
4
4
|
takeCoverage() {
|
5
|
+
// @ts-expect-error -- untyped global
|
5
6
|
return globalThis[COVERAGE_STORE_KEY];
|
6
7
|
},
|
7
8
|
startCoverage() {
|
9
|
+
// @ts-expect-error -- untyped global
|
8
10
|
const coverageMap = globalThis[COVERAGE_STORE_KEY];
|
11
|
+
// When isolated, there are no previous results
|
9
12
|
if (!coverageMap) {
|
10
13
|
return;
|
11
14
|
}
|
@@ -23,6 +26,7 @@ const mod = {
|
|
23
26
|
}
|
24
27
|
},
|
25
28
|
async getProvider() {
|
29
|
+
// to not bundle the provider
|
26
30
|
const providerPath = "./provider.js";
|
27
31
|
const { IstanbulCoverageProvider } = await import(
|
28
32
|
/* @vite-ignore */
|
package/dist/provider.js
CHANGED
@@ -107,7 +107,7 @@ const isAbsolute = function(p) {
|
|
107
107
|
return _IS_ABSOLUTE_RE.test(p);
|
108
108
|
};
|
109
109
|
|
110
|
-
var version = "3.2.0
|
110
|
+
var version = "3.2.0";
|
111
111
|
|
112
112
|
const debug = createDebug("vitest:coverage");
|
113
113
|
class IstanbulCoverageProvider extends BaseCoverageProvider {
|
@@ -139,6 +139,9 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
139
139
|
});
|
140
140
|
}
|
141
141
|
onFileTransform(sourceCode, id, pluginCtx) {
|
142
|
+
// Istanbul/babel cannot instrument CSS - e.g. Vue imports end up here.
|
143
|
+
// File extension itself is .vue, but it contains CSS.
|
144
|
+
// e.g. "Example.vue?vue&type=style&index=0&scoped=f7f04e08&lang.css"
|
142
145
|
if (id.endsWith(".css")) {
|
143
146
|
return;
|
144
147
|
}
|
@@ -147,7 +150,7 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
147
150
|
}
|
148
151
|
const sourceMap = pluginCtx.getCombinedSourcemap();
|
149
152
|
sourceMap.sources = sourceMap.sources.map(removeQueryParameters);
|
150
|
-
sourceCode = sourceCode.replaceAll("_ts_decorate", "/* istanbul ignore next */_ts_decorate");
|
153
|
+
sourceCode = sourceCode.replaceAll("_ts_decorate", "/* istanbul ignore next */_ts_decorate").replaceAll(/(if +\(import\.meta\.vitest\))/g, "/* istanbul ignore next */ $1");
|
151
154
|
const code = this.instrumenter.instrumentSync(sourceCode, id, sourceMap);
|
152
155
|
const map = this.instrumenter.lastSourceMap();
|
153
156
|
return {
|
@@ -167,12 +170,16 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
167
170
|
coverageMapByTransformMode.merge(coverage);
|
168
171
|
},
|
169
172
|
onFinished: async () => {
|
173
|
+
// Source maps can change based on projectName and transform mode.
|
174
|
+
// Coverage transform re-uses source maps so we need to separate transforms from each other.
|
170
175
|
const transformedCoverage = await transformCoverage(coverageMapByTransformMode);
|
171
176
|
coverageMap.merge(transformedCoverage);
|
172
177
|
coverageMapByTransformMode = this.createCoverageMap();
|
173
178
|
},
|
174
179
|
onDebug: debug
|
175
180
|
});
|
181
|
+
// Include untested files when all tests were run (not a single file re-run)
|
182
|
+
// or if previous results are preserved by "cleanOnRerun: false"
|
176
183
|
if (this.options.all && (allTestsRun || !this.options.cleanOnRerun)) {
|
177
184
|
const coveredFiles = coverageMap.files();
|
178
185
|
const uncoveredCoverage = await this.getCoverageMapForUncoveredFiles(coveredFiles);
|
@@ -196,6 +203,7 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
196
203
|
this.ctx.logger.log(c.blue(" % ") + c.dim("Coverage report from ") + c.yellow(this.name));
|
197
204
|
}
|
198
205
|
for (const reporter of this.options.reporter) {
|
206
|
+
// Type assertion required for custom reporters
|
199
207
|
reports.create(reporter[0], {
|
200
208
|
skipFull: this.options.skipFull,
|
201
209
|
projectRoot: this.ctx.config.root,
|
@@ -219,6 +227,8 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
219
227
|
const cacheKey = new Date().getTime();
|
220
228
|
const coverageMap = this.createCoverageMap();
|
221
229
|
const transform = this.createUncoveredFileTransformer(this.ctx);
|
230
|
+
// Note that these cannot be run parallel as synchronous instrumenter.lastFileCoverage
|
231
|
+
// returns the coverage of the last transformed file
|
222
232
|
for (const [index, filename] of uncoveredFiles.entries()) {
|
223
233
|
let timeout;
|
224
234
|
let start;
|
@@ -227,6 +237,7 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
227
237
|
timeout = setTimeout(() => debug(c.bgRed(`File "${filename}" is taking longer than 3s`)), 3e3);
|
228
238
|
debug("Uncovered file %d/%d", index, uncoveredFiles.length);
|
229
239
|
}
|
240
|
+
// Make sure file is not served from cache so that instrumenter loads up requested file coverage
|
230
241
|
await transform(`${filename}?cache=${cacheKey}`);
|
231
242
|
const lastCoverage = this.instrumenter.lastFileCoverage();
|
232
243
|
coverageMap.addFileCoverage(lastCoverage);
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vitest/coverage-istanbul",
|
3
3
|
"type": "module",
|
4
|
-
"version": "3.2.0
|
4
|
+
"version": "3.2.0",
|
5
5
|
"description": "Istanbul coverage provider for Vitest",
|
6
6
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
7
7
|
"license": "MIT",
|
@@ -37,11 +37,11 @@
|
|
37
37
|
"dist"
|
38
38
|
],
|
39
39
|
"peerDependencies": {
|
40
|
-
"vitest": "3.2.0
|
40
|
+
"vitest": "3.2.0"
|
41
41
|
},
|
42
42
|
"dependencies": {
|
43
43
|
"@istanbuljs/schema": "^0.1.3",
|
44
|
-
"debug": "^4.4.
|
44
|
+
"debug": "^4.4.1",
|
45
45
|
"istanbul-lib-coverage": "^3.2.2",
|
46
46
|
"istanbul-lib-instrument": "^6.0.3",
|
47
47
|
"istanbul-lib-report": "^3.0.1",
|
@@ -60,7 +60,7 @@
|
|
60
60
|
"@types/istanbul-reports": "^3.0.4",
|
61
61
|
"@types/test-exclude": "^6.0.2",
|
62
62
|
"pathe": "^2.0.3",
|
63
|
-
"vitest": "3.2.0
|
63
|
+
"vitest": "3.2.0"
|
64
64
|
},
|
65
65
|
"scripts": {
|
66
66
|
"build": "rimraf dist && rollup -c",
|