@vitest/coverage-istanbul 1.6.0 → 2.0.0-beta.10

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 CHANGED
@@ -1,4 +1,4 @@
1
- import { C as COVERAGE_STORE_KEY } from './constants-DBqnqzn-.js';
1
+ import { C as COVERAGE_STORE_KEY } from './constants-BCJfMgEg.js';
2
2
 
3
3
  async function getProvider() {
4
4
  const providerPath = "./provider.js";
@@ -38,8 +38,11 @@ declare class IstanbulCoverageProvider extends BaseCoverageProvider implements C
38
38
  } | undefined;
39
39
  onAfterSuiteRun({ coverage, transformMode, projectName }: AfterSuiteRunMeta): void;
40
40
  clean(clean?: boolean): Promise<void>;
41
- reportCoverage({ allTestsRun }?: ReportContext): Promise<void>;
42
- getCoverageMapForUncoveredFiles(coveredFiles: string[]): Promise<CoverageMap>;
41
+ generateCoverage({ allTestsRun }: ReportContext): Promise<CoverageMap>;
42
+ reportCoverage(coverageMap: unknown, { allTestsRun }: ReportContext): Promise<void>;
43
+ generateReports(coverageMap: CoverageMap, allTestsRun: boolean | undefined): Promise<void>;
44
+ mergeReports(coverageMaps: unknown[]): Promise<void>;
45
+ private getCoverageMapForUncoveredFiles;
43
46
  }
44
47
 
45
48
  export { IstanbulCoverageProvider };
package/dist/provider.js CHANGED
@@ -1,4 +1,4 @@
1
- import { promises, existsSync, writeFileSync } from 'node:fs';
1
+ import { promises, existsSync, readdirSync, writeFileSync } from 'node:fs';
2
2
  import { coverageConfigDefaults, defaultExclude, defaultInclude } from 'vitest/config';
3
3
  import { BaseCoverageProvider } from 'vitest/coverage';
4
4
  import c from 'picocolors';
@@ -10,17 +10,18 @@ import libCoverage from 'istanbul-lib-coverage';
10
10
  import libSourceMaps from 'istanbul-lib-source-maps';
11
11
  import { createInstrumenter } from 'istanbul-lib-instrument';
12
12
  import _TestExclude from 'test-exclude';
13
- import { C as COVERAGE_STORE_KEY } from './constants-DBqnqzn-.js';
13
+ import { C as COVERAGE_STORE_KEY } from './constants-BCJfMgEg.js';
14
14
 
15
+ const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
15
16
  function normalizeWindowsPath(input = "") {
16
- if (!input || !input.includes("\\")) {
17
+ if (!input) {
17
18
  return input;
18
19
  }
19
- return input.replace(/\\/g, "/");
20
+ return input.replace(/\\/g, "/").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());
20
21
  }
21
22
  const _IS_ABSOLUTE_RE = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;
22
23
  function cwd() {
23
- if (typeof process !== "undefined") {
24
+ if (typeof process !== "undefined" && typeof process.cwd === "function") {
24
25
  return process.cwd().replace(/\\/g, "/");
25
26
  }
26
27
  return "/";
@@ -202,7 +203,7 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
202
203
  this.coverageFiles = /* @__PURE__ */ new Map();
203
204
  this.pendingPromises = [];
204
205
  }
205
- async reportCoverage({ allTestsRun } = {}) {
206
+ async generateCoverage({ allTestsRun }) {
206
207
  const coverageMap = libCoverage.createCoverageMap({});
207
208
  let index = 0;
208
209
  const total = this.pendingPromises.length;
@@ -231,6 +232,22 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
231
232
  const uncoveredCoverage = await this.getCoverageMapForUncoveredFiles(coveredFiles);
232
233
  coverageMap.merge(await transformCoverage(uncoveredCoverage));
233
234
  }
235
+ return coverageMap;
236
+ }
237
+ async reportCoverage(coverageMap, { allTestsRun }) {
238
+ await this.generateReports(
239
+ coverageMap || libCoverage.createCoverageMap({}),
240
+ allTestsRun
241
+ );
242
+ const keepResults = !this.options.cleanOnRerun && this.ctx.config.watch;
243
+ if (!keepResults) {
244
+ this.coverageFiles = /* @__PURE__ */ new Map();
245
+ await promises.rm(this.coverageFilesDirectory, { recursive: true });
246
+ if (readdirSync(this.options.reportsDirectory).length === 0)
247
+ await promises.rm(this.options.reportsDirectory, { recursive: true });
248
+ }
249
+ }
250
+ async generateReports(coverageMap, allTestsRun) {
234
251
  const context = libReport.createContext({
235
252
  dir: this.options.reportsDirectory,
236
253
  coverageMap,
@@ -269,18 +286,19 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
269
286
  });
270
287
  }
271
288
  }
