@vitest/coverage-istanbul 3.2.0-beta.2 → 3.2.0-beta.3
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 -1
- 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-beta.
|
110
|
+
var version = "3.2.0-beta.3";
|
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,6 +150,7 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
147
150
|
}
|
148
151
|
const sourceMap = pluginCtx.getCombinedSourcemap();
|
149
152
|
sourceMap.sources = sourceMap.sources.map(removeQueryParameters);
|
153
|
+
// Exclude SWC's decorators that are left in source maps
|
150
154
|
sourceCode = sourceCode.replaceAll("_ts_decorate", "/* istanbul ignore next */_ts_decorate");
|
151
155
|
const code = this.instrumenter.instrumentSync(sourceCode, id, sourceMap);
|
152
156
|
const map = this.instrumenter.lastSourceMap();
|
@@ -167,12 +171,16 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
167
171
|
coverageMapByTransformMode.merge(coverage);
|
168
172
|
},
|
169
173
|
onFinished: async () => {
|
174
|
+
// Source maps can change based on projectName and transform mode.
|
175
|
+
// Coverage transform re-uses source maps so we need to separate transforms from each other.
|
170
176
|
const transformedCoverage = await transformCoverage(coverageMapByTransformMode);
|
171
177
|
coverageMap.merge(transformedCoverage);
|
172
178
|
coverageMapByTransformMode = this.createCoverageMap();
|
173
179
|
},
|
174
180
|
onDebug: debug
|
175
181
|
});
|
182
|
+
// Include untested files when all tests were run (not a single file re-run)
|
183
|
+
// or if previous results are preserved by "cleanOnRerun: false"
|
176
184
|
if (this.options.all && (allTestsRun || !this.options.cleanOnRerun)) {
|
177
185
|
const coveredFiles = coverageMap.files();
|
178
186
|
const uncoveredCoverage = await this.getCoverageMapForUncoveredFiles(coveredFiles);
|
@@ -196,6 +204,7 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
196
204
|
this.ctx.logger.log(c.blue(" % ") + c.dim("Coverage report from ") + c.yellow(this.name));
|
197
205
|
}
|
198
206
|
for (const reporter of this.options.reporter) {
|
207
|
+
// Type assertion required for custom reporters
|
199
208
|
reports.create(reporter[0], {
|
200
209
|
skipFull: this.options.skipFull,
|
201
210
|
projectRoot: this.ctx.config.root,
|
@@ -219,6 +228,8 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
219
228
|
const cacheKey = new Date().getTime();
|
220
229
|
const coverageMap = this.createCoverageMap();
|
221
230
|
const transform = this.createUncoveredFileTransformer(this.ctx);
|
231
|
+
// Note that these cannot be run parallel as synchronous instrumenter.lastFileCoverage
|
232
|
+
// returns the coverage of the last transformed file
|
222
233
|
for (const [index, filename] of uncoveredFiles.entries()) {
|
223
234
|
let timeout;
|
224
235
|
let start;
|
@@ -227,6 +238,7 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
227
238
|
timeout = setTimeout(() => debug(c.bgRed(`File "${filename}" is taking longer than 3s`)), 3e3);
|
228
239
|
debug("Uncovered file %d/%d", index, uncoveredFiles.length);
|
229
240
|
}
|
241
|
+
// Make sure file is not served from cache so that instrumenter loads up requested file coverage
|
230
242
|
await transform(`${filename}?cache=${cacheKey}`);
|
231
243
|
const lastCoverage = this.instrumenter.lastFileCoverage();
|
232
244
|
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-beta.
|
4
|
+
"version": "3.2.0-beta.3",
|
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-beta.
|
40
|
+
"vitest": "3.2.0-beta.3"
|
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-beta.
|
63
|
+
"vitest": "3.2.0-beta.3"
|
64
64
|
},
|
65
65
|
"scripts": {
|
66
66
|
"build": "rimraf dist && rollup -c",
|