Skip to content

Commit 5f5151a

Browse files
committed
fix: fixed ignoring of karma plugins config
Previouslt `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
1 parent cae2209 commit 5f5151a

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

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

Lines changed: 12 additions & 0 deletions
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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@
77
*/
88
// tslint:disable
99
// TODO: cleanup this file, it's copied as is from Angular CLI.
10+
import * as fs from 'fs';
1011
import * as http from 'http';
1112
import * as path from 'path';
1213
import * as glob from 'glob';
1314
import * as webpack from 'webpack';
15+
16+
const karmaPath = path.dirname(require.resolve('karma'));
1417
const webpackDevMiddleware = require('webpack-dev-middleware');
1518

1619
import { KarmaWebpackFailureCb } from './karma-webpack-failure-cb';
@@ -336,6 +339,13 @@ function fallbackMiddleware() {
336339
function isPlugin(moduleId: string, pluginName: string) {
337340
return (plugin: string|{}): boolean => {
338341
if (typeof plugin === 'string') {
342+
if(karmaPath) {
343+
const pluginDirectory = path.join(karmaPath, '../../');
344+
const regexp = new RegExp(`^${plugin.replace('*', '.*')}`)
345+
const installeKarmaPlugins = fs.readdirSync(pluginDirectory)
346+
.filter((installedPluginName) => regexp.test(installedPluginName));
347+
return installeKarmaPlugins.includes( moduleId);
348+
}
339349
return plugin === moduleId;
340350
}
341351
return pluginName in plugin;

0 commit comments

Comments
 (0)