272
- const keepResults = !this.options.cleanOnRerun && this.ctx.config.watch;
273
- if (!keepResults) {
274
- this.coverageFiles = /* @__PURE__ */ new Map();
275
- await promises.rm(this.coverageFilesDirectory, { recursive: true });
276
- }
289
+ }
290
+ async mergeReports(coverageMaps) {
291
+ const coverageMap = libCoverage.createCoverageMap({});
292
+ for (const coverage of coverageMaps)
293
+ coverageMap.merge(coverage);
294
+ await this.generateReports(coverageMap, true);
277
295
  }
278
296
  async getCoverageMapForUncoveredFiles(coveredFiles) {
279
297
  const allFiles = await this.testExclude.glob(this.ctx.config.root);
280
298
  let includedFiles = allFiles.map((file) => resolve(this.ctx.config.root, file));
281
299
  if (this.ctx.config.changed)
282
300
  includedFiles = (this.ctx.config.related || []).filter((file) => includedFiles.includes(file));
283
- const uncoveredFiles = includedFiles.filter((file) => !coveredFiles.includes(file));
301
+ const uncoveredFiles = includedFiles.filter((file) => !coveredFiles.includes(file)).sort();
284
302
  const cacheKey = (/* @__PURE__ */ new Date()).getTime();
285
303
  const coverageMap = libCoverage.createCoverageMap({});
286
304
  for (const [index, filename] of uncoveredFiles.entries()) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/coverage-istanbul",
3
3
  "type": "module",
4
- "version": "1.6.0",
4
+ "version": "2.0.0-beta.10",
5
5
  "description": "Istanbul coverage provider for Vitest",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -37,18 +37,18 @@
37
37
  "dist"
38
38
  ],
39
39
  "peerDependencies": {
40
- "vitest": "1.6.0"
40
+ "vitest": "2.0.0-beta.10"
41
41
  },
42
42
  "dependencies": {
43
- "debug": "^4.3.4",
43
+ "debug": "^4.3.5",
44
44
  "istanbul-lib-coverage": "^3.2.2",
45
- "istanbul-lib-instrument": "^6.0.1",
45
+ "istanbul-lib-instrument": "^6.0.2",
46
46
  "istanbul-lib-report": "^3.0.1",
47
47
  "istanbul-lib-source-maps": "^5.0.4",
48
- "istanbul-reports": "^3.1.6",
49
- "magicast": "^0.3.3",
50
- "picocolors": "^1.0.0",
51
- "test-exclude": "^6.0.0"
48
+ "istanbul-reports": "^3.1.7",
49
+ "magicast": "^0.3.4",
50
+ "picocolors": "^1.0.1",
51
+ "test-exclude": "^7.0.1"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@types/debug": "^4.1.12",
@@ -57,8 +57,8 @@
57
57
  "@types/istanbul-lib-report": "^3.0.3",
58
58
  "@types/istanbul-lib-source-maps": "^4.0.4",
59
59
  "@types/istanbul-reports": "^3.0.4",
60
- "pathe": "^1.1.1",
61
- "vitest": "1.6.0"
60
+ "pathe": "^1.1.2",
61
+ "vitest": "2.0.0-beta.10"
62
62
  },
63
63
  "scripts": {
64
64
  "build": "rimraf dist && rollup -c",