Skip to content

Commit

Permalink
feat!: set 'v8' as default coverage.provider
Browse files Browse the repository at this point in the history
  • Loading branch information
AriPerkkio committed May 16, 2023
1 parent 8b03c6e commit fabc25c
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 6 deletions.
2 changes: 1 addition & 1 deletion docs/config/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ If you are using coverage options with dot notation, don't forget to specify `--
#### coverage.provider

- **Type:** `'c8' | 'v8' | 'istanbul' | 'custom'`
- **Default:** `'c8'`
- **Default:** `'v8'`
- **CLI:** `--coverage.provider=<provider>`

Use `provider` to select the tool for coverage collection.
Expand Down
2 changes: 1 addition & 1 deletion packages/vitest/src/defaults.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const defaultCoverageExcludes = [

// These are the generic defaults for coverage. Providers may also set some provider specific defaults.
export const coverageConfigDefaults: ResolvedCoverageOptions = {
provider: 'c8',
provider: 'v8',
enabled: false,
clean: true,
cleanOnRerun: true,
Expand Down
14 changes: 12 additions & 2 deletions packages/vitest/src/node/cli-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,21 @@ export async function startVitest(
const ctx = await createVitest(mode, options, viteOverrides)

if (mode === 'test' && ctx.config.coverage.enabled) {
const provider = ctx.config.coverage.provider || 'c8'
const provider = ctx.config.coverage.provider || 'v8'
const requiredPackages = CoverageProviderMap[provider]

if (requiredPackages) {
if (!await ensurePackageInstalled(requiredPackages, root)) {
// Remove this message once support for @vitest/coverage-c8 has been removed completely
const defaultProviderInfo = 'Default coverage provider has changed from "c8" to "v8". '
+ 'New package is required to be installed. '
+ 'To use the old deprecated coverage provider use "--coverage.provider c8" option.\n'
+ 'See https://github.com/vitest-dev/vitest/pull/3339 for more information.\n\n'

const isUsingDefaultProvider
= ctx.server.config.test?.coverage?.provider === undefined
&& options.coverage?.provider === undefined

if (!await ensurePackageInstalled(requiredPackages, root, isUsingDefaultProvider ? defaultProviderInfo : undefined)) {
process.exitCode = 1
return ctx
}
Expand Down
4 changes: 4 additions & 0 deletions packages/vitest/src/node/pkg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,16 @@ const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
export async function ensurePackageInstalled(
dependency: string,
root: string,
errorMessage?: string,
) {
if (isPackageExists(dependency, { paths: [root, __dirname] }))
return true

const promptInstall = !isCI && process.stdout.isTTY

if (errorMessage)
process.stderr.write(c.red(errorMessage))

process.stderr.write(c.red(`${c.inverse(c.red(' MISSING DEP '))} Can not find dependency '${dependency}'\n\n`))

if (!promptInstall)
Expand Down
4 changes: 2 additions & 2 deletions test/config/test/failures.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,13 @@ test('inspect-brk cannot be used with threads', async () => {
})

test('c8 coverage provider cannot be used with browser', async () => {
const { error } = await runVitest('run', ['--coverage.enabled', '--browser'])
const { error } = await runVitest('run', ['--coverage.enabled', '--coverage.provider', 'c8', '--browser'])

expect(error).toMatch('Error: @vitest/coverage-c8 does not work with --browser. Use @vitest/coverage-istanbul instead')
})

test('v8 coverage provider cannot be used with browser', async () => {
const { error } = await runVitest('run', ['--coverage.enabled', '--coverage.provider', 'v8', '--browser'])
const { error } = await runVitest('run', ['--coverage.enabled', '--browser'])

expect(error).toMatch('Error: @vitest/coverage-v8 does not work with --browser. Use @vitest/coverage-istanbul instead')
})
Expand Down

0 comments on commit fabc25c

Please sign in to comment.