On Thu, Dec 7, 2017 at 9:30 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > The existing tests only checked how well -relative=<dir> work, > without testing --relative (without any value). > > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> > --- > t/t4045-diff-relative.sh | 24 ++++++++++++++++++++---- > 1 file changed, 20 insertions(+), 4 deletions(-) > > diff --git a/t/t4045-diff-relative.sh b/t/t4045-diff-relative.sh > index fefd2f3f81..815cdd7295 100755 > --- a/t/t4045-diff-relative.sh > +++ b/t/t4045-diff-relative.sh > @@ -25,7 +25,10 @@ check_diff () { > +other content > EOF > test_expect_success "-p $*" " > - git diff -p $* HEAD^ >actual && > + ( > + test -z "$in_there" || cd "$in_there" > + git diff -p $* HEAD^ > + ) >actual && > test_cmp expected actual > " > } > @@ -38,7 +41,10 @@ check_numstat () { > EOF > test_expect_success "--numstat $*" " > echo '1 0 $expect' >expected && > - git diff --numstat $* HEAD^ >actual && > + ( > + test -z "$in_there" || cd "$in_there" > + git diff --numstat $* HEAD^ > + ) >actual && > test_cmp expected actual > " > } > @@ -51,7 +57,10 @@ check_stat () { > 1 file changed, 1 insertion(+) > EOF > test_expect_success "--stat $*" " > - git diff --stat $* HEAD^ >actual && > + ( > + test -z "$in_there" || cd "$in_there" > + git diff --stat $* HEAD^ > + ) >actual && > test_i18ncmp expected actual > " > } > @@ -63,15 +72,22 @@ check_raw () { > :000000 100644 0000000000000000000000000000000000000000 25c05ef3639d2d270e7fe765a67668f098092bc5 A $expect > EOF > test_expect_success "--raw $*" " > - git diff --no-abbrev --raw $* HEAD^ >actual && > + ( > + test -z "$in_there" || cd "$in_there" > + git diff --no-abbrev --raw $* HEAD^ >actual > + ) && You could avoid the subshell by just passing $in_there to -C on the git commands. Same for the other tests. If you quote it, -C '$in_there', then it will work regardless of if in_there is set or not, (-C with an empty string doesn't cd anywhere). I think this is generally preferable for tests given it helps avoid unnecessary subshells when testing on Windows..? > test_cmp expected actual > " > } > > for type in diff numstat stat raw > do > + in_there= > check_$type file2 --relative=subdir/ > check_$type file2 --relative=subdir > + in_there=subdir > + check_$type file2 --relative > + in_there= > check_$type dir/file2 --relative=sub > done > This isn't quite what I had in mind for the directory parameter. I passed it as an extra argument, but I think this is probably more sensible. > -- > 2.15.1-480-gbc5668f98a >