Skip to content

Commit 803fa36

Browse files
author
Danny Blue
committed
feat (CodeCoverage): use karma-remap-istanbul
use karma-remap-istanbul to map code coverage back to source typescript file
1 parent c31e8cb commit 803fa36

File tree

4 files changed

+41
-5
lines changed

4 files changed

+41
-5
lines changed

addon/ng2/blueprints/ng2/files/config/karma.conf.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ module.exports = function (config) {
99
require('karma-jasmine'),
1010
require('karma-chrome-launcher'),
1111
require('karma-coverage'),
12-
require('angular-cli/plugins/karma')
12+
require('angular-cli/plugins/karma'),
13+
require('karma-remap-istanbul')
1314
],
1415
customLaunchers: {
1516
// chrome setup for travis CI using chromium
@@ -22,10 +23,34 @@ module.exports = function (config) {
2223
{ pattern: './src/test.ts', watched: false }
2324
],
2425
preprocessors: {
26+
'./src/**/**/*.ts': ['angular-cli-coverage'],
2527
'./src/test.ts': ['angular-cli']
2628
},
29+
coverageReporter: {
30+
dir: 'coverage',
31+
reporters: [
32+
{
33+
type: 'text-summary'
34+
},
35+
{
36+
type: 'json',
37+
subdir: '.',
38+
file: 'coverage-final.json'
39+
}
40+
]
41+
},
42+
43+
remapIstanbulReporter: {
44+
src: 'coverage/coverage-final.json',
45+
reports: {
46+
lcovonly: 'coverage/lcov.info',
47+
html: 'coverage/report'
48+
},
49+
timeoutNotCreated: 5000,
50+
timeoutNoMoreFiles: 1000
51+
},
2752
angularCliConfig: './angular-cli.json',
28-
reporters: ['coverage', 'progress'],
53+
reporters: ['coverage', 'progress', 'karma-remap-istanbul'],
2954
port: 9876,
3055
colors: true,
3156
logLevel: config.LOG_INFO,

addon/ng2/blueprints/ng2/files/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
"karma-chrome-launcher": "0.2.3",
4545
"karma-coverage": "^1.0.0",
4646
"karma-jasmine": "0.3.8",
47+
"karma-remap-istanbul": "^0.1.1",
4748
"protractor": "3.3.0",
4849
"ts-node": "1.2.1",
4950
"tslint": "3.13.0",

addon/ng2/models/webpack-build-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ const getWebpackTestConfig = function(projectRoot, sourceDir) {
4646
tsconfig: path.resolve(projectRoot, `./${sourceDir}/tsconfig.json`),
4747
module: 'commonjs',
4848
target: 'es5',
49+
mapRoot: false,
50+
sourceMap: false,
51+
inlineSourceMap: true,
4952
useForkChecker: true,
5053
removeComments: true
5154
}

plugins/karma.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,17 @@ const init = (config) => {
2222
}
2323
};
2424

25-
// replace the angular-cli preprocessor with webpack+sourcemap
25+
// replace the angular-cli preprocessor with webpack
2626
Object.keys(config.preprocessors)
2727
.filter((file) => config.preprocessors[file].indexOf('angular-cli') !== -1)
2828
.map((file) => config.preprocessors[file])
29-
.map((arr) => arr.splice(arr.indexOf('angular-cli'), 1, 'webpack', 'sourcemap'));
29+
.map((arr) => arr.splice(arr.indexOf('angular-cli'), 1, 'webpack'));
30+
31+
// replace the angular-cli preprocessor with webpack + sourcemap + coverage
32+
Object.keys(config.preprocessors)
33+
.filter((file) => config.preprocessors[file].indexOf('angular-cli-coverage') !== -1)
34+
.map((file) => config.preprocessors[file])
35+
.map((arr) => arr.splice(arr.indexOf('angular-cli-coverage'), 1, 'webpack', 'sourcemap', 'coverage'));
3036
}
3137

3238
init.$inject = ['config']
@@ -38,5 +44,6 @@ preprocessor.$inject = []
3844
// also export karma-webpack and karma-sourcemap-loader
3945
module.exports = Object.assign({
4046
'framework:angular-cli': ['factory', init],
41-
'preprocessor:angular-cli': ['factory', preprocessor]
47+
'preprocessor:angular-cli': ['factory', preprocessor],
48+
'preprocessor:angular-cli-coverage': ['factory', preprocessor],
4249
}, require('karma-webpack'), require('karma-sourcemap-loader'));

0 commit comments

Comments
 (0)