@@ -4,14 +4,17 @@ require('core-js/es6/promise');
4
4
require ( 'core-js/fn/object/assign' ) ;
5
5
require ( 'core-js/fn/string' ) ;
6
6
7
+ var path = require ( 'path' ) ;
8
+
7
9
var batch = require ( 'gulp-batch' ) ;
8
10
var changed = require ( 'gulp-changed' ) ;
11
+ var commander = require ( 'commander' ) ;
9
12
var endOfStream = require ( 'end-of-stream' ) ;
10
13
var gulp = require ( 'gulp' ) ;
11
14
var gulpIf = require ( 'gulp-if' ) ;
12
15
var gulpUtil = require ( 'gulp-util' ) ;
13
- var sass = require ( 'gulp-sass' ) ;
14
16
var postcss = require ( 'gulp-postcss' ) ;
17
+ var sass = require ( 'gulp-sass' ) ;
15
18
var sourcemaps = require ( 'gulp-sourcemaps' ) ;
16
19
17
20
var manifest = require ( './scripts/gulp/manifest' ) ;
@@ -24,6 +27,24 @@ var STYLE_DIR = 'build/styles';
24
27
var FONTS_DIR = 'build/fonts' ;
25
28
var IMAGES_DIR = 'build/images' ;
26
29
30
+ function parseCommandLine ( ) {
31
+ commander
32
+ // Test configuration.
33
+ // See https://github.com/karma-runner/karma-mocha#configuration
34
+ . option ( '--grep [pattern]' , 'Run only tests matching a given pattern' )
35
+ . parse ( process . argv ) ;
36
+
37
+ if ( commander . grep ) {
38
+ gulpUtil . log ( `Running tests matching pattern /${ commander . grep } /` ) ;
39
+ }
40
+
41
+ return {
42
+ grep : commander . grep ,
43
+ } ;
44
+ }
45
+
46
+ var taskArgs = parseCommandLine ( ) ;
47
+
27
48
function isSASSFile ( file ) {
28
49
return file . path . match ( / \. s c s s $ / ) ;
29
50
}
@@ -224,34 +245,36 @@ gulp.task('watch',
224
245
'watch-images' ,
225
246
'watch-manifest' ] ) ;
226
247
227
- gulp . task ( 'test-app' , function ( callback ) {
248
+ function runKarma ( baseConfig , opts , done ) {
249
+ // See https://github.com/karma-runner/karma-mocha#configuration
250
+ var cliOpts = {
251
+ client : {
252
+ mocha : {
253
+ grep : taskArgs . grep ,
254
+ }
255
+ } ,
256
+ } ;
257
+
228
258
var karma = require ( 'karma' ) ;
229
- new karma . Server ( {
230
- configFile : __dirname + '/h/static/scripts/karma.config.js' ,
231
- singleRun : true ,
232
- } , callback ) . start ( ) ;
259
+ new karma . Server ( Object . assign ( { } , {
260
+ configFile : path . resolve ( __dirname , baseConfig ) ,
261
+ } , cliOpts , opts ) , done ) . start ( ) ;
262
+ }
263
+
264
+ gulp . task ( 'test-app' , function ( callback ) {
265
+ runKarma ( './h/static/scripts/karma.config.js' , { singleRun :true } , callback ) ;
233
266
} ) ;
234
267
235
268
gulp . task ( 'test-extension' , function ( callback ) {
236
- var karma = require ( 'karma' ) ;
237
- new karma . Server ( {
238
- configFile : __dirname + '/h/browser/chrome/karma.config.js' ,
239
- singleRun : true ,
240
- } , callback ) . start ( ) ;
269
+ runKarma ( './h/browser/chrome/karma.config.js' , { singleRun :true } , callback ) ;
241
270
} ) ;
242
271
243
272
gulp . task ( 'test-watch-app' , function ( callback ) {
244
- var karma = require ( 'karma' ) ;
245
- new karma . Server ( {
246
- configFile : __dirname + '/h/static/scripts/karma.config.js' ,
247
- } , callback ) . start ( ) ;
273
+ runKarma ( './h/static/scripts/karma.config.js' , { } , callback ) ;
248
274
} ) ;
249
275
250
276
gulp . task ( 'test-watch-extension' , function ( callback ) {
251
- var karma = require ( 'karma' ) ;
252
- new karma . Server ( {
253
- configFile : __dirname + '/h/browser/chrome/karma.config.js' ,
254
- } , callback ) . start ( ) ;
277
+ runKarma ( './h/browser/chrome/karma.config.js' , { } , callback ) ;
255
278
} ) ;
256
279
257
280
gulp . task ( 'upload-sourcemaps' ,
0 commit comments