mirror of
https://github.com/vitest-dev/vitest.git
synced 2025-12-08 18:26:03 +00:00
fix(coverage): istanbul untested files source maps are off (#9208)
This commit is contained in:
parent
5d26b87b08
commit
372e86fdef
@ -88,28 +88,30 @@ export class IstanbulCoverageProvider extends BaseCoverageProvider<ResolvedCover
|
|||||||
sourceMap as any,
|
sourceMap as any,
|
||||||
)
|
)
|
||||||
|
|
||||||
const transformMap = new GenMapping(sourceMap)
|
if (!id.includes('vitest-uncovered-coverage=true')) {
|
||||||
|
const transformMap = new GenMapping(sourceMap)
|
||||||
|
|
||||||
eachMapping(new TraceMap(sourceMap as any), (mapping) => {
|
eachMapping(new TraceMap(sourceMap as any), (mapping) => {
|
||||||
addMapping(transformMap, {
|
addMapping(transformMap, {
|
||||||
generated: { line: mapping.generatedLine, column: mapping.generatedColumn },
|
generated: { line: mapping.generatedLine, column: mapping.generatedColumn },
|
||||||
original: { line: mapping.generatedLine, column: mapping.generatedColumn },
|
original: { line: mapping.generatedLine, column: mapping.generatedColumn },
|
||||||
content: sourceCode,
|
content: sourceCode,
|
||||||
name: mapping.name || '',
|
name: mapping.name || '',
|
||||||
source: mapping.source || '',
|
source: mapping.source || '',
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
const encodedMap = toEncodedMap(transformMap)
|
const encodedMap = toEncodedMap(transformMap)
|
||||||
delete encodedMap.file
|
delete encodedMap.file
|
||||||
delete encodedMap.ignoreList
|
delete encodedMap.ignoreList
|
||||||
delete encodedMap.sourceRoot
|
delete encodedMap.sourceRoot
|
||||||
|
|
||||||
this.instrumenter.instrumentSync(
|
this.instrumenter.instrumentSync(
|
||||||
sourceCode,
|
sourceCode,
|
||||||
id,
|
id,
|
||||||
encodedMap as any,
|
encodedMap as any,
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
const map = this.instrumenter.lastSourceMap() as any
|
const map = this.instrumenter.lastSourceMap() as any
|
||||||
this.transformedModuleIds.add(id)
|
this.transformedModuleIds.add(id)
|
||||||
@ -225,7 +227,7 @@ export class IstanbulCoverageProvider extends BaseCoverageProvider<ResolvedCover
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Make sure file is not served from cache so that instrumenter loads up requested file coverage
|
// Make sure file is not served from cache so that instrumenter loads up requested file coverage
|
||||||
await transform(`${filename}?cache=${cacheKey}`)
|
await transform(`${filename}?cache=${cacheKey}&vitest-uncovered-coverage=true`)
|
||||||
const lastCoverage = this.instrumenter.lastFileCoverage()
|
const lastCoverage = this.instrumenter.lastFileCoverage()
|
||||||
coverageMap.addFileCoverage(lastCoverage)
|
coverageMap.addFileCoverage(lastCoverage)
|
||||||
|
|
||||||
|
|||||||
@ -3,14 +3,14 @@ import { expect } from 'vitest'
|
|||||||
import { formatSummary } from './utils'
|
import { formatSummary } from './utils'
|
||||||
|
|
||||||
expect.addSnapshotSerializer({
|
expect.addSnapshotSerializer({
|
||||||
test: val => val.constructor.name === 'CoverageMap',
|
test: val => val.constructor?.name === 'CoverageMap',
|
||||||
serialize: (val: CoverageMap, config, indentation, depth, refs, printer) => {
|
serialize: (val: CoverageMap, config, indentation, depth, refs, printer) => {
|
||||||
return printer(formatSummary(val.getCoverageSummary()), config, indentation, depth, refs)
|
return printer(formatSummary(val.getCoverageSummary()), config, indentation, depth, refs)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
expect.addSnapshotSerializer({
|
expect.addSnapshotSerializer({
|
||||||
test: val => val.constructor.name === 'FileCoverage',
|
test: val => val.constructor?.name === 'FileCoverage',
|
||||||
serialize: (val: FileCoverage, config, indentation, depth, refs, printer) => {
|
serialize: (val: FileCoverage, config, indentation, depth, refs, printer) => {
|
||||||
return printer(formatSummary(val.toSummary()), config, indentation, depth, refs)
|
return printer(formatSummary(val.toSummary()), config, indentation, depth, refs)
|
||||||
},
|
},
|
||||||
|
|||||||
@ -39,4 +39,34 @@ test('coverage results matches snapshot', async () => {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
|
const lineCoverages = coverageMap.files().reduce((all, file) => ({
|
||||||
|
[file]: coverageMap.fileCoverageFor(file).getLineCoverage(),
|
||||||
|
...all,
|
||||||
|
}), {})
|
||||||
|
|
||||||
|
expect(lineCoverages).toMatchInlineSnapshot(`
|
||||||
|
{
|
||||||
|
"<process-cwd>/fixtures/src/even.ts": {
|
||||||
|
"2": 1,
|
||||||
|
"6": 0,
|
||||||
|
},
|
||||||
|
"<process-cwd>/fixtures/src/math.ts": {
|
||||||
|
"10": 0,
|
||||||
|
"14": 0,
|
||||||
|
"2": 1,
|
||||||
|
"6": 0,
|
||||||
|
},
|
||||||
|
"<process-cwd>/fixtures/src/untested-file.ts": {
|
||||||
|
"14": 0,
|
||||||
|
"21": 0,
|
||||||
|
"33": 0,
|
||||||
|
"35": 0,
|
||||||
|
"39": 0,
|
||||||
|
"41": 0,
|
||||||
|
"46": 0,
|
||||||
|
"9": 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`)
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user