Skip to content

Commit 6eda473

Browse files
authoredMar 12, 2024··
fix(coverage): respect source maps of pre-transpiled sources (#5367)
1 parent 6d1b145 commit 6eda473

File tree

10 files changed

+978
-1
lines changed

10 files changed

+978
-1
lines changed
 

‎eslint.config.js

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ export default antfu(
1515
'test/workspaces/results.json',
1616
'test/reporters/fixtures/with-syntax-error.test.js',
1717
'test/network-imports/public/slash@3.0.0.js',
18+
'test/coverage-test/src/transpiled.js',
19+
'test/coverage-test/src/original.ts',
1820
'examples/**/mockServiceWorker.js',
1921
'examples/sveltekit/.svelte-kit',
2022
],

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -323,14 +323,18 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
323323
}
324324
}
325325

326+
const sources = [url]
327+
if (map.sources && map.sources[0] && !url.endsWith(map.sources[0]))
328+
sources[0] = new URL(map.sources[0], url).href
329+
326330
return {
327331
originalSource: sourcesContent,
328332
source: code || sourcesContent,
329333
sourceMap: {
330334
sourcemap: excludeGeneratedCode(code, {
331335
...map,
332336
version: 3,
333-
sources: [url],
337+
sources,
334338
sourcesContent: [sourcesContent],
335339
}),
336340
},

‎test/coverage-test/coverage-report-tests/__snapshots__/custom.report.test.ts.snap

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ exports[`custom json report 1`] = `
2929
"<process-cwd>/src/index.mts",
3030
"<process-cwd>/src/multi-environment.ts",
3131
"<process-cwd>/src/multi-suite.ts",
32+
"<process-cwd>/src/transpiled.js",
3233
"<process-cwd>/src/utils.ts",
3334
],
3435
}

‎test/coverage-test/coverage-report-tests/__snapshots__/istanbul.report.test.ts.snap

+497
Large diffs are not rendered by default.

‎test/coverage-test/coverage-report-tests/__snapshots__/v8.report.test.ts.snap

+413
Large diffs are not rendered by default.

‎test/coverage-test/src/original.ts

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
export const hello = (arg?: unknown) => {
2+
if (arg) {
3+
// Uncovered
4+
noop();
5+
}
6+
7+
// Covered
8+
noop();
9+
10+
if (arg === 3) {
11+
// Uncovered
12+
noop();
13+
}
14+
15+
if (arg === undefined) {
16+
// Covered
17+
noop();
18+
}
19+
};
20+
21+
function noop() {}
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './original'

‎test/coverage-test/src/transpiled.js

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

‎test/coverage-test/src/transpiled.js.map

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

‎test/coverage-test/test/coverage.test.ts

+7
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,10 @@ test('virtual file imports', () => {
7676
test('decorators', () => {
7777
new DecoratorsTester().method('cover line')
7878
})
79+
80+
// Istanbul fails to follow source maps on windows
81+
test.skipIf(globalThis.process?.env.COVERAGE_PROVIDER === 'istanbul')('pre-transpiled code with source maps to original', async () => {
82+
const transpiled = await import('../src/transpiled.js')
83+
84+
transpiled.hello()
85+
})

0 commit comments

Comments
 (0)
Please sign in to comment.