Skip to content

Commit eebb0b9

Browse files
iftee-hussainclydin
authored andcommitted
fix(@angular-devkit/build-angular): fixed ignoring of karma plugins config
Previously `karma-coverage` was validated only when in karma plugins config one of these was added ``'karma-coverage'` or `require('karma-coverage')` This change will allow cli to validate `karma-coverage` plugin if in `karma.conf.js` `'karma-*'` is used. Example: ``` plugins: [ ... 'karma-*', require('@angular-devkit/build-angular/plugins/karma'), ... ] ``` Fixes #19993 (cherry picked from commit a7ffce1)
1 parent e9beed8 commit eebb0b9

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

packages/angular_devkit/build_angular/src/karma/code-coverage_spec.ts

+12
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,16 @@ describe('Karma Builder code coverage', () => {
184184
expect(success).toBe(true);
185185
await run.stop();
186186
}, 120000);
187+
188+
it('is able to process coverage plugins provided as string karma-*', async () => {
189+
host.replaceInFile('karma.conf.js', /plugins: \[.+?\]/s, `plugins: [
190+
'karma-*',
191+
require('@angular-devkit/build-angular/plugins/karma'),
192+
]`);
193+
const run = await architect.scheduleTarget(karmaTargetSpec, { codeCoverage: true });
194+
195+
const {success} = await run.result;
196+
expect(success).toBe(true);
197+
await run.stop();
198+
}, 120000);
187199
});

packages/angular_devkit/build_angular/src/webpack/plugins/karma/karma.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,17 @@ function fallbackMiddleware() {
336336
function isPlugin(moduleId: string, pluginName: string) {
337337
return (plugin: string|{}): boolean => {
338338
if (typeof plugin === 'string') {
339-
return plugin === moduleId;
339+
if (!plugin.includes('*')) {
340+
return plugin === moduleId;
341+
}
342+
const regexp = new RegExp(`^${plugin.replace('*', '.*')}`);
343+
if (regexp.test(moduleId)) {
344+
try {
345+
require.resolve(moduleId);
346+
return true;
347+
} catch {}
348+
}
349+
return false;
340350
}
341351
return pluginName in plugin;
342352
}

0 commit comments

Comments
 (0)