@@ -17,7 +17,8 @@ module.exports = function (grunt) {
1717 cdnify : 'grunt-google-cdn' ,
1818 protractor : 'grunt-protractor-runner' ,
1919 injector : 'grunt-asset-injector' ,
20- buildcontrol : 'grunt-build-control'
20+ buildcontrol : 'grunt-build-control' ,
21+ istanbul_check_coverage : 'grunt-mocha-istanbul'
2122 } ) ;
2223
2324 // Time how long tasks take. Can help when optimizing build times
@@ -169,14 +170,14 @@ module.exports = function (grunt) {
169170 } ,
170171 src : [
171172 'server/**/*.js' ,
172- '!server/**/*.spec.js'
173+ '!server/**/*.{ spec,e2e} .js'
173174 ]
174175 } ,
175176 serverTest : {
176177 options : {
177178 jshintrc : 'server/.jshintrc-spec'
178179 } ,
179- src : [ 'server/**/*.spec.js' ]
180+ src : [ 'server/**/*.{ spec,e2e} .js' ]
180181 } ,
181182 all : [
182183 '<%%= yeoman.client %>/{app,components}/**/*.js' ,
@@ -486,9 +487,60 @@ module.exports = function (grunt) {
486487
487488 mochaTest: {
488489 options : {
489- reporter : 'spec'
490+ reporter : 'spec' ,
491+ require : 'mocha.conf.js'
490492 } ,
491- src : [ 'server/**/*.spec.js' ]
493+ unit : {
494+ src : [ 'server/**/*.spec.js' ]
495+ } ,
496+ e2e : {
497+ src : [ 'server/**/*.e2e.js' ]
498+ }
499+ } ,
500+
501+ mocha_istanbul: {
502+ unit : {
503+ options : {
504+ excludes : [
505+ '**/*.spec.js' ,
506+ '**/*.mock.js' ,
507+ '**/*.e2e.js'
508+ ] ,
509+ reporter : 'spec' ,
510+ require : [ 'mocha.conf.js' ] ,
511+ mask : '**/*.spec.js' ,
512+ coverageFolder : 'coverage/server/unit'
513+ } ,
514+ src : 'server'
515+ } ,
516+ e2e : {
517+ options : {
518+ excludes : [
519+ '**/*.spec.js' ,
520+ '**/*.mock.js' ,
521+ '**/*.e2e.js'
522+ ] ,
523+ reporter : 'spec' ,
524+ require : [ 'mocha.conf.js' ] ,
525+ mask : '**/*.e2e.js' ,
526+ coverageFolder : 'coverage/server/e2e'
527+ } ,
528+ src : 'server'
529+ }
530+ } ,
531+
532+ istanbul_check_coverage: {
533+ default : {
534+ options : {
535+ coverageFolder : 'coverage/**' ,
536+ check : {
537+ lines : 80 ,
538+ statements : 80 ,
539+ branches : 80 ,
540+ functions : 80
541+ }
542+ }
543+ }
492544 } ,
493545
494546 protractor: {
@@ -764,12 +816,13 @@ module.exports = function (grunt) {
764816 grunt . task . run ( [ 'serve' ] ) ;
765817 } ) ;
766818
767- grunt . registerTask ( 'test' , function ( target ) {
819+ grunt . registerTask ( 'test' , function ( target , option ) {
768820 if ( target === 'server' ) {
769821 return grunt . task . run ( [
770822 'env:all' ,
771823 'env:test' ,
772- 'mochaTest'
824+ 'mochaTest:unit' ,
825+ 'mochaTest:e2e'
773826 ] ) ;
774827 }
775828
@@ -804,6 +857,41 @@ module.exports = function (grunt) {
804857 ]);
805858 }
806859
860+ else if ( target === 'coverage' ) {
861+
862+ if ( option === 'unit' ) {
863+ return grunt . task . run ( [
864+ 'env:all' ,
865+ 'env:test' ,
866+ 'mocha_istanbul:unit'
867+ ] ) ;
868+ }
869+
870+ else if ( option === 'e2e' ) {
871+ return grunt . task . run ( [
872+ 'env:all' ,
873+ 'env:test' ,
874+ 'mocha_istanbul:e2e'
875+ ] ) ;
876+ }
877+
878+ else if ( option === 'check' ) {
879+ return grunt . task . run ( [
880+ 'istanbul_check_coverage'
881+ ] ) ;
882+ }
883+
884+ else {
885+ return grunt . task . run ( [
886+ 'env:all' ,
887+ 'env:test' ,
888+ 'mocha_istanbul' ,
889+ 'istanbul_check_coverage'
890+ ] ) ;
891+ }
892+
893+ }
894+
807895 else grunt . task . run ( [
808896 'test:server' ,
809897 'test:client'
0 commit comments