Kristoffer Haugsbakk <code@xxxxxxxxxxxxxxx> writes: > diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh > index 39d6d713ecb..b976f81a166 100755 > --- a/t/t7810-grep.sh > +++ b/t/t7810-grep.sh > @@ -1234,6 +1234,19 @@ test_expect_success 'outside of git repository with fallbackToNoIndex' ' > ) > ' > > +test_expect_success 'outside of git repository with pathspec outside the directory tree' ' > + test_when_finished rm -fr non && > + rm -fr non && > + mkdir -p non/git/sub && > + ( > + GIT_CEILING_DIRECTORIES="$(pwd)/non" && > + export GIT_CEILING_DIRECTORIES && > + cd non/git && > + test_expect_code 128 git grep --no-index search .. 2>error && > + grep "is outside the directory tree" error > + ) > +' > + So you create non/git/sub, go to non/git (so there is sub/ directory), and try running "..". If you had a directory non/tig next to non/git and used ../tig instead of .. as the path given to "git grep", it would also correctly fail. Searching in a non-existing path, ../non, dies in a different error, with an error message that is not technically wrong, but it probably can be improved. It has been a while since I looked at the pathspec matching code, but if we are lucky, it might be just the matter of swapping the order of checking (in other words, check "is it outside" first and then "does it exist" next, or something like that)? t/t7810-grep.sh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git c/t/t7810-grep.sh w/t/t7810-grep.sh index b976f81a16..84838c0fe1 100755 --- c/t/t7810-grep.sh +++ w/t/t7810-grep.sh @@ -1234,16 +1234,30 @@ test_expect_success 'outside of git repository with fallbackToNoIndex' ' ) ' -test_expect_success 'outside of git repository with pathspec outside the directory tree' ' +test_expect_success 'no repository with path outside $cwd' ' test_when_finished rm -fr non && rm -fr non && - mkdir -p non/git/sub && + mkdir -p non/git/sub non/tig && ( GIT_CEILING_DIRECTORIES="$(pwd)/non" && export GIT_CEILING_DIRECTORIES && cd non/git && test_expect_code 128 git grep --no-index search .. 2>error && grep "is outside the directory tree" error + ) && + ( + GIT_CEILING_DIRECTORIES="$(pwd)/non" && + export GIT_CEILING_DIRECTORIES && + cd non/git && + test_expect_code 128 git grep --no-index search ../tig 2>error && + grep "is outside the directory tree" error + ) && + ( + GIT_CEILING_DIRECTORIES="$(pwd)/non" && + export GIT_CEILING_DIRECTORIES && + cd non/git && + test_expect_code 128 git grep --no-index search ../non 2>error && + grep "no such path in the working tree" error ) '