Skip to content

Commit b017f84

Browse files
clydinalan-agius4
authored andcommitted
fix(@schematics/angular): improve coverage directory handling for Karma configuration comparisons
Analysis and comparison of coverage reporter directories has been improved. This provides more accurate removal of default configurations in favor of the built-in default configuration.
1 parent d80dae2 commit b017f84

File tree

4 files changed

+23
-23
lines changed

4 files changed

+23
-23
lines changed

packages/schematics/angular/migrations/karma/karma-config-comparer.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ export function hasDifferences(diff: KarmaConfigDiff): boolean {
120120
*/
121121
export async function compareKarmaConfigToDefault(
122122
projectConfigContent: string,
123-
projectRoot: string,
123+
projectName: string,
124+
karmaConfigPath: string,
124125
needDevkitPlugin: boolean,
125-
karmaConfigPath?: string,
126126
): Promise<KarmaConfigDiff>;
127127

128128
/**
@@ -135,25 +135,25 @@ export async function compareKarmaConfigToDefault(
135135
*/
136136
export async function compareKarmaConfigToDefault(
137137
projectAnalysis: KarmaConfigAnalysis,
138-
projectRoot: string,
138+
projectName: string,
139+
karmaConfigPath: string,
139140
needDevkitPlugin: boolean,
140-
karmaConfigPath?: string,
141141
): Promise<KarmaConfigDiff>;
142142

143143
export async function compareKarmaConfigToDefault(
144144
projectConfigOrAnalysis: string | KarmaConfigAnalysis,
145-
projectRoot: string,
145+
projectName: string,
146+
karmaConfigPath: string,
146147
needDevkitPlugin: boolean,
147-
karmaConfigPath?: string,
148148
): Promise<KarmaConfigDiff> {
149149
const projectAnalysis =
150150
typeof projectConfigOrAnalysis === 'string'
151151
? analyzeKarmaConfig(projectConfigOrAnalysis)
152152
: projectConfigOrAnalysis;
153153

154154
const defaultContent = await generateDefaultKarmaConfig(
155-
relativePathToWorkspaceRoot(karmaConfigPath ? path.dirname(karmaConfigPath) : projectRoot),
156-
path.basename(projectRoot),
155+
relativePathToWorkspaceRoot(path.dirname(karmaConfigPath)),
156+
projectName,
157157
needDevkitPlugin,
158158
);
159159
const defaultAnalysis = analyzeKarmaConfig(defaultContent);

packages/schematics/angular/migrations/karma/karma-config-comparer_spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -255,11 +255,11 @@ describe('Karma Config Comparer', () => {
255255
let defaultConfig: string;
256256

257257
beforeAll(async () => {
258-
defaultConfig = await generateDefaultKarmaConfig('..', 'test-project', true);
258+
defaultConfig = await generateDefaultKarmaConfig('.', 'test-project', true);
259259
});
260260

261261
it('should find no differences for the default config', async () => {
262-
const diff = await compareKarmaConfigToDefault(defaultConfig, 'test-project', true);
262+
const diff = await compareKarmaConfigToDefault(defaultConfig, 'test-project', '', true);
263263

264264
expect(diff.isReliable).toBe(true);
265265
expect(diff.added.size).toBe(0);
@@ -272,7 +272,7 @@ describe('Karma Config Comparer', () => {
272272
.replace(`restartOnFileChange: true`, `restartOnFileChange: false`)
273273
.replace(`reporters: ['progress', 'kjhtml']`, `reporters: ['dots']`);
274274

275-
const diff = await compareKarmaConfigToDefault(modifiedConfig, 'test-project', true);
275+
const diff = await compareKarmaConfigToDefault(modifiedConfig, 'test-project', '', true);
276276

277277
expect(diff.isReliable).toBe(true);
278278
expect(diff.added.size).toBe(0);
@@ -288,15 +288,15 @@ describe('Karma Config Comparer', () => {
288288

289289
it('should return an unreliable diff if the project config has unsupported values', async () => {
290290
const modifiedConfig = defaultConfig.replace(`browsers: ['Chrome']`, `browsers: myBrowsers`);
291-
const diff = await compareKarmaConfigToDefault(modifiedConfig, 'test-project', true);
291+
const diff = await compareKarmaConfigToDefault(modifiedConfig, 'test-project', '', true);
292292

293293
expect(diff.isReliable).toBe(false);
294294
expect(diff.removed.has('browsers')).toBe(true);
295295
});
296296

297297
it('should find no differences when devkit plugin is not needed', async () => {
298-
const projectConfig = await generateDefaultKarmaConfig('..', 'test-project', false);
299-
const diff = await compareKarmaConfigToDefault(projectConfig, 'test-project', false);
298+
const projectConfig = await generateDefaultKarmaConfig('.', 'test-project', false);
299+
const diff = await compareKarmaConfigToDefault(projectConfig, 'test-project', '', false);
300300

301301
expect(diff.isReliable).toBe(true);
302302
expect(diff.added.size).toBe(0);

packages/schematics/angular/migrations/karma/migration.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function updateProjects(tree: Tree): Rule {
1616
return updateWorkspace(async (workspace) => {
1717
const removableKarmaConfigs = new Map<string, boolean>();
1818

19-
for (const [, project] of workspace.projects) {
19+
for (const [projectName, project] of workspace.projects) {
2020
for (const [, target] of project.targets) {
2121
let needDevkitPlugin = false;
2222
switch (target.builder) {
@@ -46,9 +46,9 @@ function updateProjects(tree: Tree): Rule {
4646
} else {
4747
const diff = await compareKarmaConfigToDefault(
4848
analysis,
49-
project.root,
50-
needDevkitPlugin,
49+
projectName,
5150
karmaConfig,
51+
needDevkitPlugin,
5252
);
5353
isRemovable = !hasDifferences(diff) && diff.isReliable;
5454
}

packages/schematics/angular/migrations/karma/migration_spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ module.exports = function (config) {
3939
suppressAll: true // removes the duplicated traces
4040
},
4141
coverageReporter: {
42-
dir: require('path').join(__dirname, './coverage/'),
42+
dir: require('path').join(__dirname, './coverage/app'),
4343
subdir: '.',
4444
reporters: [
4545
{ type: 'html' },
@@ -74,7 +74,7 @@ module.exports = function (config) {
7474
suppressAll: true
7575
},
7676
coverageReporter: {
77-
dir: require('path').join(__dirname, './coverage/'),
77+
dir: require('path').join(__dirname, './coverage/app'),
7878
subdir: '.',
7979
reporters: [
8080
{ type: 'html' },
@@ -250,7 +250,7 @@ module.exports = function (config) {
250250
suppressAll: true
251251
},
252252
coverageReporter: {
253-
dir: require('path').join(__dirname, './coverage/'),
253+
dir: require('path').join(__dirname, './coverage/app'),
254254
subdir: '.',
255255
reporters: [
256256
{ type: 'html' },
@@ -304,7 +304,7 @@ module.exports = function (config) {
304304
suppressAll: true
305305
},
306306
coverageReporter: {
307-
dir: require('path').join(__dirname, './coverage/'),
307+
dir: require('path').join(__dirname, './coverage/app'),
308308
subdir: '.',
309309
reporters: [
310310
{ type: 'html' },
@@ -368,7 +368,7 @@ module.exports = function (config) {
368368
suppressAll: true
369369
},
370370
coverageReporter: {
371-
dir: require('path').join(__dirname, '../coverage/'),
371+
dir: require('path').join(__dirname, '../coverage/app'),
372372
subdir: '.',
373373
reporters: [
374374
{ type: 'html' },
@@ -414,7 +414,7 @@ module.exports = function (config) {
414414
suppressAll: true
415415
},
416416
coverageReporter: {
417-
dir: require('path').join(__dirname, './coverage/'),
417+
dir: require('path').join(__dirname, './coverage/app'),
418418
subdir: '.',
419419
reporters: [
420420
{ type: 'html' },

0 commit comments

Comments
 (0)