Skip to content

Commit b6a2165

Browse files
authored
fix(test): add build environment to karma (#2074)
1 parent c3593c7 commit b6a2165

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

packages/angular-cli/blueprints/ng2/files/karma.conf.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ module.exports = function (config) {
2323
lcovonly: './coverage/coverage.lcov'
2424
}
2525
},
26-
angularCliConfig: './angular-cli.json',
26+
angularCli: {
27+
config: './angular-cli.json',
28+
environment: 'dev'
29+
},
2730
reporters: ['progress', 'karma-remap-istanbul'],
2831
port: 9876,
2932
colors: true,

packages/angular-cli/models/webpack-build-test.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
const path = require('path');
44
const webpack = require('webpack');
55

6-
const getWebpackTestConfig = function(projectRoot, appConfig) {
7-
6+
const getWebpackTestConfig = function (projectRoot, environment, appConfig) {
7+
88
const appRoot = path.resolve(projectRoot, appConfig.root);
99

1010
return {
@@ -81,7 +81,15 @@ const getWebpackTestConfig = function(projectRoot, appConfig) {
8181
new webpack.SourceMapDevToolPlugin({
8282
filename: null, // if no value is provided the sourcemap is inlined
8383
test: /\.(ts|js)($|\?)/i // process .js and .ts files only
84-
})
84+
}),
85+
new webpack.NormalModuleReplacementPlugin(
86+
// This plugin is responsible for swapping the environment files.
87+
// Since it takes a RegExp as first parameter, we need to escape the path.
88+
// See https://webpack.github.io/docs/list-of-plugins.html#normalmodulereplacementplugin
89+
new RegExp(path.resolve(appRoot, appConfig.environments['source'])
90+
.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')),
91+
path.resolve(appRoot, appConfig.environments[environment])
92+
)
8593
],
8694
tslint: {
8795
emitErrors: false,

packages/angular-cli/plugins/karma.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ const getWebpackTestConfig = require('../models/webpack-build-test').getWebpackT
44
const init = (config) => {
55

66
// load Angular CLI config
7-
if (!config.angularCliConfig) throw new Error('Missing \'angularCliConfig\' entry in Karma config');
8-
const angularCliConfig = require(path.join(config.basePath, config.angularCliConfig));
7+
if (!config.angularCli || !config.angularCli.config) {
8+
throw new Error('Missing \'angularCli.config\' entry in Karma config');
9+
}
10+
const angularCliConfig = require(path.join(config.basePath, config.angularCli.config));
911
const appConfig = angularCliConfig.apps[0];
12+
const environment = config.angularCli.environment || 'dev';
1013

1114
// add webpack config
12-
config.webpack = getWebpackTestConfig(config.basePath, appConfig);
15+
config.webpack = getWebpackTestConfig(config.basePath, environment, appConfig);
1316
config.webpackMiddleware = {
1417
noInfo: true, // Hide webpack output because its noisy.
1518
stats: { // Also prevent chunk and module display output, cleaner look. Only emit errors.

0 commit comments

Comments
 (0)