[READ-ONLY] Mirror of https://github.com/vitest-dev/vitest. Next generation testing framework powered by Vite. vitest.dev
test testing-tools vite
12

Configure Feed

Select the types of activity you want to include in your feed.

fix(coverage): exclude vite virtual modules by default (#3794)

authored by

Ari Perkkiö and committed by
GitHub
(Jul 28, 2023, 12:29 PM +0200) 3c851872 e8bc46b6

+61
+3
docs/config/index.md
··· 723 723 'dist/**', 724 724 'packages/*/test?(s)/**', 725 725 '**/*.d.ts', 726 + '**/virtual:*', 727 + '**/__x00__*', 728 + '**/\x00*', 726 729 'cypress/**', 727 730 'test?(s)/**', 728 731 'test?(-*).?(c|m)[jt]s?(x)',
+27
test/coverage-test/vitest.config.ts
··· 7 7 export default defineConfig({ 8 8 plugins: [ 9 9 vue(), 10 + { 11 + // Simulates Vite's virtual files: https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention 12 + name: 'vitest-custom-virtual-files', 13 + resolveId(id) { 14 + if (id === 'virtual:vitest-custom-virtual-file-1') 15 + return 'src/virtual:vitest-custom-virtual-file-1.ts' 16 + 17 + if (id === '\0vitest-custom-virtual-file-2') 18 + return 'src/\0vitest-custom-virtual-file-2.ts' 19 + }, 20 + load(id) { 21 + if (id === 'src/virtual:vitest-custom-virtual-file-1.ts') { 22 + return ` 23 + const virtualFile = "This file should be excluded from coverage report #1" 24 + export default virtualFile; 25 + ` 26 + } 27 + 28 + // Vitest browser resolves this as "\x00", Node as "__x00__" 29 + if (id === 'src/__x00__vitest-custom-virtual-file-2.ts' || id === 'src/\x00vitest-custom-virtual-file-2.ts') { 30 + return ` 31 + const virtualFile = "This file should be excluded from coverage report #2" 32 + export default virtualFile; 33 + ` 34 + } 35 + }, 36 + }, 10 37 ], 11 38 define: { 12 39 MY_CONSTANT: '"my constant"',
+3
packages/vitest/src/defaults.ts
··· 15 15 'dist/**', 16 16 'packages/*/test?(s)/**', 17 17 '**/*.d.ts', 18 + '**/virtual:*', 19 + '**/__x00__*', 20 + '**/\x00*', 18 21 'cypress/**', 19 22 'test?(s)/**', 20 23 'test?(-*).?(c|m)[jt]s?(x)',
+16
test/coverage-test/coverage-report-tests/generic.report.test.ts
··· 101 101 102 102 expect(files).toContain('junit.xml') 103 103 }) 104 + 105 + test('virtual files should be excluded', () => { 106 + const files = fs.readdirSync(resolve('./coverage')) 107 + const srcFiles = fs.readdirSync(resolve('./coverage/src')) 108 + 109 + for (const file of [...files, ...srcFiles]) { 110 + expect(file).not.toContain('virtual:') 111 + 112 + // Vitest in node 113 + expect(file).not.toContain('__x00__') 114 + expect(file).not.toContain('\0') 115 + 116 + // Vitest browser 117 + expect(file).not.toContain('\x00') 118 + } 119 + })
+12
test/coverage-test/test/coverage.test.ts
··· 1 1 import { expect, test } from 'vitest' 2 + 3 + // @ts-expect-error -- untyped virtual file provided by custom plugin 4 + import virtualFile1 from 'virtual:vitest-custom-virtual-file-1' 5 + 2 6 import { implicitElse } from '../src/implicitElse' 3 7 import { useImportEnv } from '../src/importEnv' 4 8 import { second } from '../src/function-count' 5 9 import { runDynamicFileCJS, runDynamicFileESM } from '../src/dynamic-files' 10 + 11 + // @ts-expect-error -- untyped virtual file provided by custom plugin 12 + import virtualFile2 from '\0vitest-custom-virtual-file-2' 6 13 7 14 // Browser mode crashes with dynamic files. Enable this when browser mode works. 8 15 // To keep istanbul report consistent between browser and node, skip dynamic tests when istanbul is used. ··· 39 46 40 47 test.skipIf(skipDynamicFiles)('run dynamic CJS file', async () => { 41 48 await runDynamicFileCJS() 49 + }) 50 + 51 + test('virtual file imports', () => { 52 + expect(virtualFile1).toBe('This file should be excluded from coverage report #1') 53 + expect(virtualFile2).toBe('This file should be excluded from coverage report #2') 42 54 })