fix(testing): add root karma config if one isn't present when using karma-project generator (#9485)
when using the karma-project generator directory ensure the karma generator (install deps/root config) is called if the root karma config isn't present ISSUES CLOSED: #9234
This commit is contained in:
parent
167b57a189
commit
c12a647c11
@ -661,6 +661,11 @@
|
|||||||
"description": "Skip formatting files.",
|
"description": "Skip formatting files.",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
|
},
|
||||||
|
"skipPackageJson": {
|
||||||
|
"description": "Skip updating package.json.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
|
|||||||
@ -41,11 +41,13 @@ describe('karmaProject', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should generate files', async () => {
|
it('should generate files', async () => {
|
||||||
|
expect(tree.exists('karma.conf.js')).toBeFalsy();
|
||||||
await karmaProjectGenerator(tree, { project: 'lib1' });
|
await karmaProjectGenerator(tree, { project: 'lib1' });
|
||||||
|
|
||||||
expect(tree.exists('/libs/lib1/karma.conf.js')).toBeTruthy();
|
expect(tree.exists('/libs/lib1/karma.conf.js')).toBeTruthy();
|
||||||
expect(tree.exists('/libs/lib1/tsconfig.spec.json')).toBeTruthy();
|
expect(tree.exists('/libs/lib1/tsconfig.spec.json')).toBeTruthy();
|
||||||
expect(tree.exists('/libs/lib1/src/test.ts')).toBeTruthy();
|
expect(tree.exists('/libs/lib1/src/test.ts')).toBeTruthy();
|
||||||
|
expect(tree.exists('karma.conf.js')).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should create a karma.conf.js', async () => {
|
it('should create a karma.conf.js', async () => {
|
||||||
|
|||||||
@ -5,11 +5,13 @@ import { generateKarmaProjectFiles } from './lib/generate-karma-project-files';
|
|||||||
import { updateTsConfigs } from './lib/update-tsconfig';
|
import { updateTsConfigs } from './lib/update-tsconfig';
|
||||||
import { updateWorkspaceConfig } from './lib/update-workspace-config';
|
import { updateWorkspaceConfig } from './lib/update-workspace-config';
|
||||||
import type { KarmaProjectOptions } from './schema';
|
import type { KarmaProjectOptions } from './schema';
|
||||||
|
import { karmaGenerator } from '../karma/karma';
|
||||||
|
|
||||||
export async function karmaProjectGenerator(
|
export async function karmaProjectGenerator(
|
||||||
tree: Tree,
|
tree: Tree,
|
||||||
options: KarmaProjectOptions
|
options: KarmaProjectOptions
|
||||||
) {
|
) {
|
||||||
|
karmaGenerator(tree, options);
|
||||||
checkProjectTestTarget(tree, options.project);
|
checkProjectTestTarget(tree, options.project);
|
||||||
generateKarmaProjectFiles(tree, options.project);
|
generateKarmaProjectFiles(tree, options.project);
|
||||||
updateTsConfigs(tree, options.project);
|
updateTsConfigs(tree, options.project);
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
export interface KarmaProjectOptions {
|
export interface KarmaProjectOptions {
|
||||||
project: string;
|
project: string;
|
||||||
skipFormat?: boolean;
|
skipFormat?: boolean;
|
||||||
|
skipPackageJson?: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,11 @@
|
|||||||
"description": "Skip formatting files.",
|
"description": "Skip formatting files.",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
|
},
|
||||||
|
"skipPackageJson": {
|
||||||
|
"description": "Skip updating package.json.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
|
|||||||
@ -9,7 +9,21 @@ describe('karma', () => {
|
|||||||
tree = createTreeWithEmptyWorkspace();
|
tree = createTreeWithEmptyWorkspace();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should do nothing when karma is already installed', () => {
|
it('should do nothing when karma is already installed and karma.conf.js exists', () => {
|
||||||
|
jest.spyOn(devkit, 'generateFiles');
|
||||||
|
jest.spyOn(devkit, 'addDependenciesToPackageJson');
|
||||||
|
devkit.updateJson(tree, 'package.json', (json) => {
|
||||||
|
json.devDependencies = { karma: '~5.0.0' };
|
||||||
|
return json;
|
||||||
|
});
|
||||||
|
tree.write('karma.conf.js', '');
|
||||||
|
karmaGenerator(tree, {});
|
||||||
|
|
||||||
|
expect(devkit.generateFiles).not.toHaveBeenCalled();
|
||||||
|
expect(devkit.addDependenciesToPackageJson).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create karma.conf.js when karma is installed', () => {
|
||||||
jest.spyOn(devkit, 'generateFiles');
|
jest.spyOn(devkit, 'generateFiles');
|
||||||
jest.spyOn(devkit, 'addDependenciesToPackageJson');
|
jest.spyOn(devkit, 'addDependenciesToPackageJson');
|
||||||
devkit.updateJson(tree, 'package.json', (json) => {
|
devkit.updateJson(tree, 'package.json', (json) => {
|
||||||
@ -19,7 +33,7 @@ describe('karma', () => {
|
|||||||
|
|
||||||
karmaGenerator(tree, {});
|
karmaGenerator(tree, {});
|
||||||
|
|
||||||
expect(devkit.generateFiles).not.toHaveBeenCalled();
|
expect(devkit.generateFiles).toHaveBeenCalled();
|
||||||
expect(devkit.addDependenciesToPackageJson).not.toHaveBeenCalled();
|
expect(devkit.addDependenciesToPackageJson).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -9,28 +9,30 @@ import { GeneratorOptions } from './schema';
|
|||||||
|
|
||||||
export function karmaGenerator(tree: Tree, options: GeneratorOptions) {
|
export function karmaGenerator(tree: Tree, options: GeneratorOptions) {
|
||||||
const packageJson = readJson(tree, 'package.json');
|
const packageJson = readJson(tree, 'package.json');
|
||||||
if (packageJson.devDependencies['karma']) {
|
|
||||||
return;
|
if (!tree.exists('karma.conf.js')) {
|
||||||
|
generateFiles(tree, joinPathFragments(__dirname, 'files'), '.', {
|
||||||
|
tmpl: '',
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
generateFiles(tree, joinPathFragments(__dirname, 'files'), '.', { tmpl: '' });
|
if (options.skipPackageJson || packageJson.devDependencies['karma']) {
|
||||||
|
return () => {};
|
||||||
return !options.skipPackageJson
|
}
|
||||||
? addDependenciesToPackageJson(
|
return addDependenciesToPackageJson(
|
||||||
tree,
|
tree,
|
||||||
{},
|
{},
|
||||||
{
|
{
|
||||||
karma: '~6.3.0',
|
karma: '~6.3.0',
|
||||||
'karma-chrome-launcher': '~3.1.0',
|
'karma-chrome-launcher': '~3.1.0',
|
||||||
'karma-coverage': '~2.2.0',
|
'karma-coverage': '~2.2.0',
|
||||||
'karma-jasmine': '~4.0.0',
|
'karma-jasmine': '~4.0.0',
|
||||||
'karma-jasmine-html-reporter': '~1.7.0',
|
'karma-jasmine-html-reporter': '~1.7.0',
|
||||||
'jasmine-core': '~3.10.0',
|
'jasmine-core': '~3.10.0',
|
||||||
'jasmine-spec-reporter': '~5.0.0',
|
'jasmine-spec-reporter': '~5.0.0',
|
||||||
'@types/jasmine': '~3.5.0',
|
'@types/jasmine': '~3.5.0',
|
||||||
}
|
}
|
||||||
)
|
);
|
||||||
: () => {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default karmaGenerator;
|
export default karmaGenerator;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user