@vitest/coverage-istanbul 2.1.1 → 2.1.2
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/provider.d.ts +23 -5
- package/dist/provider.js +21 -11
- package/package.json +3 -3
package/dist/provider.d.ts
CHANGED
@@ -4,9 +4,25 @@ import { CoverageMap } from 'istanbul-lib-coverage';
|
|
4
4
|
import { Instrumenter } from 'istanbul-lib-instrument';
|
5
5
|
|
6
6
|
type Options = ResolvedCoverageOptions<'istanbul'>;
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
/**
|
8
|
+
* Holds info about raw coverage results that are stored on file system:
|
9
|
+
*
|
10
|
+
* ```json
|
11
|
+
* "project-a": {
|
12
|
+
* "web": {
|
13
|
+
* "tests/math.test.ts": "coverage-1.json",
|
14
|
+
* "tests/utils.test.ts": "coverage-2.json",
|
15
|
+
* // ^^^^^^^^^^^^^^^ Raw coverage on file system
|
16
|
+
* },
|
17
|
+
* "ssr": { ... },
|
18
|
+
* "browser": { ... },
|
19
|
+
* },
|
20
|
+
* "project-b": ...
|
21
|
+
* ```
|
22
|
+
*/
|
23
|
+
type CoverageFiles = Map<NonNullable<AfterSuiteRunMeta['projectName']> | typeof DEFAULT_PROJECT, Record<AfterSuiteRunMeta['transformMode'], {
|
24
|
+
[TestFilenames: string]: string;
|
25
|
+
}>>;
|
10
26
|
interface TestExclude {
|
11
27
|
new (opts: {
|
12
28
|
cwd?: string | string[];
|
@@ -27,7 +43,7 @@ declare class IstanbulCoverageProvider extends BaseCoverageProvider implements C
|
|
27
43
|
options: Options;
|
28
44
|
instrumenter: Instrumenter;
|
29
45
|
testExclude: InstanceType<TestExclude>;
|
30
|
-
coverageFiles:
|
46
|
+
coverageFiles: CoverageFiles;
|
31
47
|
coverageFilesDirectory: string;
|
32
48
|
pendingPromises: Promise<void>[];
|
33
49
|
initialize(ctx: Vitest): void;
|
@@ -36,10 +52,12 @@ declare class IstanbulCoverageProvider extends BaseCoverageProvider implements C
|
|
36
52
|
code: string;
|
37
53
|
map: any;
|
38
54
|
} | undefined;
|
39
|
-
onAfterSuiteRun({ coverage, transformMode, projectName }: AfterSuiteRunMeta): void;
|
55
|
+
onAfterSuiteRun({ coverage, transformMode, projectName, testFiles }: AfterSuiteRunMeta): void;
|
40
56
|
clean(clean?: boolean): Promise<void>;
|
41
57
|
generateCoverage({ allTestsRun }: ReportContext): Promise<CoverageMap>;
|
42
58
|
reportCoverage(coverageMap: unknown, { allTestsRun }: ReportContext): Promise<void>;
|
59
|
+
private cleanAfterRun;
|
60
|
+
onTestFailure(): Promise<void>;
|
43
61
|
generateReports(coverageMap: CoverageMap, allTestsRun: boolean | undefined): Promise<void>;
|
44
62
|
mergeReports(coverageMaps: unknown[]): Promise<void>;
|
45
63
|
private getCoverageMapForUncoveredFiles;
|
package/dist/provider.js
CHANGED
@@ -108,7 +108,7 @@ const isAbsolute = function(p) {
|
|
108
108
|
return _IS_ABSOLUTE_RE.test(p);
|
109
109
|
};
|
110
110
|
|
111
|
-
var version = "2.1.
|
111
|
+
var version = "2.1.2";
|
112
112
|
|
113
113
|
const DEFAULT_PROJECT = Symbol.for("default-project");
|
114
114
|
const debug = createDebug("vitest:coverage");
|
@@ -214,7 +214,7 @@ Update your dependencies and make sure the versions match.`
|
|
214
214
|
* Note that adding new entries here and requiring on those without
|
215
215
|
* backwards compatibility is a breaking change.
|
216
216
|
*/
|
217
|
-
onAfterSuiteRun({ coverage, transformMode, projectName }) {
|
217
|
+
onAfterSuiteRun({ coverage, transformMode, projectName, testFiles }) {
|
218
218
|
if (!coverage) {
|
219
219
|
return;
|
220
220
|
}
|
@@ -223,14 +223,15 @@ Update your dependencies and make sure the versions match.`
|
|
223
223
|
}
|
224
224
|
let entry = this.coverageFiles.get(projectName || DEFAULT_PROJECT);
|
225
225
|
if (!entry) {
|
226
|
-
entry = { web:
|
226
|
+
entry = { web: {}, ssr: {}, browser: {} };
|
227
227
|
this.coverageFiles.set(projectName || DEFAULT_PROJECT, entry);
|
228
228
|
}
|
229
|
+
const testFilenames = testFiles.join();
|
229
230
|
const filename = resolve(
|
230
231
|
this.coverageFilesDirectory,
|
231
232
|
`coverage-${uniqueId++}.json`
|
232
233
|
);
|
233
|
-
entry[transformMode]
|
234
|
+
entry[transformMode][testFilenames] = filename;
|
234
235
|
const promise = promises.writeFile(filename, JSON.stringify(coverage), "utf-8");
|
235
236
|
this.pendingPromises.push(promise);
|
236
237
|
}
|
@@ -260,12 +261,13 @@ Update your dependencies and make sure the versions match.`
|
|
260
261
|
await Promise.all(this.pendingPromises);
|
261
262
|
this.pendingPromises = [];
|
262
263
|
for (const coveragePerProject of this.coverageFiles.values()) {
|
263
|
-
for (const
|
264
|
+
for (const coverageByTestfiles of [
|
264
265
|
coveragePerProject.ssr,
|
265
266
|
coveragePerProject.web,
|
266
267
|
coveragePerProject.browser
|
267
268
|
]) {
|
268
269
|
const coverageMapByTransformMode = libCoverage.createCoverageMap({});
|
270
|
+
const filenames = Object.values(coverageByTestfiles);
|
269
271
|
for (const chunk of this.toSlices(
|
270
272
|
filenames,
|
271
273
|
this.options.processingConcurrency
|
@@ -288,7 +290,7 @@ Update your dependencies and make sure the versions match.`
|
|
288
290
|
coverageMap.merge(transformedCoverage);
|
289
291
|
}
|
290
292
|
}
|
291
|
-
if (this.options.all && allTestsRun) {
|
293
|
+
if (this.options.all && (allTestsRun || !this.options.cleanOnRerun)) {
|
292
294
|
const coveredFiles = coverageMap.files();
|
293
295
|
const uncoveredCoverage = await this.getCoverageMapForUncoveredFiles(
|
294
296
|
coveredFiles
|
@@ -307,11 +309,19 @@ Update your dependencies and make sure the versions match.`
|
|
307
309
|
);
|
308
310
|
const keepResults = !this.options.cleanOnRerun && this.ctx.config.watch;
|
309
311
|
if (!keepResults) {
|
310
|
-
this.
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
312
|
+
await this.cleanAfterRun();
|
313
|
+
}
|
314
|
+
}
|
315
|
+
async cleanAfterRun() {
|
316
|
+
this.coverageFiles = /* @__PURE__ */ new Map();
|
317
|
+
await promises.rm(this.coverageFilesDirectory, { recursive: true });
|
318
|
+
if (readdirSync(this.options.reportsDirectory).length === 0) {
|
319
|
+
await promises.rm(this.options.reportsDirectory, { recursive: true });
|
320
|
+
}
|
321
|
+
}
|
322
|
+
async onTestFailure() {
|
323
|
+
if (!this.options.reportOnFailure) {
|
324
|
+
await this.cleanAfterRun();
|
315
325
|
}
|
316
326
|
}
|
317
327
|
async generateReports(coverageMap, allTestsRun) {
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vitest/coverage-istanbul",
|
3
3
|
"type": "module",
|
4
|
-
"version": "2.1.
|
4
|
+
"version": "2.1.2",
|
5
5
|
"description": "Istanbul coverage provider for Vitest",
|
6
6
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
7
7
|
"license": "MIT",
|
@@ -37,7 +37,7 @@
|
|
37
37
|
"dist"
|
38
38
|
],
|
39
39
|
"peerDependencies": {
|
40
|
-
"vitest": "2.1.
|
40
|
+
"vitest": "2.1.2"
|
41
41
|
},
|
42
42
|
"dependencies": {
|
43
43
|
"@istanbuljs/schema": "^0.1.3",
|
@@ -59,7 +59,7 @@
|
|
59
59
|
"@types/istanbul-lib-source-maps": "^4.0.4",
|
60
60
|
"@types/istanbul-reports": "^3.0.4",
|
61
61
|
"pathe": "^1.1.2",
|
62
|
-
"vitest": "2.1.
|
62
|
+
"vitest": "2.1.2"
|
63
63
|
},
|
64
64
|
"scripts": {
|
65
65
|
"build": "rimraf dist && rollup -c",
|