feat(vite): add v8 coverage support to vitest generator (#18114)

This commit is contained in:
Mike Gregson 2023-07-27 18:49:56 +01:00 committed by GitHub
parent 2dc6656f4b
commit 36dae70fb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 13 deletions

View File

@ -32,8 +32,8 @@
}, },
"coverageProvider": { "coverageProvider": {
"type": "string", "type": "string",
"enum": ["c8", "istanbul"], "enum": ["v8", "c8", "istanbul"],
"default": "c8", "default": "v8",
"description": "Coverage provider to use." "description": "Coverage provider to use."
}, },
"testTarget": { "testTarget": {

View File

@ -1,7 +1,7 @@
export interface VitestGeneratorSchema { export interface VitestGeneratorSchema {
project: string; project: string;
uiFramework: 'react' | 'none'; uiFramework: 'react' | 'none';
coverageProvider: 'c8' | 'istanbul'; coverageProvider: 'v8' | 'c8' | 'istanbul';
inSourceTests?: boolean; inSourceTests?: boolean;
skipViteConfig?: boolean; skipViteConfig?: boolean;
testTarget?: string; testTarget?: string;

View File

@ -9,7 +9,9 @@
"project": { "project": {
"type": "string", "type": "string",
"description": "The name of the project to test.", "description": "The name of the project to test.",
"$default": { "$source": "projectName" } "$default": {
"$source": "projectName"
}
}, },
"uiFramework": { "uiFramework": {
"type": "string", "type": "string",
@ -29,8 +31,8 @@
}, },
"coverageProvider": { "coverageProvider": {
"type": "string", "type": "string",
"enum": ["c8", "istanbul"], "enum": ["v8", "c8", "istanbul"],
"default": "c8", "default": "v8",
"description": "Coverage provider to use." "description": "Coverage provider to use."
}, },
"testTarget": { "testTarget": {

View File

@ -22,6 +22,7 @@ import initGenerator from '../init/init';
import { import {
vitestCoverageC8Version, vitestCoverageC8Version,
vitestCoverageIstanbulVersion, vitestCoverageIstanbulVersion,
vitestCoverageV8Version,
} from '../../utils/versions'; } from '../../utils/versions';
import { addTsLibDependencies } from '@nx/js'; import { addTsLibDependencies } from '@nx/js';
@ -64,16 +65,14 @@ export async function vitestGenerator(
createFiles(tree, schema, root); createFiles(tree, schema, root);
updateTsConfig(tree, schema, root); updateTsConfig(tree, schema, root);
const coverageProviderDependency = getCoverageProviderDependency(
schema.coverageProvider
);
const installCoverageProviderTask = addDependenciesToPackageJson( const installCoverageProviderTask = addDependenciesToPackageJson(
tree, tree,
{}, {},
schema.coverageProvider === 'istanbul' coverageProviderDependency
? {
'@vitest/coverage-istanbul': vitestCoverageIstanbulVersion,
}
: {
'@vitest/coverage-c8': vitestCoverageC8Version,
}
); );
tasks.push(installCoverageProviderTask); tasks.push(installCoverageProviderTask);
@ -150,5 +149,24 @@ function createFiles(
}); });
} }
function getCoverageProviderDependency(
coverageProvider: VitestGeneratorSchema['coverageProvider']
) {
switch (coverageProvider) {
case 'c8':
return {
'@vitest/coverage-c8': vitestCoverageC8Version,
};
case 'istanbul':
return {
'@vitest/coverage-istanbul': vitestCoverageIstanbulVersion,
};
default:
return {
'@vitest/coverage-v8': vitestCoverageV8Version,
};
}
}
export default vitestGenerator; export default vitestGenerator;
export const vitestSchematic = convertNxGenerator(vitestGenerator); export const vitestSchematic = convertNxGenerator(vitestGenerator);

View File

@ -11,4 +11,5 @@ export const edgeRuntimeVmVersion = '~3.0.2';
// Coverage providers // Coverage providers
export const vitestCoverageC8Version = '~0.32.0'; export const vitestCoverageC8Version = '~0.32.0';
export const vitestCoverageV8Version = '~0.32.0';
export const vitestCoverageIstanbulVersion = '~0.32.0'; export const vitestCoverageIstanbulVersion = '~0.32.0';