vitest-coverage-merge 0.1.0 → 0.2.0
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/README.md +18 -8
- package/dist/cli.js +9 -9
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/smart-merge.d.ts +9 -4
- package/dist/smart-merge.d.ts.map +1 -1
- package/dist/smart-merge.js +45 -17
- package/dist/smart-merge.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# vitest-coverage-merge
|
|
2
2
|
|
|
3
|
-
Merge Vitest coverage from unit tests (jsdom) and browser component tests
|
|
3
|
+
Merge Vitest coverage from unit tests (jsdom) and browser component tests.
|
|
4
|
+
|
|
5
|
+
> **📝 UPDATE (January 2025):**
|
|
6
|
+
>
|
|
7
|
+
> As of v0.2.0, **normalization is now OFF by default**. Use `--normalize` if you need to strip import statements and directives.
|
|
4
8
|
|
|
5
9
|
## The Problem
|
|
6
10
|
|
|
@@ -15,7 +19,7 @@ This makes it impossible to accurately merge coverage without normalization.
|
|
|
15
19
|
|
|
16
20
|
## The Solution
|
|
17
21
|
|
|
18
|
-
`vitest-coverage-merge`
|
|
22
|
+
`vitest-coverage-merge` provides smart merging of coverage data. When you encounter statement count mismatches, you can use the `--normalize` flag to strip import statements and Next.js directives (`'use client'`, `'use server'`) before merging.
|
|
19
23
|
|
|
20
24
|
## Installation
|
|
21
25
|
|
|
@@ -33,6 +37,9 @@ npx vitest-coverage-merge coverage/unit coverage/component -o coverage/merged
|
|
|
33
37
|
|
|
34
38
|
# Merge multiple sources
|
|
35
39
|
npx vitest-coverage-merge coverage/unit coverage/component coverage/e2e -o coverage/all
|
|
40
|
+
|
|
41
|
+
# Merge with normalization (strips imports/directives)
|
|
42
|
+
npx vitest-coverage-merge coverage/unit coverage/component -o coverage/merged --normalize
|
|
36
43
|
```
|
|
37
44
|
|
|
38
45
|
### Options
|
|
@@ -46,7 +53,7 @@ Arguments:
|
|
|
46
53
|
|
|
47
54
|
Options:
|
|
48
55
|
-o, --output Output directory for merged coverage (required)
|
|
49
|
-
--
|
|
56
|
+
--normalize Strip import statements and directives before merging
|
|
50
57
|
-h, --help Show help
|
|
51
58
|
-v, --version Show version
|
|
52
59
|
```
|
|
@@ -60,7 +67,7 @@ import { mergeCoverage, normalizeCoverage } from 'vitest-coverage-merge'
|
|
|
60
67
|
const result = await mergeCoverage({
|
|
61
68
|
inputDirs: ['coverage/unit', 'coverage/component'],
|
|
62
69
|
outputDir: 'coverage/merged',
|
|
63
|
-
normalize:
|
|
70
|
+
normalize: false, // default (set to true to strip imports/directives)
|
|
64
71
|
reporters: ['json', 'lcov', 'html'], // default
|
|
65
72
|
})
|
|
66
73
|
|
|
@@ -136,13 +143,16 @@ The tool generates:
|
|
|
136
143
|
## How It Works
|
|
137
144
|
|
|
138
145
|
1. **Load** coverage-final.json from each input directory
|
|
139
|
-
2. **Normalize** by stripping:
|
|
146
|
+
2. **Normalize** (optional, with `--normalize` flag) by stripping:
|
|
140
147
|
- ESM import statements (`import ... from '...'`)
|
|
141
148
|
- React/Next.js directives (`'use client'`, `'use server'`) - if present
|
|
142
|
-
3. **Smart merge**
|
|
143
|
-
|
|
149
|
+
3. **Smart merge** using one of two strategies:
|
|
150
|
+
- **Default (no `--normalize`)**: "More items wins" - prefers source with more coverage items, giving you the union of all structures
|
|
151
|
+
- **With `--normalize`**: "Fewer items wins" - prefers sources without directive statements (browser-style coverage)
|
|
152
|
+
4. **Merge execution counts** using max strategy (takes highest count for each item)
|
|
153
|
+
5. **Generate** reports (JSON, LCOV, HTML)
|
|
144
154
|
|
|
145
|
-
> **Note**: This tool works with any ESM-based Vitest project (React, Vue, Svelte, vanilla JS/TS, etc.). The React/Next.js directive stripping only applies if those directives are present in your codebase - for non-React projects, it simply has no effect.
|
|
155
|
+
> **Note**: This tool works with any ESM-based Vitest project (React, Vue, Svelte, vanilla JS/TS, etc.). The React/Next.js directive stripping only applies if those directives are present in your codebase - for non-React projects, it simply has no effect.
|
|
146
156
|
|
|
147
157
|
## Why Not Use Vitest's Built-in Merge?
|
|
148
158
|
|
package/dist/cli.js
CHANGED
|
@@ -15,28 +15,28 @@ Arguments:
|
|
|
15
15
|
|
|
16
16
|
Options:
|
|
17
17
|
-o, --output Output directory for merged coverage (required)
|
|
18
|
-
--
|
|
18
|
+
--normalize Strip import statements and directives before merging
|
|
19
19
|
-h, --help Show this help message
|
|
20
20
|
-v, --version Show version
|
|
21
21
|
|
|
22
22
|
Examples:
|
|
23
23
|
vitest-coverage-merge coverage/unit coverage/component -o coverage/merged
|
|
24
24
|
vitest-coverage-merge coverage/unit coverage/browser coverage/e2e -o coverage/all
|
|
25
|
+
vitest-coverage-merge coverage/unit coverage/component -o coverage/merged --normalize
|
|
25
26
|
|
|
26
|
-
The
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
- Merging statement, branch, and function coverage
|
|
27
|
+
The --normalize option strips:
|
|
28
|
+
- ESM import statements (counted differently in jsdom vs browser)
|
|
29
|
+
- 'use client'/'use server' directives
|
|
30
30
|
`);
|
|
31
31
|
}
|
|
32
32
|
function printVersion() {
|
|
33
|
-
console.log('vitest-coverage-merge v0.
|
|
33
|
+
console.log('vitest-coverage-merge v0.2.0');
|
|
34
34
|
}
|
|
35
35
|
function parseArgs(args) {
|
|
36
36
|
const result = {
|
|
37
37
|
inputDirs: [],
|
|
38
38
|
outputDir: null,
|
|
39
|
-
normalize:
|
|
39
|
+
normalize: false,
|
|
40
40
|
help: false,
|
|
41
41
|
version: false,
|
|
42
42
|
error: null,
|
|
@@ -60,8 +60,8 @@ function parseArgs(args) {
|
|
|
60
60
|
}
|
|
61
61
|
result.outputDir = args[i];
|
|
62
62
|
}
|
|
63
|
-
else if (arg === '--
|
|
64
|
-
result.normalize =
|
|
63
|
+
else if (arg === '--normalize') {
|
|
64
|
+
result.normalize = true;
|
|
65
65
|
}
|
|
66
66
|
else if (arg.startsWith('-')) {
|
|
67
67
|
result.error = `Unknown option: ${arg}`;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAwBb,CAAC,CAAA;AACF,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;AAC7C,CAAC;AAWD,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,MAAM,GAAe;QACzB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3D,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1D,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACvD;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3D,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1D,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACvD;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA8G/E;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { smartMergeCoverage } from './smart-merge.js';
|
|
|
12
12
|
* normalizing (stripping imports/directives) before merging.
|
|
13
13
|
*/
|
|
14
14
|
export async function mergeCoverage(options) {
|
|
15
|
-
const { inputDirs, outputDir, normalize =
|
|
15
|
+
const { inputDirs, outputDir, normalize = false, reporters = ['json', 'lcov', 'html'], } = options;
|
|
16
16
|
// Load all coverage data
|
|
17
17
|
const coverageMaps = [];
|
|
18
18
|
let totalImportsRemoved = 0;
|
|
@@ -37,8 +37,11 @@ export async function mergeCoverage(options) {
|
|
|
37
37
|
if (normalize && (totalImportsRemoved > 0 || totalDirectivesRemoved > 0)) {
|
|
38
38
|
console.log(`Normalized: removed ${totalImportsRemoved} import(s), ${totalDirectivesRemoved} directive(s)`);
|
|
39
39
|
}
|
|
40
|
-
// Smart merge
|
|
41
|
-
|
|
40
|
+
// Smart merge coverage maps
|
|
41
|
+
// When normalize is false (default): preferUnion=true, use "more items wins" strategy
|
|
42
|
+
// When normalize is true: preferUnion=false, use "fewer items wins" strategy (no directive inflation)
|
|
43
|
+
const preferUnion = !normalize;
|
|
44
|
+
const mergedData = smartMergeCoverage(coverageMaps, preferUnion);
|
|
42
45
|
const mergedMap = libCoverage.createCoverageMap(mergedData);
|
|
43
46
|
// Create output directory
|
|
44
47
|
if (!existsSync(outputDir)) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,WAAqC,MAAM,uBAAuB,CAAA;AACzE,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,OAAO,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAiBrD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAqB;IACvD,MAAM,EACJ,SAAS,EACT,SAAS,EACT,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/smart-merge.d.ts
CHANGED
|
@@ -2,9 +2,14 @@ import type { CoverageMapData } from 'istanbul-lib-coverage';
|
|
|
2
2
|
/**
|
|
3
3
|
* Smart merge multiple coverage maps.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* which
|
|
7
|
-
*
|
|
5
|
+
* By default (preferUnion: true), uses "more items wins" strategy for structure selection,
|
|
6
|
+
* which gives you the union of all statement structures.
|
|
7
|
+
*
|
|
8
|
+
* When preferUnion is false (--normalize mode), uses "fewer items wins" strategy,
|
|
9
|
+
* which preserves the statement counts from the source without import statement inflation.
|
|
10
|
+
*
|
|
11
|
+
* @param coverageMaps - Array of coverage maps to merge
|
|
12
|
+
* @param preferUnion - If true (default), prefer source with more items; if false, prefer source without directives
|
|
8
13
|
*/
|
|
9
|
-
export declare function smartMergeCoverage(coverageMaps: CoverageMapData[]): CoverageMapData;
|
|
14
|
+
export declare function smartMergeCoverage(coverageMaps: CoverageMapData[], preferUnion?: boolean): CoverageMapData;
|
|
10
15
|
//# sourceMappingURL=smart-merge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-merge.d.ts","sourceRoot":"","sources":["../src/smart-merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"smart-merge.d.ts","sourceRoot":"","sources":["../src/smart-merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,uBAAuB,CAAA;AA+O9E;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,WAAW,GAAE,OAAc,GAAG,eAAe,CAgChH"}
|
package/dist/smart-merge.js
CHANGED
|
@@ -50,16 +50,22 @@ function buildLookups(data) {
|
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
52
|
* Select the best source coverage for structure.
|
|
53
|
-
*
|
|
54
|
-
*
|
|
53
|
+
*
|
|
54
|
+
* When preferUnion is true (default):
|
|
55
|
+
* - Prefer coverage WITH MORE items (includes imports and directives)
|
|
56
|
+
* - This gives you the union of all statement structures
|
|
57
|
+
*
|
|
58
|
+
* When preferUnion is false (--normalize mode):
|
|
59
|
+
* - Prefer coverage WITHOUT L1:0 directive statements (browser/E2E-style)
|
|
60
|
+
* - Browser coverage is more accurate because it doesn't count non-executable directives
|
|
55
61
|
*
|
|
56
62
|
* Rules:
|
|
57
63
|
* 1. Filter out sources with no coverage data (0 items)
|
|
58
|
-
* 2.
|
|
59
|
-
* 3.
|
|
64
|
+
* 2. If preferUnion: prefer source with MORE items, prefer LAST when equal
|
|
65
|
+
* 3. If !preferUnion: prefer source without L1:0 directives, then prefer LAST one
|
|
60
66
|
* 4. If all sources have directives, pick the one with fewer items
|
|
61
67
|
*/
|
|
62
|
-
function selectBestSource(coverages) {
|
|
68
|
+
function selectBestSource(coverages, preferUnion = true) {
|
|
63
69
|
const getTotalItems = (cov) => {
|
|
64
70
|
return (Object.keys(cov.statementMap || {}).length +
|
|
65
71
|
Object.keys(cov.branchMap || {}).length +
|
|
@@ -76,6 +82,21 @@ function selectBestSource(coverages) {
|
|
|
76
82
|
if (nonEmptyWithIndex.length === 1) {
|
|
77
83
|
return nonEmptyWithIndex[0].cov;
|
|
78
84
|
}
|
|
85
|
+
// If preferUnion is true (default), pick the source with MORE items
|
|
86
|
+
// This includes imports and directives from all sources
|
|
87
|
+
// When item counts are equal, prefer the LAST source
|
|
88
|
+
if (preferUnion) {
|
|
89
|
+
return nonEmptyWithIndex.reduce((best, current) => {
|
|
90
|
+
const currentItems = getTotalItems(current.cov);
|
|
91
|
+
const bestItems = getTotalItems(best.cov);
|
|
92
|
+
// Prefer more items, or if equal, prefer later source (higher index)
|
|
93
|
+
if (currentItems > bestItems || (currentItems === bestItems && current.idx > best.idx)) {
|
|
94
|
+
return current;
|
|
95
|
+
}
|
|
96
|
+
return best;
|
|
97
|
+
}).cov;
|
|
98
|
+
}
|
|
99
|
+
// preferUnion is false (--normalize mode): prefer source without directives
|
|
79
100
|
// Check which coverages have L1:0 directive statements
|
|
80
101
|
const withDirective = [];
|
|
81
102
|
const withoutDirective = [];
|
|
@@ -103,18 +124,20 @@ function selectBestSource(coverages) {
|
|
|
103
124
|
}
|
|
104
125
|
/**
|
|
105
126
|
* Smart merge of multiple file coverages.
|
|
106
|
-
* Uses the source
|
|
107
|
-
*
|
|
127
|
+
* Uses the best source as baseline structure, then merges execution counts from all sources.
|
|
128
|
+
*
|
|
129
|
+
* @param coverages - Array of file coverages to merge
|
|
130
|
+
* @param preferUnion - If true (default), prefer source with more items; if false, prefer source without directives
|
|
108
131
|
*/
|
|
109
|
-
function mergeFileCoverages(coverages) {
|
|
132
|
+
function mergeFileCoverages(coverages, preferUnion = true) {
|
|
110
133
|
if (coverages.length === 0) {
|
|
111
134
|
throw new Error('No coverages to merge');
|
|
112
135
|
}
|
|
113
136
|
if (coverages.length === 1) {
|
|
114
137
|
return JSON.parse(JSON.stringify(coverages[0]));
|
|
115
138
|
}
|
|
116
|
-
// Select best structure
|
|
117
|
-
const bestSource = selectBestSource(coverages);
|
|
139
|
+
// Select best structure based on preferUnion setting
|
|
140
|
+
const bestSource = selectBestSource(coverages, preferUnion);
|
|
118
141
|
// Build lookup maps for all coverages
|
|
119
142
|
const allLookups = coverages.map(buildLookups);
|
|
120
143
|
// Start with best structure (deep copy)
|
|
@@ -157,11 +180,11 @@ function mergeFileCoverages(coverages) {
|
|
|
157
180
|
for (const [key, branch] of Object.entries(merged.branchMap)) {
|
|
158
181
|
const locKey = locationKey(branch.loc);
|
|
159
182
|
const line = lineKey(branch.loc);
|
|
160
|
-
const baseCounts = merged.b[key] || [];
|
|
161
183
|
for (const lookup of allLookups) {
|
|
162
184
|
const counts = lookup.branches.get(locKey) ?? lookup.branchesByLine.get(line);
|
|
163
185
|
if (counts !== undefined) {
|
|
164
|
-
merged.b[key]
|
|
186
|
+
const currentCounts = merged.b[key] || [];
|
|
187
|
+
merged.b[key] = currentCounts.map((c, i) => Math.max(c, counts[i] || 0));
|
|
165
188
|
}
|
|
166
189
|
}
|
|
167
190
|
}
|
|
@@ -170,11 +193,16 @@ function mergeFileCoverages(coverages) {
|
|
|
170
193
|
/**
|
|
171
194
|
* Smart merge multiple coverage maps.
|
|
172
195
|
*
|
|
173
|
-
*
|
|
174
|
-
* which
|
|
175
|
-
*
|
|
196
|
+
* By default (preferUnion: true), uses "more items wins" strategy for structure selection,
|
|
197
|
+
* which gives you the union of all statement structures.
|
|
198
|
+
*
|
|
199
|
+
* When preferUnion is false (--normalize mode), uses "fewer items wins" strategy,
|
|
200
|
+
* which preserves the statement counts from the source without import statement inflation.
|
|
201
|
+
*
|
|
202
|
+
* @param coverageMaps - Array of coverage maps to merge
|
|
203
|
+
* @param preferUnion - If true (default), prefer source with more items; if false, prefer source without directives
|
|
176
204
|
*/
|
|
177
|
-
export function smartMergeCoverage(coverageMaps) {
|
|
205
|
+
export function smartMergeCoverage(coverageMaps, preferUnion = true) {
|
|
178
206
|
if (coverageMaps.length === 0) {
|
|
179
207
|
return {};
|
|
180
208
|
}
|
|
@@ -197,7 +225,7 @@ export function smartMergeCoverage(coverageMaps) {
|
|
|
197
225
|
merged[file] = JSON.parse(JSON.stringify(fileCoverages[0]));
|
|
198
226
|
}
|
|
199
227
|
else {
|
|
200
|
-
merged[file] = mergeFileCoverages(fileCoverages);
|
|
228
|
+
merged[file] = mergeFileCoverages(fileCoverages, preferUnion);
|
|
201
229
|
}
|
|
202
230
|
}
|
|
203
231
|
return merged;
|
package/dist/smart-merge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-merge.js","sourceRoot":"","sources":["../src/smart-merge.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"smart-merge.js","sourceRoot":"","sources":["../src/smart-merge.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitest-coverage-merge",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Merge Vitest unit and browser component test coverage with automatic normalization",
|
|
5
5
|
"author": "Steve Zhang",
|
|
6
6
|
"license": "MIT",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"@types/node": "^22.10.0",
|
|
51
51
|
"@vitest/coverage-v8": "^4.0.16",
|
|
52
52
|
"typescript": "^5.7.0",
|
|
53
|
-
"vitest": "^4.0.
|
|
53
|
+
"vitest": "^4.0.16"
|
|
54
54
|
},
|
|
55
55
|
"repository": {
|
|
56
56
|
"type": "git",
|