@@ -5,42 +5,80 @@ var gulp = require('gulp');
55var $ = require ( 'gulp-load-plugins' ) ( ) ;
66
77var wiredep = require ( 'wiredep' ) ;
8+ var karma = require ( 'karma' ) ;
9+ var concat = require ( 'concat-stream' ) ;
10+ var _ = require ( 'lodash' ) ;
811
912module . exports = function ( options ) {
10- function runTests ( singleRun ) {
13+ function listFiles ( callback ) {
1114 var bowerDeps = wiredep ( {
1215 directory : 'bower_components' ,
13- exclude : [ 'bootstrap-sass-official' ] ,
16+ < % if ( wiredepExclusions . length > 0 ) { % >
17+ exclude : [ < %= wiredepExclusions . join ( ', ' ) % > ] ,
18+ < % } % >
1419 dependencies : true ,
1520 devDependencies : true
1621 } ) ;
1722
18- var testFiles = bowerDeps . js . concat ( [
23+ var specFiles = [
24+ options . src + '/**/*.spec.js' ,
25+ options . src + '/**/*.mock.js'
26+ ] ;
27+
28+ var htmlFiles = [
29+ options . src + '/**/*.html'
30+ ] ;
31+
32+ var srcFiles = [
1933< % if ( props . jsPreprocessor . key === 'none' ) { % >
2034 options . src + '/{app,components}/**/*.js'
2135< % } else if ( props . jsPreprocessor . extension === 'js' ) { % >
22- options . tmp + '/serve/app/index.js' ,
23- options . src + '/{app,components}/**/*.spec.js' ,
24- options . src + '/{app,components}/**/*.mock.js'
36+ options . tmp + '/serve/app/index.js'
2537< % } else if ( props . jsPreprocessor . key === 'typescript' ) { % >
2638 options . tmp + '/serve/{app,components}/**/!(index).js' ,
27- options . tmp + '/serve/{app,components}/**/index.js' ,
28- options . src + '/{app,components}/**/*.spec.js' ,
29- options . src + '/{app,components}/**/*.mock.js'
39+ options . tmp + '/serve/{app,components}/**/index.js'
3040< % } else { % >
31- options . tmp + '/serve/{app,components}/**/*.js' ,
32- options . src + '/{app,components}/**/*.spec.js' ,
33- options . src + '/{app,components}/**/*.mock.js'
41+ options . tmp + '/serve/{app,components}/**/*.js'
42+ < % } % >
43+ ] . concat ( specFiles . map ( function ( file ) {
44+ return '!' + file ;
45+ } ) ) ;
46+
47+ < % if ( props . jsPreprocessor . key === 'typescript' ) { % >
48+ var sortOutput = require ( '../' + options . tmp + '/sortOutput.json' ) ;
3449< % } % >
35- ] ) ;
3650
37- return gulp . src ( testFiles )
38- . pipe ( $ . karma ( {
39- configFile : 'karma.conf.js' ,
40- action : ( singleRun ) ? 'run' : 'watch'
51+ < % if ( props . jsPreprocessor . key === 'typescript' ) { % >
52+ gulp . src ( srcFiles , { read : false } )
53+ . pipe ( $ . order ( sortOutput , { base : options . tmp + '/serve' } ) )
54+ < % } else if ( props . jsPreprocessor . extension !== 'js' ) { % >
55+ gulp . src ( srcFiles )
56+ . pipe ( $ . angularFilesort ( ) ) . on ( 'error' , options . errorHandler ( 'AngularFilesort' ) )
57+ < % } else { % >
58+ gulp . src ( srcFiles )
59+ < % } % >
60+ . pipe ( concat ( function ( files ) {
61+ callback ( bowerDeps . js
62+ . concat ( _ . pluck ( files , 'path' ) )
63+ . concat ( htmlFiles )
64+ . concat ( specFiles ) ) ;
4165 } ) ) ;
4266 }
4367
44- gulp . task ( 'test' , [ 'scripts' ] , runTests . bind ( this , true ) ) ;
45- gulp . task ( 'test:auto' , [ 'scripts' ] , runTests . bind ( this , false ) ) ;
68+ function runTests ( singleRun , done ) {
69+ listFiles ( function ( files ) {
70+ karma . server . start ( {
71+ configFile : __dirname + '/../karma.conf.js' ,
72+ files : files ,
73+ singleRun : singleRun
74+ } , done ) ;
75+ } ) ;
76+ }
77+
78+ gulp . task ( 'test' , [ 'scripts' ] , function ( done ) {
79+ runTests ( true , done ) ;
80+ } ) ;
81+ gulp . task ( 'test:auto' , [ 'watch' ] , function ( done ) {
82+ runTests ( false , done ) ;
83+ } ) ;
4684} ;
0 commit comments