From 488e4b9fa61bd0f2c9944134efc05463311dcc3d Mon Sep 17 00:00:00 2001 From: Gurkiran Singh <61521805+g4rry420@users.noreply.github.com> Date: Thu, 19 Jan 2023 04:57:00 -0500 Subject: [PATCH] fix: remove setup files from coverage (#2574) Closes https://github.com/vitest-dev/vitest/issues/2190 --- packages/vitest/src/node/config.ts | 3 ++- .../coverage-report-tests/generic.report.test.ts | 13 +++++++++++++ test/coverage-test/setup.ts | 2 ++ test/coverage-test/src/another-setup.ts | 2 ++ test/coverage-test/vitest.config.ts | 5 +++++ 5 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/coverage-test/setup.ts create mode 100644 test/coverage-test/src/another-setup.ts diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts index 0d7b4f24f9ec..f2270351b5ef 100644 --- a/packages/vitest/src/node/config.ts +++ b/packages/vitest/src/node/config.ts @@ -1,5 +1,5 @@ import { resolveModule } from 'local-pkg' -import { normalize, resolve } from 'pathe' +import { normalize, relative, resolve } from 'pathe' import c from 'picocolors' import type { ResolvedConfig as ResolvedViteConfig } from 'vite' @@ -190,6 +190,7 @@ export function resolveConfig( ?? resolve(resolved.root, file), ), ) + resolved.coverage.exclude.push(...resolved.setupFiles.map(file => relative(resolved.root, file))) resolved.forceRerunTriggers = [ ...resolved.forceRerunTriggers, diff --git a/test/coverage-test/coverage-report-tests/generic.report.test.ts b/test/coverage-test/coverage-report-tests/generic.report.test.ts index 1acae42d3464..f79271bc7575 100644 --- a/test/coverage-test/coverage-report-tests/generic.report.test.ts +++ b/test/coverage-test/coverage-report-tests/generic.report.test.ts @@ -50,3 +50,16 @@ test('file using import.meta.env is included in report', async () => { expect(files).toContain('importEnv.ts.html') }) + +test('files should not contain a setup file', () => { + const coveragePath = resolve('./coverage') + const files = fs.readdirSync(coveragePath) + + expect(files).not.toContain('coverage-test') + expect(files).not.toContain('setup.ts.html') + + const coverageSrcPath = resolve('./coverage/src') + const srcFiles = fs.readdirSync(coverageSrcPath) + + expect(srcFiles).not.toContain('another-setup.ts.html') +}) diff --git a/test/coverage-test/setup.ts b/test/coverage-test/setup.ts new file mode 100644 index 000000000000..5ad1de518c35 --- /dev/null +++ b/test/coverage-test/setup.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log('Test Setup File') diff --git a/test/coverage-test/src/another-setup.ts b/test/coverage-test/src/another-setup.ts new file mode 100644 index 000000000000..f2c86b7a0b9d --- /dev/null +++ b/test/coverage-test/src/another-setup.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line no-console +console.log('Another Setup File') diff --git a/test/coverage-test/vitest.config.ts b/test/coverage-test/vitest.config.ts index 6d63db774c81..04ecdaa76505 100644 --- a/test/coverage-test/vitest.config.ts +++ b/test/coverage-test/vitest.config.ts @@ -1,3 +1,4 @@ +import { resolve } from 'pathe' import { defineConfig } from 'vitest/config' import vue from '@vitejs/plugin-vue' @@ -16,5 +17,9 @@ export default defineConfig({ all: true, reporter: ['html', 'text', 'lcov', 'json'], }, + setupFiles: [ + resolve(__dirname, './setup.ts'), + './src/another-setup.ts', + ], }, })