sindresorhus / globby

User-friendly glob matching
MIT License
2.49k stars 126 forks source link

Fix read permission error on ignore files search #259

Closed nicolas-goudry closed 5 months ago

nicolas-goudry commented 8 months ago

This PR should fix #254 and fix #258. As well as xo’s #737 when globby’s dependency gets upgraded.

It allows to forward the ignore option field passed to globby’s isIgnoredByIgnoreFiles to fast-glob.

To give some more context, this function is used to find all .gitignore files relative to the current working directory. If any subdirectory of the current working directory is not readable, fast-glob exits with an error.

By forwarding the ignore option to fast-glob when searching for ignore files, we prevent this behavior.

A few things that should be considered before this gets merged:

Documentation

There are currently no docs about this, but since the readme file mentions that the options object extends the fast-glob options, I’m not sure if it’s worth to document.

Tests

When a directory is not readable, the behavior of fast-glob is to exit, not to throw. So, if we remove the ignore option of the test, ava will fail all tests run with the following error:

Exiting due to process.exit() when running tests/ignore.js

Some side nodes about the test:

nicolas-goudry commented 8 months ago

To fix #254 with the provided steps to reproduce, would give the following:

mkdir someproject
cd someproject
npm init -y && npm i globby
mkdir testdir
chmod -r testdir # remove read access
# Notice the addition of "ignore: ['testdir']" option
node --input-type=module -e "const { globby } = await import('globby'); console.log(await globby('test', { gitignore: true, ignore: ['testdir'] }))"
nicolas-goudry commented 5 months ago

@sindresorhus could you please take a look at this?