Closed nicolas-goudry closed 5 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'] }))"
@sindresorhus could you please take a look at this?
This PR should fix #254 and fix #258. As well as
xo
’s #737 whenglobby
’s dependency gets upgraded.It allows to forward the
ignore
option field passed toglobby
’sisIgnoredByIgnoreFiles
tofast-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 tofast-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 thefast-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 theignore
option of the test,ava
will fail all tests run with the following error:Some side nodes about the test:
.notThrowsAsync
is used, but as said above:fast-glob
doesn’t throw, it exits ; so this might be wrong. You tell me.serial
is used to prevent other tests to fail because of the bad directory permissions.teardown
is used to revert the directory permissions to something readable