diff --git a/lib/preprocessor.js b/lib/preprocessor.js index c7889cc60..c19db9d80 100644 --- a/lib/preprocessor.js +++ b/lib/preprocessor.js @@ -30,10 +30,10 @@ var isBinary = Object.create(null); // TODO(vojta): instantiate preprocessors at the start to show warnings immediately var createPreprocessor = function(config, basePath, injector) { - var patterns = Object.keys(config); var alreadyDisplayedWarnings = Object.create(null); return function(file, done) { + var patterns = Object.keys(config); var thisFileIsBinary = isBinary[path.extname(file.originalPath)]; var preprocessors = []; var nextPreprocessor = function(error, content) { diff --git a/test/unit/preprocessor.spec.coffee b/test/unit/preprocessor.spec.coffee index ae8cedc94..8cda0d3aa 100644 --- a/test/unit/preprocessor.spec.coffee +++ b/test/unit/preprocessor.spec.coffee @@ -39,6 +39,26 @@ describe 'preprocessor', -> done() + it 'should check patterns after creation when invoked', (done) -> + fakePreprocessor = sinon.spy (content, file, done) -> + file.path = file.path + '-preprocessed' + done null, 'new-content' + + injector = new di.Injector [{'preprocessor:fake': ['factory', -> fakePreprocessor]}] + config = {'**/*.txt': ['fake']} + pp = m.createPreprocessor config, null, injector + + file = {originalPath: '/some/a.js', path: 'path'} + + config['**/*.js'] = ['fake'] + + pp file, -> + expect(fakePreprocessor).to.have.been.called + expect(file.path).to.equal 'path-preprocessed' + expect(file.content).to.equal 'new-content' + done() + + it 'should ignore not matching file', (done) -> fakePreprocessor = sinon.spy (content, file, done) -> done null, ''