@vitest/coverage-istanbul 3.2.0-beta.1 → 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 +18 -3
- 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,11 +139,18 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
139
139
|
});
|
140
140
|
}
|
141
141
|
onFileTransform(sourceCode, id, pluginCtx) {
|
142
|
-
|
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"
|
145
|
+
if (id.endsWith(".css")) {
|
146
|
+
return;
|
147
|
+
}
|
148
|
+
if (!this.testExclude.shouldInstrument(removeQueryParameters(id))) {
|
143
149
|
return;
|
144
150
|
}
|
145
151
|
const sourceMap = pluginCtx.getCombinedSourcemap();
|
146
152
|
sourceMap.sources = sourceMap.sources.map(removeQueryParameters);
|
153
|
+
// Exclude SWC's decorators that are left in source maps
|
147
154
|
sourceCode = sourceCode.replaceAll("_ts_decorate", "/* istanbul ignore next */_ts_decorate");
|
148
155
|
const code = this.instrumenter.instrumentSync(sourceCode, id, sourceMap);
|
149
156
|
const map = this.instrumenter.lastSourceMap();
|
@@ -164,12 +171,16 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
164
171
|
coverageMapByTransformMode.merge(coverage);
|
165
172
|
},
|
166
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.
|
167
176
|
const transformedCoverage = await transformCoverage(coverageMapByTransformMode);
|
168
177
|
coverageMap.merge(transformedCoverage);
|
169
178
|
coverageMapByTransformMode = this.createCoverageMap();
|
170
179
|
},
|
171
180
|
onDebug: debug
|
172
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"
|
173
184
|
if (this.options.all && (allTestsRun || !this.options.cleanOnRerun)) {
|
174
185
|
const coveredFiles = coverageMap.files();
|
175
186
|
const uncoveredCoverage = await this.getCoverageMapForUncoveredFiles(coveredFiles);
|
@@ -193,6 +204,7 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
193
204
|
this.ctx.logger.log(c.blue(" % ") + c.dim("Coverage report from ") + c.yellow(this.name));
|
194
205
|
}
|
195
206
|
for (const reporter of this.options.reporter) {
|
207
|
+
// Type assertion required for custom reporters
|
196
208
|
reports.create(reporter[0], {
|
197
209
|
skipFull: this.options.skipFull,
|
198
210
|
projectRoot: this.ctx.config.root,
|
@@ -216,6 +228,8 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
216
228
|
const cacheKey = new Date().getTime();
|
217
229
|
const coverageMap = this.createCoverageMap();
|
218
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
|
219
233
|
for (const [index, filename] of uncoveredFiles.entries()) {
|
220
234
|
let timeout;
|
221
235
|
let start;
|
@@ -224,7 +238,8 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
|
|
224
238
|
timeout = setTimeout(() => debug(c.bgRed(`File "${filename}" is taking longer than 3s`)), 3e3);
|
225
239
|
debug("Uncovered file %d/%d", index, uncoveredFiles.length);
|
226
240
|
}
|
227
|
-
|
241
|
+
// Make sure file is not served from cache so that instrumenter loads up requested file coverage
|
242
|
+
await transform(`${filename}?cache=${cacheKey}`);
|
228
243
|
const lastCoverage = this.instrumenter.lastFileCoverage();
|
229
244
|
coverageMap.addFileCoverage(lastCoverage);
|
230
245
|
if (debug.enabled) {
|
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",
|