diff --git a/index.js b/index.js index 029a19e..1f8d9aa 100644 --- a/index.js +++ b/index.js @@ -18,8 +18,19 @@ const assertPatternsInput = patterns => { } }; -const checkCwdOption = options => { - if (options && options.cwd && !fs.statSync(options.cwd).isDirectory()) { +const checkCwdOption = (options = {}) => { + if (!options.cwd) { + return; + } + + let stat; + try { + stat = fs.statSync(options.cwd); + } catch (_) { + return; + } + + if (!stat.isDirectory()) { throw new Error('The `cwd` option must be a path to a directory'); } }; diff --git a/test.js b/test.js index ffe776b..165d46a 100644 --- a/test.js +++ b/test.js @@ -362,3 +362,13 @@ test('throws when specifying a file as cwd - stream', t => { globby.stream('*', {cwd: isFile}); }, 'The `cwd` option must be a path to a directory'); }); + +test('don\'t throw when specifying a non-existing cwd directory - async', async t => { + const actual = await globby('.', {cwd: '/unknown'}); + t.is(actual.length, 0); +}); + +test('don\'t throw when specifying a non-existing cwd directory - sync', t => { + const actual = globby.sync('.', {cwd: '/unknown'}); + t.is(actual.length, 0); +});