diff --git a/index.js b/index.js index 977b284..2cd808d 100644 --- a/index.js +++ b/index.js @@ -277,22 +277,32 @@ function globStream(globs, opt) { walker.on('path', onPath); walker.once('end', onEnd); walker.once('error', onError); - ourGlobs.forEach(function (glob) { - if (isGlob(glob)) { - // We only want to walk the glob-parent directories of any positive glob - // to reduce the amount of files have to check. - if (isPositiveGlob(glob)) { - var base = globParent(glob); - walker.walk(base); + + var started = false; + + function start() { + ourGlobs.forEach(function (glob) { + if (isGlob(glob)) { + // We only want to walk the glob-parent directories of any positive glob + // to reduce the amount of files have to check. + if (isPositiveGlob(glob)) { + var base = globParent(glob); + walker.walk(base); + } + } else { + // If the strig is not a glob, we just check for the existence of it. + walker.exists(glob); } - } else { - // If the strig is not a glob, we just check for the existence of it. - walker.exists(glob); - } - }); + }); + } function read(cb) { - walker.resume(); + if (!started) { + started = true; + start(); + } else { + walker.resume(); + } cb(); } diff --git a/test/index.js b/test/index.js index 4943370..5fbbbec 100644 --- a/test/index.js +++ b/test/index.js @@ -887,6 +887,22 @@ function suite(moduleName) { done ); }); + + it('does not end prematurely', function (done) { + var gs = globStream(['./non-existent-file'], { cwd: dir, allowEmpty: true }); + + function setup() { + stream.pipeline( + [ + gs, + concat(), + ], + done + ); + } + + setTimeout(setup, 10); + }); }); describe('options', function () {