Skip to content

Commit 6c142c8

Browse files
committed
chore(gulp): Added test coverage generator
- Added coverage generator to Karma config - Added coverage remapper (from JS to TS) - Updated dependencies
1 parent 5baaeb8 commit 6c142c8

File tree

7 files changed

+74
-12
lines changed

7 files changed

+74
-12
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
/demo/*.js
2828
!/demo/systemjs.config.js
2929

30+
# Test coverage
31+
/test-coverage
32+
3033
# Development
3134
/.vscode
3235

.npmignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
/tsconfig-aot.json
3131
/tslint.json
3232

33+
# Test coverage
34+
/test-coverage
35+
3336
# GitHub templates
3437
/.github
3538

gulpfile.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ gulp.task( 'clean',
4040
gulp.parallel( [
4141
'env:clean--lib',
4242
'env:clean--bundles',
43-
'env:clean--demo'
43+
'env:clean--demo',
44+
'env:clean--coverage'
4445
] )
4546
);
4647

@@ -62,10 +63,7 @@ gulp.task( 'build--dev',
6263
*/
6364
gulp.task( 'build--publish',
6465
gulp.series( [
65-
gulp.parallel( [
66-
'env:clean--lib',
67-
'env:clean--bundles'
68-
] ),
66+
'clean',
6967
gulp.parallel( [
7068
'ts:lint',
7169
'sass:lint',
@@ -102,12 +100,16 @@ gulp.task( 'build--demo',
102100
*/
103101
gulp.task( 'test',
104102
gulp.series( [
105-
'env:clean--lib',
103+
gulp.parallel( [
104+
'env:clean--lib',
105+
'env:clean--coverage',
106+
] ),
106107
gulp.parallel( [
107108
'ts:build--dev',
108109
'ts:build--tests'
109110
] ),
110-
'ts:spec'
111+
'ts:test--spec',
112+
'ts:test--coverage'
111113
] )
112114
);
113115

karma.config.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,38 @@ module.exports = function( config ) {
1717
// List of used plugins
1818
plugins: [
1919
require( 'karma-chrome-launcher' ),
20+
require( 'karma-coverage' ),
2021
require( 'karma-jasmine' ),
2122
require( 'karma-mocha-reporter' )
2223
],
2324

25+
// Preprocessors
26+
preprocessors: {
27+
'src/**/!(*spec).js': 'coverage'
28+
},
29+
2430
// List of reporters, e.g. 'dots', 'progress' (see https://npmjs.org/browse/keyword/karma-reporter)
2531
reporters: [
32+
'coverage',
2633
'mocha'
2734
],
2835

36+
// Test coverage settings
37+
coverageReporter: {
38+
dir : './test-coverage/js',
39+
reporters: [
40+
{
41+
type: 'json', // For remapping back to TypeScript
42+
subdir: '.',
43+
file: 'coverage.json'
44+
},
45+
{
46+
type: 'html', // For viewing in the browser
47+
subdir: '.' // Prevent browser-specific folder naming
48+
}
49+
]
50+
},
51+
2952
// Web server port
3053
port: 9876,
3154

package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"peerDependencies": {
4141
"@angular/core": "2.x",
4242
"@angular/common": "2.x",
43-
"rxjs": "5.0.0-beta.12"
43+
"rxjs": "5.0.0-rc.4"
4444
},
4545
"devDependencies": {
4646
"@angular/core": "2.x",
@@ -51,7 +51,7 @@
5151
"@angular/platform-browser-dynamic": "2.x",
5252
"@types/jasmine": "2.5.x",
5353
"browser-sync": "2.18.x",
54-
"codelyzer": "2.0.0-beta.1",
54+
"codelyzer": "2.0.0-beta.3",
5555
"conventional-github-releaser": "1.1.x",
5656
"conventional-recommended-bump": "0.3.x",
5757
"core-js": "2.4.x",
@@ -76,19 +76,21 @@
7676
"karma": "1.3.x",
7777
"karma-chrome-launcher": "2.0.x",
7878
"karma-cli": "1.0.x",
79+
"karma-coverage": "1.1.x",
7980
"karma-jasmine": "1.0.x",
8081
"karma-mocha-reporter": "2.2.x",
8182
"merge2": "1.0.x",
8283
"progress-bar-webpack-plugin": "1.9.x",
8384
"reflect-metadata": "0.1.x",
85+
"remap-istanbul": "0.8.x",
8486
"require-dir": "0.3.x",
85-
"rxjs": "5.0.0-beta.12",
87+
"rxjs": "5.0.0-rc.4",
8688
"source-map-loader": "0.1.x",
8789
"systemjs": "0.19.x",
8890
"tslint": "4.0.x",
8991
"typescript": "2.0.x",
9092
"web-animations-js": "2.2.x",
9193
"webpack": "2.1.0-beta.27",
92-
"zone.js": "0.6.x"
94+
"zone.js": "0.7.x"
9395
}
9496
}

tools/gulp/env/env-clean.task.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,12 @@ gulp.task( 'env:clean--demo', () => {
5454
'!demo/systemjs.config.js'
5555
] );
5656
} );
57+
58+
/**
59+
* gulp task: Clean test coverage
60+
*/
61+
gulp.task( 'env:clean--coverage', () => {
62+
return del( [
63+
'test-coverage'
64+
] );
65+
} );

tools/gulp/ts/ts-test.task.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,34 @@
33
const gulp = require( 'gulp' );
44
const karma = require( 'karma' );
55
const path = require( 'path' );
6+
const remapIstanbul = require( 'remap-istanbul/lib/gulpRemapIstanbul' ).default;
67

78
/**
89
* Gulp task: Run TypeScript unit tests
910
*/
10-
gulp.task( 'ts:spec', ( done ) => {
11+
gulp.task( 'ts:test--spec', ( done ) => {
12+
1113
new karma.Server( {
1214
configFile: path.resolve( 'karma.config.js' ), // Absolute path necessary
1315
singleRun: true, // Overwrite
1416
autoWatch: false // Overwrite
1517
}, done ).start();
18+
19+
} );
20+
21+
/**
22+
* Gulp task: Generate test coverage for TypeScript files
23+
*/
24+
gulp.task( 'ts:test--coverage', () => {
25+
26+
return gulp
27+
.src( 'test-coverage/js/coverage.json' )
28+
.pipe( remapIstanbul( {
29+
reports: {
30+
'json': 'test-coverage/ts/coverage.json',
31+
'html': 'test-coverage/ts/', // For viewing in the browser
32+
'text-summary': null // Print coverage summary to the console
33+
}
34+
} ) );
35+
1636
} );

0 commit comments

Comments
 (0)