Web lists-archives.com

Re: [PATCH v2 1/3] Add tests for describe with --work-tree




On Sun, Jan 27, 2019 at 3:51 AM Sebastian Staudt <koraktor@xxxxxxxxx> wrote:
>
> The dirty ones are already passing, but just because describe is comparing
> with the wrong working tree.
>
> Signed-off-by: Sebastian Staudt <koraktor@xxxxxxxxx>
> ---
>  t/t6120-describe.sh | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
>
> diff --git a/t/t6120-describe.sh b/t/t6120-describe.sh
> index d639d94696..9a6bd1541f 100755
> --- a/t/t6120-describe.sh
> +++ b/t/t6120-describe.sh
> @@ -28,6 +28,24 @@ check_describe () {
>         '
>  }
>
> +check_describe_worktree () {
> +  cd "$TEST_DIRECTORY"

Strange alignment. We normally do it in a subshell...

> +       expect="$1"
> +       shift
> +       R=$(git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe "$@" 2>err.actual)

These commands should be executed inside test_expect_success, not
outside. And you need to chain commands with && to make sure if
something breaks, then the whole test will fai.

If it's too ugly to generate test_expect_success with a shell
function, then just write a shell function that "describe" and compare
(i.e. the test body). Then you can write something like this later

test_expect_sucesss 'describe with --worktree foo' '
        check_describe_worktree foo
'

and check_describe_worktree can now do

( cd "$TEST_DIRECTORY" && .... )



> +       S=$?
> +       cat err.actual >&3
> +       test_expect_success "describe with --work-tree $*" '
> +       test $S = 0 &&
> +       case "$R" in
> +       $expect)        echo happy ;;
> +       *)      echo "Oops - $R is not $expect";
> +               false ;;
> +       esac
> +       '
> +  cd "$TRASH_DIRECTORY"
> +}
> +
>  test_expect_success setup '
>
>         test_tick &&
> @@ -145,14 +163,20 @@ check_describe A-* HEAD
>
>  check_describe "A-*[0-9a-f]" --dirty
>
> +check_describe_worktree "A-*[0-9a-f]" --dirty
> +
>  test_expect_success 'set-up dirty work tree' '
>         echo >>file
>  '
>
>  check_describe "A-*[0-9a-f]-dirty" --dirty
>
> +check_describe_worktree "A-*[0-9a-f]-dirty" --dirty
> +
>  check_describe "A-*[0-9a-f].mod" --dirty=.mod
>
> +check_describe_worktree "A-*[0-9a-f].mod" --dirty=.mod
> +
>  test_expect_success 'describe --dirty HEAD' '
>         test_must_fail git describe --dirty HEAD
>  '
> --
> 2.20.1
>


-- 
Duy