Skip to content
This repository was archived by the owner on Aug 30, 2021. It is now read-only.

Commit 7be1910

Browse files
hyperrealitylirantal
authored andcommitted
feat(tests): add client and server test coverage to Gulp (#1466)
* Added coverage to Gulp * Integrated coveralls tests with gulp * spurious changes to kick off coveralls
1 parent c2cfc38 commit 7be1910

File tree

6 files changed

+57
-6
lines changed

6 files changed

+57
-6
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ app/tests/coverage/
1515
.bower-*/
1616
.idea/
1717
coverage/
18+
.coveralls.yml
1819

1920
# MEAN.js app and assets
2021
# ======================

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ before_install:
3535
- sleep 3
3636
after_script:
3737
- nsp audit-package
38-
- grunt coverage
38+
- gulp test:coverage
3939
notifications:
4040
webhooks:
4141
urls:

config/env/test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,6 @@ module.exports = {
9393
}
9494
}
9595
},
96-
// This config is set to true during grunt coverage
96+
// This config is set to true during gulp coverage
9797
coverage: process.env.COVERAGE || false
9898
};

gulpfile.js

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var _ = require('lodash'),
77
fs = require('fs'),
88
defaultAssets = require('./config/assets/default'),
99
testAssets = require('./config/assets/test'),
10+
testConfig = require('./config/env/test'),
1011
glob = require('glob'),
1112
gulp = require('gulp'),
1213
gulpLoadPlugins = require('gulp-load-plugins'),
@@ -23,7 +24,8 @@ var _ = require('lodash'),
2324
protractor = require('gulp-protractor').protractor,
2425
webdriver_update = require('gulp-protractor').webdriver_update,
2526
webdriver_standalone = require('gulp-protractor').webdriver_standalone,
26-
KarmaServer = require('karma').Server;
27+
KarmaServer = require('karma').Server,
28+
lcovMerger = require('lcov-result-merger');
2729

2830
// Local settings
2931
var changedTestFiles = [];
@@ -318,7 +320,48 @@ gulp.task('mocha', function (done) {
318320
});
319321
});
320322
});
323+
});
324+
325+
// Add configuration options for coverage here
326+
gulp.task('configure-coverage', function (done) {
327+
// Set coverage config environment variable so karma-coverage knows to run it
328+
testConfig.coverage = true;
329+
done();
330+
});
331+
332+
// Prepare istanbul coverage test
333+
gulp.task('pre-test', function () {
321334

335+
// Display coverage for all server JavaScript files
336+
return gulp.src(defaultAssets.server.allJS)
337+
// Covering files
338+
.pipe(plugins.istanbul())
339+
// Force `require` to return covered files
340+
.pipe(plugins.istanbul.hookRequire());
341+
});
342+
343+
// Run istanbul test and write report
344+
gulp.task('mocha:coverage', ['pre-test', 'mocha'], function () {
345+
var testSuites = changedTestFiles.length ? changedTestFiles : testAssets.tests.server;
346+
347+
return gulp.src(testSuites)
348+
.pipe(plugins.istanbul.writeReports({
349+
reportOpts: { dir: './coverage/server' }
350+
}));
351+
});
352+
353+
// Join the coverage files for client and server into a single file
354+
// Otherwise they get sent to coveralls as separate builds
355+
gulp.task('merge-lcov', function (done) {
356+
return gulp.src('./coverage/**/lcov.info')
357+
.pipe(lcovMerger())
358+
.pipe(gulp.dest('./coverage/merged/'));
359+
});
360+
361+
// Send coverage test results to coveralls
362+
gulp.task('coveralls', ['merge-lcov'], function (done) {
363+
return gulp.src('./coverage/merged/lcov.info')
364+
.pipe(plugins.coveralls());
322365
});
323366

324367
// Karma test runner task
@@ -404,6 +447,10 @@ gulp.task('test:e2e', function (done) {
404447
runSequence('env:test', 'lint', 'dropdb', 'nodemon', 'protractor', done);
405448
});
406449

450+
gulp.task('test:coverage', function (done) {
451+
runSequence('env:test', ['copyLocalEnvConfig', 'makeUploadsDir', 'dropdb'], 'lint', 'configure-coverage', 'mocha:coverage', 'karma', 'coveralls', done);
452+
});
453+
407454
// Run the project in development mode
408455
gulp.task('default', function (done) {
409456
runSequence('env:dev', ['copyLocalEnvConfig', 'makeUploadsDir'], 'lint', ['nodemon', 'watch'], done);

karma.conf.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ module.exports = function (karmaConfig) {
5050
dir: 'coverage/client',
5151
reporters: [
5252
// Reporters not supporting the `file` property
53-
{ type: 'html', subdir: 'report-html' },
54-
{ type: 'lcov', subdir: 'report-lcov' },
53+
{ type: 'lcov', subdir: '.' },
5554
// Output coverage to console
5655
{ type: 'text' }
5756
],

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"test:server:watch": "gulp test:server:watch",
2727
"test:client": "gulp test:client",
2828
"test:e2e": "gulp test:e2e",
29+
"test:coverage": "gulp test:coverage",
2930
"postinstall": "bower install --allow-root && bower prune --allow-root",
3031
"generate-ssl-certs": "scripts/generate-ssl-certs.sh"
3132
},
@@ -49,7 +50,6 @@
4950
"glob": "~7.0.0",
5051
"grunt": "~1.0.1",
5152
"grunt-cli": "~1.2.0",
52-
"gulp-node-inspector": "~0.1.0",
5353
"helmet": "~2.1.2",
5454
"jasmine-core": "~2.4.1",
5555
"lodash": "~4.15.0",
@@ -102,15 +102,18 @@
102102
"gulp-angular-templatecache": "~1.8.0",
103103
"gulp-autoprefixer": "~3.1.0",
104104
"gulp-concat": "~2.6.0",
105+
"gulp-coveralls": "~0.1.4",
105106
"gulp-csslint": "~0.2.0",
106107
"gulp-csso": "~1.1.0",
107108
"gulp-eslint": "~2.0.0",
108109
"gulp-imagemin": "~2.4.0",
110+
"gulp-istanbul": "~1.1.1",
109111
"gulp-less": "~3.0.5",
110112
"gulp-livereload": "~3.8.1",
111113
"gulp-load-plugins": "~1.2.0",
112114
"gulp-mocha": "~3.0.1",
113115
"gulp-ng-annotate": "~1.1.0",
116+
"gulp-node-inspector": "~0.1.0",
114117
"gulp-nodemon": "~2.0.6",
115118
"gulp-protractor": "~2.1.0",
116119
"gulp-rename": "~1.2.2",
@@ -126,6 +129,7 @@
126129
"karma-jasmine": "~0.3.7",
127130
"karma-ng-html2js-preprocessor": "~0.2.1",
128131
"karma-phantomjs-launcher": "~1.0.0",
132+
"lcov-result-merger": "~1.2.0",
129133
"load-grunt-tasks": "~3.4.1",
130134
"mock-fs": "~3.11.0",
131135
"node-inspector": "~0.12.7",

0 commit comments

Comments
 (0)