Skip to content

Commit 9057614

Browse files
authoredJul 22, 2024··
fix(coverage): consistent type-only file handling (#6183)
1 parent 7a75bd4 commit 9057614

File tree

4 files changed

+10
-33
lines changed

4 files changed

+10
-33
lines changed
 

‎packages/coverage-v8/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
"magic-string": "^0.30.10",
5555
"magicast": "^0.3.4",
5656
"std-env": "^3.7.0",
57-
"strip-literal": "^2.1.0",
5857
"test-exclude": "^7.0.1",
5958
"tinyrainbow": "^1.2.0"
6059
},

‎packages/coverage-v8/src/provider.ts

+1-7
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import remapping from '@ampproject/remapping'
1919
import { normalize, resolve } from 'pathe'
2020
import c from 'tinyrainbow'
2121
import { provider } from 'std-env'
22-
import { stripLiteral } from 'strip-literal'
2322
import createDebug from 'debug'
2423
import { cleanUrl } from 'vite-node/utils'
2524
import type { EncodedSourceMap, FetchResult } from 'vite-node'
@@ -391,16 +390,11 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
391390

392391
const coverages = await Promise.all(
393392
chunk.map(async (filename) => {
394-
const { originalSource, source } = await this.getSources(
393+
const { originalSource } = await this.getSources(
395394
filename.href,
396395
transformResults,
397396
)
398397

399-
// Ignore empty files, e.g. files that contain only typescript types and no runtime code
400-
if (source && stripLiteral(source).trim() === '') {
401-
return null
402-
}
403-
404398
const coverage = {
405399
url: filename.href,
406400
scriptId: '0',

‎pnpm-lock.yaml

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎test/coverage-test/test/empty-lines.v8.test.ts

+9-22
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ type LineCoverage = Record<number, CoveredLine | UncoveredLine | IgnoredLine>
1212
describe('include empty lines', () => {
1313
let coveredFileLines: LineCoverage
1414
let uncoveredFileLines: LineCoverage
15-
let files: string[]
1615

1716
beforeAll(async () => {
1817
await runVitest({
@@ -28,16 +27,7 @@ describe('include empty lines', () => {
2827
},
2928
})
3029

31-
;({ coveredFileLines, uncoveredFileLines, files } = await readCoverage())
32-
})
33-
34-
test('file containing only types is ignored', () => {
35-
expect(files).toMatchInlineSnapshot(`
36-
[
37-
"<process-cwd>/fixtures/src/empty-lines.ts",
38-
"<process-cwd>/fixtures/src/untested-file.ts",
39-
]
40-
`)
30+
;({ coveredFileLines, uncoveredFileLines } = await readCoverage())
4131
})
4232

4333
test('lines are included', async () => {
@@ -64,7 +54,7 @@ describe('include empty lines', () => {
6454
describe('ignore empty lines', () => {
6555
let coveredFileLines: LineCoverage
6656
let uncoveredFileLines: LineCoverage
67-
let files: string[]
57+
let typesOnlyFileLines: LineCoverage
6858

6959
beforeAll(async () => {
7060
await runVitest({
@@ -79,16 +69,13 @@ describe('ignore empty lines', () => {
7969
},
8070
})
8171

82-
;({ coveredFileLines, uncoveredFileLines, files } = await readCoverage())
72+
;({ coveredFileLines, uncoveredFileLines, typesOnlyFileLines } = await readCoverage())
8373
})
8474

85-
test('file containing only types is ignored', () => {
86-
expect(files).toMatchInlineSnapshot(`
87-
[
88-
"<process-cwd>/fixtures/src/empty-lines.ts",
89-
"<process-cwd>/fixtures/src/untested-file.ts",
90-
]
91-
`)
75+
test('file containing only types has no uncovered lines', () => {
76+
expect(typesOnlyFileLines[1]).toBe(undefined)
77+
expect(typesOnlyFileLines[2]).toBe(undefined)
78+
expect(typesOnlyFileLines[3]).toBe(undefined)
9279
})
9380

9481
test('empty lines are ignored', async () => {
@@ -184,12 +171,12 @@ coverageTest('cover some lines', () => {
184171

185172
async function readCoverage() {
186173
const coverageMap = await readCoverageMap()
187-
const files = coverageMap.files()
188174

189175
const coveredFileLines = coverageMap.fileCoverageFor('<process-cwd>/fixtures/src/empty-lines.ts').getLineCoverage() as LineCoverage
190176
const uncoveredFileLines = coverageMap.fileCoverageFor('<process-cwd>/fixtures/src/untested-file.ts').getLineCoverage() as LineCoverage
177+
const typesOnlyFileLines = coverageMap.fileCoverageFor('<process-cwd>/fixtures/src/types-only.ts').getLineCoverage() as LineCoverage
191178

192-
return { coveredFileLines, uncoveredFileLines, files }
179+
return { coveredFileLines, uncoveredFileLines, typesOnlyFileLines }
193180
}
194181

195182
function range(count: number, options: { base: number } = { base: 1 }) {

0 commit comments

Comments
 (0)
Please sign in to comment.