@vitest/coverage-v8 3.0.8 → 3.1.0-beta.1

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.
@@ -6,20 +6,20 @@ import TestExclude from 'test-exclude';
6
6
  import { BaseCoverageProvider } from 'vitest/coverage';
7
7
 
8
8
  interface ScriptCoverageWithOffset extends Profiler.ScriptCoverage {
9
- startOffset: number;
9
+ startOffset: number;
10
10
  }
11
- declare class V8CoverageProvider extends BaseCoverageProvider<ResolvedCoverageOptions<'v8'>> implements CoverageProvider {
12
- name: "v8";
13
- version: string;
14
- testExclude: InstanceType<typeof TestExclude>;
15
- initialize(ctx: Vitest): void;
16
- createCoverageMap(): CoverageMap;
17
- generateCoverage({ allTestsRun }: ReportContext): Promise<CoverageMap>;
18
- generateReports(coverageMap: CoverageMap, allTestsRun?: boolean): Promise<void>;
19
- parseConfigModule(configFilePath: string): Promise<ProxifiedModule<any>>;
20
- private getUntestedFiles;
21
- private getSources;
22
- private convertCoverage;
11
+ declare class V8CoverageProvider extends BaseCoverageProvider<ResolvedCoverageOptions<"v8">> implements CoverageProvider {
12
+ name: "v8";
13
+ version: string;
14
+ testExclude: InstanceType<typeof TestExclude>;
15
+ initialize(ctx: Vitest): void;
16
+ createCoverageMap(): CoverageMap;
17
+ generateCoverage({ allTestsRun }: ReportContext): Promise<CoverageMap>;
18
+ generateReports(coverageMap: CoverageMap, allTestsRun?: boolean): Promise<void>;
19
+ parseConfigModule(configFilePath: string): Promise<ProxifiedModule<any>>;
20
+ private getUntestedFiles;
21
+ private getSources;
22
+ private convertCoverage;
23
23
  }
24
24
 
25
25
  export { type ScriptCoverageWithOffset, V8CoverageProvider };
package/dist/provider.js CHANGED
@@ -2539,7 +2539,7 @@ function cleanUrl(url) {
2539
2539
  "wasi"
2540
2540
  ]);
2541
2541
 
2542
- var version = "3.0.8";
2542
+ var version = "3.1.0-beta.1";
2543
2543
 
2544
2544
  const VITE_EXPORTS_LINE_PATTERN = /Object\.defineProperty\(__vite_ssr_exports__.*\n/g;
2545
2545
  const DECORATOR_METADATA_PATTERN = /_ts_metadata\("design:paramtypes", \[[^\]]*\]\),*/g;
