diff --git a/lib/src/index.js b/lib/src/index.js index 5888b884..b77a8016 100644 --- a/lib/src/index.js +++ b/lib/src/index.js @@ -8,6 +8,7 @@ var duplexify = require('duplexify'); var merge = require('merge-stream'); var sourcemaps = require('gulp-sourcemaps'); var filterSince = require('vinyl-filter-since'); +var isValidGlob = require('is-valid-glob'); var getContents = require('./getContents'); var resolveSymlinks = require('./resolveSymlinks'); @@ -66,17 +67,4 @@ function src(glob, opt) { return outputStream; } -function isValidGlob(glob) { - if (typeof glob === 'string') { - return true; - } - if (!Array.isArray(glob)) { - return false; - } - if (glob.length !== 0) { - return glob.every(isValidGlob); - } - return true; -} - module.exports = src; diff --git a/package.json b/package.json index e96e1f65..9483221d 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "glob-watcher": "^2.0.0", "graceful-fs": "^3.0.0", "gulp-sourcemaps": "^1.5.2", + "is-valid-glob": "^0.1.0", "merge-stream": "^0.1.7", "mkdirp": "^0.5.0", "object-assign": "^2.0.0", diff --git a/test/src.js b/test/src.js index 6d666412..8b1b7fce 100644 --- a/test/src.js +++ b/test/src.js @@ -41,6 +41,18 @@ describe('source stream', function() { } }); + it('should explode on invalid glob (nested array)', function(done) { + var stream; + try { + stream = vfs.src([['./fixtures/*.coffee']]); + } catch (err) { + should.exist(err); + should.not.exist(stream); + err.message.should.containEql('Invalid glob argument'); + done(); + } + }); + it('should not explode on invalid glob (empty array)', function(done) { var stream = vfs.src([]); stream.once('data', done);