Skip to content

Commit eb31d33

Browse files
committed
fix(coverage): ignore [email protected]'s generated export statements
1 parent dfef2c7 commit eb31d33

File tree

5 files changed

+21
-56
lines changed

5 files changed

+21
-56
lines changed

packages/coverage-v8/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
"dependencies": {
5757
"@ampproject/remapping": "catalog:",
5858
"@bcoe/v8-coverage": "^1.0.2",
59-
"ast-v8-to-istanbul": "^0.3.1",
59+
"ast-v8-to-istanbul": "https://pkg.pr.new/AriPerkkio/ast-v8-to-istanbul@51",
6060
"debug": "catalog:",
6161
"istanbul-lib-coverage": "catalog:",
6262
"istanbul-lib-report": "catalog:",

packages/coverage-v8/src/provider.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ export class V8CoverageProvider extends BaseCoverageProvider<ResolvedCoverageOpt
260260
coverage: { functions, url: filename },
261261
ignoreClassMethods: this.options.ignoreClassMethods,
262262
wrapperLength,
263-
ignoreNode: (node, type) => {
263+
ignoreNode: (node, type, parent) => {
264264
// SSR transformed imports
265265
if (
266266
type === 'statement'
@@ -272,7 +272,7 @@ export class V8CoverageProvider extends BaseCoverageProvider<ResolvedCoverageOpt
272272
return true
273273
}
274274

275-
// SSR transformed exports
275+
// SSR transformed exports vite@>6.3.5
276276
if (
277277
type === 'statement'
278278
&& node.type === 'ExpressionStatement'
@@ -283,6 +283,16 @@ export class V8CoverageProvider extends BaseCoverageProvider<ResolvedCoverageOpt
283283
) {
284284
return true
285285
}
286+
287+
// SSR transformed exports vite@^6.3.5
288+
if (
289+
type === 'statement'
290+
&& parent?.type === 'VariableDeclarator'
291+
&& parent.id.type === 'Identifier'
292+
&& parent.id.name === '__vite_ssr_export_default__'
293+
) {
294+
return true
295+
}
286296
},
287297
},
288298
)

pnpm-lock.yaml

Lines changed: 6 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/coverage-test/test/vue.test.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { readdirSync } from 'node:fs'
22
import { resolve } from 'node:path'
33
import { beforeAll, expect } from 'vitest'
4-
import { isBrowser, isExperimentalV8Provider, isV8Provider, readCoverageMap, runVitest, test } from '../utils'
4+
import { isBrowser, isV8Provider, readCoverageMap, runVitest, test } from '../utils'
55

66
beforeAll(async () => {
77
await runVitest({
@@ -43,16 +43,6 @@ test('coverage results matches snapshot', async () => {
4343
}
4444
`)
4545
}
46-
else if (isExperimentalV8Provider()) {
47-
expect(coverageMap).toMatchInlineSnapshot(`
48-
{
49-
"branches": "6/8 (75%)",
50-
"functions": "5/7 (71.42%)",
51-
"lines": "14/17 (82.35%)",
52-
"statements": "15/18 (83.33%)",
53-
}
54-
`)
55-
}
5646
else {
5747
expect(coverageMap).toMatchInlineSnapshot(`
5848
{

test/coverage-test/test/workspace.multi-transform.test.ts

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'vitest'
2-
import { isExperimentalV8Provider, isV8Provider, readCoverageMap, runVitest, test } from '../utils'
2+
import { isV8Provider, readCoverageMap, runVitest, test } from '../utils'
33

44
test('{ all: true } includes uncovered files that require custom transform', async () => {
55
await runVitest({
@@ -64,42 +64,6 @@ test('{ all: true } includes uncovered files that require custom transform', asy
6464
}
6565
`)
6666
}
67-
else if (isExperimentalV8Provider()) {
68-
expect(fileCoverages).toMatchInlineSnapshot(`
69-
{
70-
"<process-cwd>/fixtures/src/covered.custom-1": {
71-
"branches": "0/0 (100%)",
72-
"functions": "1/2 (50%)",
73-
"lines": "2/3 (66.66%)",
74-
"statements": "2/3 (66.66%)",
75-
},
76-
"<process-cwd>/fixtures/src/math.ts": {
77-
"branches": "0/0 (100%)",
78-
"functions": "1/4 (25%)",
79-
"lines": "1/4 (25%)",
80-
"statements": "1/4 (25%)",
81-
},
82-
"<process-cwd>/fixtures/src/uncovered.custom-1": {
83-
"branches": "0/0 (100%)",
84-
"functions": "0/1 (0%)",
85-
"lines": "0/2 (0%)",
86-
"statements": "0/2 (0%)",
87-
},
88-
"<process-cwd>/fixtures/workspaces/custom-2/src/covered.custom-2": {
89-
"branches": "0/0 (100%)",
90-
"functions": "1/2 (50%)",
91-
"lines": "2/3 (66.66%)",
92-
"statements": "2/3 (66.66%)",
93-
},
94-
"<process-cwd>/fixtures/workspaces/custom-2/src/uncovered.custom-2": {
95-
"branches": "0/0 (100%)",
96-
"functions": "0/1 (0%)",
97-
"lines": "0/2 (0%)",
98-
"statements": "0/2 (0%)",
99-
},
100-
}
101-
`)
102-
}
10367
else {
10468
expect(fileCoverages).toMatchInlineSnapshot(`
10569
{

0 commit comments

Comments
 (0)