@@ -2591,8 +2591,7 @@ class V8CoverageProvider extends BaseCoverageProvider {
2591
2591
  if (this.options.all && (allTestsRun || !this.options.cleanOnRerun)) {
2592
2592
  const coveredFiles = coverageMap.files();
2593
2593
  const untestedCoverage = await this.getUntestedFiles(coveredFiles);
2594
- const converted = await this.convertCoverage(untestedCoverage);
2595
- coverageMap.merge(await transformCoverage(converted));
2594
+ coverageMap.merge(await transformCoverage(untestedCoverage));
2596
2595
  }
2597
2596
  if (this.options.excludeAfterRemap) {
2598
2597
  coverageMap.filter((filename) => this.testExclude.shouldInstrument(filename));
@@ -2648,50 +2647,48 @@ class V8CoverageProvider extends BaseCoverageProvider {
2648
2647
  );
2649
2648
  }
2650
2649
  const uncoveredFiles = includedFiles.map((file) => pathToFileURL(file)).filter((file) => !testedFiles.includes(file.pathname));
2651
- let merged = { result: [] };
2652
2650
  let index = 0;
2651
+ const coverageMap = this.createCoverageMap();
2653
2652
  for (const chunk of this.toSlices(uncoveredFiles, this.options.processingConcurrency)) {
2654
2653
  if (debug.enabled) {
2655
2654
  index += chunk.length;
2656
2655
  debug("Uncovered files %d/%d", index, uncoveredFiles.length);
2657
2656
  }
2658
- const coverages = await Promise.all(
2659
- chunk.map(async (filename) => {
2660
- const { originalSource } = await this.getSources(
2661
- filename.href,
2662
- transformResults,
2663
- transform
2664
- );
2665
- const coverage = {
2666
- url: filename.href,
2667
- scriptId: "0",
2668
- // Create a made up function to mark whole file as uncovered. Note that this does not exist in source maps.
2669
- functions: [
2657
+ await Promise.all(chunk.map(async (filename) => {
2658
+ const sources = await this.getSources(
2659
+ filename.href,
2660
+ transformResults,
2661
+ transform
2662
+ );
2663
+ const converter = v8ToIstanbul(
2664
+ filename.href,
2665
+ 0,
2666
+ sources,
2667
+ void 0,
2668
+ this.options.ignoreEmptyLines
2669
+ );
2670
+ await converter.load();
2671
+ try {
2672
+ converter.applyCoverage([{
2673
+ ranges: [
2670
2674
  {
2671
- ranges: [
2672
- {
2673
- startOffset: 0,
2674
- endOffset: originalSource.length,
2675
- count: 0
2676
- }
2677
- ],
2678
- isBlockCoverage: true,
2679
- // This is magical value that indicates an empty report: https://github.com/istanbuljs/v8-to-istanbul/blob/fca5e6a9e6ef38a9cdc3a178d5a6cf9ef82e6cab/lib/v8-to-istanbul.js#LL131C40-L131C40
2680
- functionName: "(empty-report)"
2675
+ startOffset: 0,
2676
+ endOffset: sources.originalSource.length,
2677
+ count: 0
2681
2678
  }
2682
- ]
2683
- };
2684
- return { result: [coverage] };
2685
- })
2686
- );
2687
- merged = mergeProcessCovs([
2688
- merged,
2689
- ...coverages.filter(
2690
- (cov) => cov != null
2691
- )
2692
- ]);
2679
+ ],
2680
+ isBlockCoverage: true,
2681
+ // This is magical value that indicates an empty report: https://github.com/istanbuljs/v8-to-istanbul/blob/fca5e6a9e6ef38a9cdc3a178d5a6cf9ef82e6cab/lib/v8-to-istanbul.js#LL131C40-L131C40
2682
+ functionName: "(empty-report)"
2683
+ }]);
2684
+ } catch (error) {
2685
+ this.ctx.logger.error(`Failed to convert coverage for uncovered ${filename.href}.
2686
+ `, error);
2687
+ }
2688
+ coverageMap.merge(converter.toIstanbul());
2689
+ }));
2693
2690
  }
2694
- return merged;
2691
+ return coverageMap;
2695
2692
  }
2696
2693
  async getSources(url, transformResults, onTransform, functions = []) {
2697
2694
  const filePath = normalize(fileURLToPath(url));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/coverage-v8",
3
3
  "type": "module",
4
- "version": "3.0.8",
4
+ "version": "3.1.0-beta.1",
5
5
  "description": "V8 coverage provider for Vitest",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -41,8 +41,8 @@
41
41
  "dist"
42
42
  ],
43
43
  "peerDependencies": {
44
- "@vitest/browser": "3.0.8",
45
- "vitest": "3.0.8"
44
+ "@vitest/browser": "3.1.0-beta.1",
45
+ "vitest": "3.1.0-beta.1"
46
46
  },
47
47
  "peerDependenciesMeta": {
48
48
  "@vitest/browser": {
@@ -72,9 +72,9 @@
72
72
  "@types/test-exclude": "^6.0.2",
73
73
  "pathe": "^2.0.3",
74
74
  "v8-to-istanbul": "^9.3.0",
75
- "@vitest/browser": "3.0.8",
76
- "vitest": "3.0.8",
77
- "vite-node": "3.0.8"
75
+ "@vitest/browser": "3.1.0-beta.1",
76
+ "vitest": "3.1.0-beta.1",
77
+ "vite-node": "3.1.0-beta.1"
78
78
  },
79
79
  "scripts": {
80
80
  "build": "rimraf dist && rollup -c",