Skip to content

Commit 9e03bb8

Browse files
committed
fix(coverage): istanbul untested files source maps are off
1 parent 5d26b87 commit 9e03bb8

File tree

3 files changed

+54
-22
lines changed

3 files changed

+54
-22
lines changed

packages/coverage-istanbul/src/provider.ts

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -88,28 +88,30 @@ export class IstanbulCoverageProvider extends BaseCoverageProvider<ResolvedCover
8888
sourceMap as any,
8989
)
9090

91-
const transformMap = new GenMapping(sourceMap)
92-
93-
eachMapping(new TraceMap(sourceMap as any), (mapping) => {
94-
addMapping(transformMap, {
95-
generated: { line: mapping.generatedLine, column: mapping.generatedColumn },
96-
original: { line: mapping.generatedLine, column: mapping.generatedColumn },
97-
content: sourceCode,
98-
name: mapping.name || '',
99-
source: mapping.source || '',
91+
if (!id.includes('vitest-uncovered-coverage=true')) {
92+
const transformMap = new GenMapping(sourceMap)
93+
94+
eachMapping(new TraceMap(sourceMap as any), (mapping) => {
95+
addMapping(transformMap, {
96+
generated: { line: mapping.generatedLine, column: mapping.generatedColumn },
97+
original: { line: mapping.generatedLine, column: mapping.generatedColumn },
98+
content: sourceCode,
99+
name: mapping.name || '',
100+
source: mapping.source || '',
101+
})
100102
})
101-
})
102103

103-
const encodedMap = toEncodedMap(transformMap)
104-
delete encodedMap.file
105-
delete encodedMap.ignoreList
106-
delete encodedMap.sourceRoot
104+
const encodedMap = toEncodedMap(transformMap)
105+
delete encodedMap.file
106+
delete encodedMap.ignoreList
107+
delete encodedMap.sourceRoot
107108

108-
this.instrumenter.instrumentSync(
109-
sourceCode,
110-
id,
111-
encodedMap as any,
112-
)
109+
this.instrumenter.instrumentSync(
110+
sourceCode,
111+
id,
112+
encodedMap as any,
113+
)
114+
}
113115

114116
const map = this.instrumenter.lastSourceMap() as any
115117
this.transformedModuleIds.add(id)
@@ -225,7 +227,7 @@ export class IstanbulCoverageProvider extends BaseCoverageProvider<ResolvedCover
225227
}
226228

227229
// Make sure file is not served from cache so that instrumenter loads up requested file coverage
228-
await transform(`${filename}?cache=${cacheKey}`)
230+
await transform(`${filename}?cache=${cacheKey}&vitest-uncovered-coverage=true`)
229231
const lastCoverage = this.instrumenter.lastFileCoverage()
230232
coverageMap.addFileCoverage(lastCoverage)
231233

test/coverage-test/setup.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import { expect } from 'vitest'
33
import { formatSummary } from './utils'
44

55
expect.addSnapshotSerializer({
6-
test: val => val.constructor.name === 'CoverageMap',
6+
test: val => val.constructor?.name === 'CoverageMap',
77
serialize: (val: CoverageMap, config, indentation, depth, refs, printer) => {
88
return printer(formatSummary(val.getCoverageSummary()), config, indentation, depth, refs)
99
},
1010
})
1111

1212
expect.addSnapshotSerializer({
13-
test: val => val.constructor.name === 'FileCoverage',
13+
test: val => val.constructor?.name === 'FileCoverage',
1414
serialize: (val: FileCoverage, config, indentation, depth, refs, printer) => {
1515
return printer(formatSummary(val.toSummary()), config, indentation, depth, refs)
1616
},

test/coverage-test/test/results-snapshot.test.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,34 @@ test('coverage results matches snapshot', async () => {
3939
},
4040
}
4141
`)
42+
43+
const lineCoverages = coverageMap.files().reduce((all, file) => ({
44+
[file]: coverageMap.fileCoverageFor(file).getLineCoverage(),
45+
...all,
46+
}), {})
47+
48+
expect(lineCoverages).toMatchInlineSnapshot(`
49+
{
50+
"<process-cwd>/fixtures/src/even.ts": {
51+
"2": 1,
52+
"6": 0,
53+
},
54+
"<process-cwd>/fixtures/src/math.ts": {
55+
"10": 0,
56+
"14": 0,
57+
"2": 1,
58+
"6": 0,
59+
},
60+
"<process-cwd>/fixtures/src/untested-file.ts": {
61+
"14": 0,
62+
"21": 0,
63+
"33": 0,
64+
"35": 0,
65+
"39": 0,
66+
"41": 0,
67+
"46": 0,
68+
"9": 0,
69+
},
70+
}
71+
`)
4272
})

0 commit comments

Comments
 (0)