@@ -47,7 +47,7 @@ describe('preprocessor', () => {
4747 'factory' , function ( ) { return fakePreprocessor }
4848 ]
4949 } , emitterSetting ] )
50- pp = m . createPreprocessor ( { '**/*.js' : [ 'fake' ] } , null , injector )
50+ pp = m . createPriorityPreprocessor ( { '**/*.js' : [ 'fake' ] } , { } , null , injector )
5151
5252 const file = { originalPath : '/some/a.js' , path : 'path' }
5353
@@ -68,7 +68,7 @@ describe('preprocessor', () => {
6868 const injector = new di . Injector ( [ {
6969 'preprocessor:fake' : [ 'factory' , function ( ) { return fakePreprocessor } ]
7070 } , emitterSetting ] )
71- pp = m . createPreprocessor ( { '**/*.js' : [ 'fake' ] } , null , injector )
71+ pp = m . createPriorityPreprocessor ( { '**/*.js' : [ 'fake' ] } , { } , null , injector )
7272
7373 const file = { originalPath : '/some/.dir/a.js' , path : 'path' }
7474
@@ -90,7 +90,7 @@ describe('preprocessor', () => {
9090 'preprocessor:fake' : [ 'factory' , function ( ) { return fakePreprocessor } ]
9191 } , emitterSetting ] )
9292 const config = { '**/*.txt' : [ 'fake' ] }
93- pp = m . createPreprocessor ( config , null , injector )
93+ pp = m . createPriorityPreprocessor ( config , { } , null , injector )
9494
9595 const file = { originalPath : '/some/a.js' , path : 'path' }
9696
@@ -112,7 +112,7 @@ describe('preprocessor', () => {
112112 const injector = new di . Injector ( [ {
113113 'preprocessor:fake' : [ 'factory' , function ( ) { return fakePreprocessor } ]
114114 } , emitterSetting ] )
115- pp = m . createPreprocessor ( { '**/*.js' : [ 'fake' ] } , null , injector )
115+ pp = m . createPriorityPreprocessor ( { '**/*.js' : [ 'fake' ] } , { } , null , injector )
116116
117117 const file = { originalPath : '/some/a.txt' , path : 'path' }
118118
@@ -138,7 +138,7 @@ describe('preprocessor', () => {
138138 'preprocessor:fake2' : [ 'factory' , function ( ) { return fakePreprocessor2 } ]
139139 } , emitterSetting ] )
140140
141- pp = m . createPreprocessor ( { '**/*.js' : [ 'fake1' , 'fake2' ] } , null , injector )
141+ pp = m . createPriorityPreprocessor ( { '**/*.js' : [ 'fake1' , 'fake2' ] } , { } , null , injector )
142142
143143 const file = { originalPath : '/some/a.js' , path : 'path' }
144144
@@ -152,7 +152,7 @@ describe('preprocessor', () => {
152152 } )
153153
154154 it ( 'should compute SHA' , ( done ) => {
155- pp = m . createPreprocessor ( { } , null , new di . Injector ( [ emitterSetting ] ) )
155+ pp = m . createPriorityPreprocessor ( { } , { } , null , new di . Injector ( [ emitterSetting ] ) )
156156 const file = { originalPath : '/some/a.js' , path : 'path' }
157157
158158 pp ( file , ( ) => {
@@ -182,7 +182,7 @@ describe('preprocessor', () => {
182182 'preprocessor:fake' : [ 'factory' , function ( ) { return fakePreprocessor } ]
183183 } , emitterSetting ] )
184184
185- pp = m . createPreprocessor ( { '**/a.js' : [ 'fake' ] } , null , injector )
185+ pp = m . createPriorityPreprocessor ( { '**/a.js' : [ 'fake' ] } , { } , null , injector )
186186
187187 const fileProcess = { originalPath : '/some/a.js' , path : 'path' }
188188 const fileSkip = { originalPath : '/some/b.js' , path : 'path' }
@@ -208,7 +208,7 @@ describe('preprocessor', () => {
208208 'preprocessor:failing' : [ 'factory' , function ( ) { return failingPreprocessor } ]
209209 } , emitterSetting ] )
210210
211- pp = m . createPreprocessor ( { '**/*.js' : [ 'failing' ] } , null , injector )
211+ pp = m . createPriorityPreprocessor ( { '**/*.js' : [ 'failing' ] } , { } , null , injector )
212212
213213 const file = { originalPath : '/some/a.js' , path : 'path' }
214214
@@ -232,7 +232,7 @@ describe('preprocessor', () => {
232232 'preprocessor:fake' : [ 'factory' , function ( ) { return fakePreprocessor } ]
233233 } , emitterSetting ] )
234234
235- pp = m . createPreprocessor ( { '**/*.js' : [ 'failing' , 'fake' ] } , null , injector )
235+ pp = m . createPriorityPreprocessor ( { '**/*.js' : [ 'failing' , 'fake' ] } , { } , null , injector )
236236
237237 const file = { originalPath : '/some/a.js' , path : 'path' }
238238
@@ -261,7 +261,7 @@ describe('preprocessor', () => {
261261 'preprocessor:fake' : [ 'factory' , function ( ) { return fakePreprocessor } ]
262262 } , emitterSetting ] )
263263
264- const pp = m . createPreprocessor ( { '**/*.js' : [ 'fake' ] } , null , injector )
264+ const pp = m . createPriorityPreprocessor ( { '**/*.js' : [ 'fake' ] } , { } , null , injector )
265265
266266 pp ( file , ( ) => {
267267 expect ( fakePreprocessor ) . to . have . been . called
@@ -277,7 +277,7 @@ describe('preprocessor', () => {
277277 it ( 'should throw after 3 retries' , ( done ) => {
278278 const injector = new di . Injector ( [ { } , emitterSetting ] )
279279
280- const pp = m . createPreprocessor ( { '**/*.js' : [ ] } , null , injector )
280+ const pp = m . createPriorityPreprocessor ( { '**/*.js' : [ ] } , { } , null , injector )
281281
282282 pp ( file , ( ) => { } )
283283
@@ -299,7 +299,7 @@ describe('preprocessor', () => {
299299 'preprocessor:fake' : [ 'factory' , function ( ) { return fakePreprocessor } ]
300300 } , emitterSetting ] )
301301
302- pp = m . createPreprocessor ( { '**/*' : [ 'fake' ] } , null , injector )
302+ pp = m . createPriorityPreprocessor ( { '**/*' : [ 'fake' ] } , { } , null , injector )
303303
304304 const file = { originalPath : '/some/photo.png' , path : 'path' }
305305
@@ -322,7 +322,7 @@ describe('preprocessor', () => {
322322 'preprocessor:fake' : [ 'factory' , function ( ) { return fakePreprocessor } ]
323323 } , emitterSetting ] )
324324
325- pp = m . createPreprocessor ( { '**/*' : [ 'fake' ] } , null , injector )
325+ pp = m . createPriorityPreprocessor ( { '**/*' : [ 'fake' ] } , { } , null , injector )
326326
327327 const file = { originalPath : '/some/photo.png' , path : 'path' }
328328
@@ -344,7 +344,7 @@ describe('preprocessor', () => {
344344 'preprocessor:fake' : [ 'factory' , function ( ) { fakePreprocessor } ]
345345 } , emitterSetting ] )
346346
347- pp = m . createPreprocessor ( { '**/*' : [ 'fake' ] } , null , injector )
347+ pp = m . createPriorityPreprocessor ( { '**/*' : [ 'fake' ] } , { } , null , injector )
348348
349349 const file = { originalPath : '/some/CAM_PHOTO.JPG' , path : 'path' }
350350
@@ -357,7 +357,7 @@ describe('preprocessor', () => {
357357 } )
358358 } )
359359
360- it ( 'should merge lists of preprocessors' , ( done ) => {
360+ it ( 'should merge lists of preprocessors using default priority ' , ( done ) => {
361361 const callOrder = [ ]
362362 const fakePreprocessorA = sinon . spy ( ( content , file , done ) => {
363363 callOrder . push ( 'a' )
@@ -383,11 +383,11 @@ describe('preprocessor', () => {
383383 'preprocessor:fakeD' : [ 'factory' , function ( ) { return fakePreprocessorD } ]
384384 } , emitterSetting ] )
385385
386- pp = m . createPreprocessor ( {
386+ pp = m . createPriorityPreprocessor ( {
387387 '/*/a.js' : [ 'fakeA' , 'fakeB' ] ,
388388 '/some/*' : [ 'fakeB' , 'fakeC' ] ,
389389 '/some/a.js' : [ 'fakeD' ]
390- } , null , injector )
390+ } , { } , null , injector )
391391
392392 const file = { originalPath : '/some/a.js' , path : 'path' }
393393
@@ -399,10 +399,56 @@ describe('preprocessor', () => {
399399 expect ( fakePreprocessorC ) . to . have . been . called
400400 expect ( fakePreprocessorD ) . to . have . been . called
401401
402- expect ( callOrder . indexOf ( 'd' ) ) . not . to . equal ( - 1 )
403- expect ( callOrder . filter ( ( letter ) => {
404- return letter !== 'd'
405- } ) ) . to . eql ( [ 'a' , 'b' , 'c' ] )
402+ expect ( callOrder ) . to . eql ( [ 'a' , 'b' , 'c' , 'd' ] )
403+ done ( )
404+ } )
405+ } )
406+
407+ it ( 'should merge lists of preprocessors obeying priority' , ( done ) => {
408+ const callOrder = [ ]
409+ const fakePreprocessorA = sinon . spy ( ( content , file , done ) => {
410+ callOrder . push ( 'a' )
411+ done ( null , content )
412+ } )
413+ const fakePreprocessorB = sinon . spy ( ( content , file , done ) => {
414+ callOrder . push ( 'b' )
415+ done ( null , content )
416+ } )
417+ const fakePreprocessorC = sinon . spy ( ( content , file , done ) => {
418+ callOrder . push ( 'c' )
419+ done ( null , content )
420+ } )
421+ const fakePreprocessorD = sinon . spy ( ( content , file , done ) => {
422+ callOrder . push ( 'd' )
423+ done ( null , content )
424+ } )
425+
426+ const injector = new di . Injector ( [ {
427+ 'preprocessor:fakeA' : [ 'factory' , function ( ) { return fakePreprocessorA } ] ,
428+ 'preprocessor:fakeB' : [ 'factory' , function ( ) { return fakePreprocessorB } ] ,
429+ 'preprocessor:fakeC' : [ 'factory' , function ( ) { return fakePreprocessorC } ] ,
430+ 'preprocessor:fakeD' : [ 'factory' , function ( ) { return fakePreprocessorD } ]
431+ } , emitterSetting ] )
432+
433+ const priority = { 'fakeA' : - 1 , 'fakeB' : 1 , 'fakeD' : 100 }
434+
435+ pp = m . createPriorityPreprocessor ( {
436+ '/*/a.js' : [ 'fakeA' , 'fakeB' ] ,
437+ '/some/*' : [ 'fakeB' , 'fakeC' ] ,
438+ '/some/a.js' : [ 'fakeD' ]
439+ } , priority , null , injector )
440+
441+ const file = { originalPath : '/some/a.js' , path : 'path' }
442+
443+ pp ( file , ( err ) => {
444+ if ( err ) throw err
445+
446+ expect ( fakePreprocessorA ) . to . have . been . called
447+ expect ( fakePreprocessorB ) . to . have . been . called
448+ expect ( fakePreprocessorC ) . to . have . been . called
449+ expect ( fakePreprocessorD ) . to . have . been . called
450+
451+ expect ( callOrder ) . to . eql ( [ 'd' , 'b' , 'c' , 'a' ] )
406452 done ( )
407453 } )
408454 } )
0 commit comments