Re: [PATCH v2 7/7] t4045: test 'diff --relative' for real
On Thu, Dec 7, 2017 at 9:30 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 57 quoted lines
> The existing tests only checked how well -relative=<dir> work,
> without testing --relative (without any value).
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> 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..?
Show 15 quoted lines
> 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
>