@vitest/coverage-v8 3.1.1 → 3.1.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 CHANGED
@@ -6,17 +6,17 @@ import { l as loadProvider } from './load-provider-pEnu7lco.js';
6
6
  const session = new inspector.Session();
7
7
  let enabled = false;
8
8
  const mod = {
9
- startCoverage({ isolate }) {
9
+ async startCoverage({ isolate }) {
10
10
  if (isolate === false && enabled) {
11
11
  return;
12
12
  }
13
13
  enabled = true;
14
14
  session.connect();
15
- session.post("Profiler.enable");
16
- session.post("Profiler.startPreciseCoverage", {
15
+ await new Promise((resolve) => session.post("Profiler.enable", resolve));
16
+ await new Promise((resolve) => session.post("Profiler.startPreciseCoverage", {
17
17
  callCount: true,
18
18
  detailed: true
19
- });
19
+ }, resolve));
20
20
  },
21
21
  takeCoverage(options) {
22
22
  return new Promise((resolve, reject) => {
@@ -24,23 +24,27 @@ const mod = {
24
24
  if (error) {
25
25
  return reject(error);
26
26
  }
27
- const result = coverage.result.filter(filterResult).map((res) => ({
28
- ...res,
29
- startOffset: options?.moduleExecutionInfo?.get(fileURLToPath(res.url))?.startOffset || 0
30
- }));
31
- resolve({ result });
27
+ try {
28
+ const result = coverage.result.filter(filterResult).map((res) => ({
29
+ ...res,
30
+ startOffset: options?.moduleExecutionInfo?.get(fileURLToPath(res.url))?.startOffset || 0
31
+ }));
32
+ resolve({ result });
33
+ } catch (e) {
34
+ reject(e);
35
+ }
32
36
  });
33
37
  if (provider === "stackblitz") {
34
38
  resolve({ result: [] });
35
39
  }
36
40
  });
37
41
  },
38
- stopCoverage({ isolate }) {
42
+ async stopCoverage({ isolate }) {
39
43
  if (isolate === false) {
40
44
  return;
41
45
  }
42
- session.post("Profiler.stopPreciseCoverage");
43
- session.post("Profiler.disable");
46
+ await new Promise((resolve) => session.post("Profiler.stopPreciseCoverage", resolve));
47
+ await new Promise((resolve) => session.post("Profiler.disable", resolve));
44
48
  session.disconnect();
45
49
  },
46
50
  async getProvider() {
package/dist/provider.js CHANGED
@@ -2539,7 +2539,7 @@ new Set([
2539
2539
  "wasi"
2540
2540
  ]);
2541
2541
 
2542
- var version = "3.1.1";
2542
+ var version = "3.1.3";
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;
@@ -2564,6 +2564,7 @@ class V8CoverageProvider extends BaseCoverageProvider {
2564
2564
  return libCoverage.createCoverageMap({});
2565
2565
  }
2566
2566
  async generateCoverage({ allTestsRun }) {
2567
+ const start = debug.enabled ? performance.now() : 0;
2567
2568
  const coverageMap = this.createCoverageMap();
2568
2569
  let merged = { result: [] };
2569
2570
  await this.readCoverageFiles({
@@ -2592,6 +2593,9 @@ class V8CoverageProvider extends BaseCoverageProvider {
2592
2593
  if (this.options.excludeAfterRemap) {
2593
2594
  coverageMap.filter((filename) => this.testExclude.shouldInstrument(filename));
2594
2595
  }
2596
+ if (debug.enabled) {
2597
+ debug(`Generate coverage total time ${(performance.now() - start).toFixed()} ms`);
2598
+ }
2595
2599
  return coverageMap;
2596
2600
  }
2597
2601
  async generateReports(coverageMap, allTestsRun) {
@@ -2637,6 +2641,12 @@ class V8CoverageProvider extends BaseCoverageProvider {
2637
2641
  debug("Uncovered files %d/%d", index, uncoveredFiles.length);
2638
2642
  }
2639
2643
  await Promise.all(chunk.map(async (filename) => {
2644
+ let timeout;
2645
+ let start;
2646
+ if (debug.enabled) {
2647
+ start = performance.now();
2648
+ timeout = setTimeout(() => debug(c.bgRed(`File "${filename.pathname}" is taking longer than 3s`)), 3e3);
2649
+ }
2640
2650
  const sources = await this.getSources(filename.href, transformResults, transform);
2641
2651
  const converter = v8ToIstanbul(filename.href, 0, sources, undefined, this.options.ignoreEmptyLines);
2642
2652
  await converter.load();
@@ -2654,6 +2664,12 @@ class V8CoverageProvider extends BaseCoverageProvider {
2654
2664
  this.ctx.logger.error(`Failed to convert coverage for uncovered ${filename.href}.\n`, error);
2655
2665
  }
2656
2666
  coverageMap.merge(converter.toIstanbul());
2667
+ if (debug.enabled) {
2668
+ clearTimeout(timeout);
2669
+ const diff = performance.now() - start;
2670
+ const color = diff > 500 ? c.bgRed : c.bgGreen;
2671
+ debug(`${color(` ${diff.toFixed()} ms `)} ${filename.pathname}`);
2672
+ }
2657
2673
  }));
2658
2674
  }
2659
2675
  return coverageMap;
@@ -2733,6 +2749,12 @@ class V8CoverageProvider extends BaseCoverageProvider {
2733
2749
  debug("Converting %d/%d", index, scriptCoverages.length);
2734
2750
  }
2735
2751
  await Promise.all(chunk.map(async ({ url, functions, startOffset }) => {
2752
+ let timeout;
2753
+ let start;
2754
+ if (debug.enabled) {
2755
+ start = performance.now();
2756
+ timeout = setTimeout(() => debug(c.bgRed(`File "${fileURLToPath(url)}" is taking longer than 3s`)), 3e3);
2757
+ }
2736
2758
  const sources = await this.getSources(url, transformResults, onTransform, functions);
2737
2759
  const converter = v8ToIstanbul(url, startOffset, sources, undefined, this.options.ignoreEmptyLines);
2738
2760
  await converter.load();
@@ -2742,6 +2764,12 @@ class V8CoverageProvider extends BaseCoverageProvider {
2742
2764
  this.ctx.logger.error(`Failed to convert coverage for ${url}.\n`, error);
2743
2765
  }
2744
2766
  coverageMap.merge(converter.toIstanbul());
2767
+ if (debug.enabled) {
2768
+ clearTimeout(timeout);
2769
+ const diff = performance.now() - start;
2770
+ const color = diff > 500 ? c.bgRed : c.bgGreen;
2771
+ debug(`${color(` ${diff.toFixed()} ms `)} ${fileURLToPath(url)}`);
2772
+ }
2745
2773
  }));
2746
2774
  }
2747
2775
  return coverageMap;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/coverage-v8",
3
3
  "type": "module",
4
- "version": "3.1.1",
4
+ "version": "3.1.3",
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.1.1",
45
- "vitest": "3.1.1"
44
+ "@vitest/browser": "3.1.3",
45
+ "vitest": "3.1.3"
46
46
  },
47
47
  "peerDependenciesMeta": {
48
48
  "@vitest/browser": {
@@ -59,7 +59,7 @@
59
59
  "istanbul-reports": "^3.1.7",
60
60
  "magic-string": "^0.30.17",
61
61
  "magicast": "^0.3.5",
62
- "std-env": "^3.8.1",
62
+ "std-env": "^3.9.0",
63
63
  "test-exclude": "^7.0.1",
64
64
  "tinyrainbow": "^2.0.0"
65
65
  },
@@ -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.1.1",
76
- "vite-node": "3.1.1",
77
- "vitest": "3.1.1"
75
+ "@vitest/browser": "3.1.3",
76
+ "vite-node": "3.1.3",
77
+ "vitest": "3.1.3"
78
78
  },
79
79
  "scripts": {
80
80
  "build": "rimraf dist && rollup -c",