Subject: Re: [PATCH v2 1/3] stash: add test to ensure reflog --rewrite --updatref behavior

From: Junio C Hamano <[email-masked]>
Date: Wed, 23 Feb 2022 13:27:12 -0800

Ævar Arnfjörð Bjarmason <[email-masked]> writes:

> This test was already a bit broken in needing the preceding tests, but
> it will break now if REFFILES isn't true, which you can reproduce
> e.g. with:
>
>     ./t3903-stash.sh --run=1-16,18-50 -vixd
>
> Perhaps the least sucky solution to that is:
>
> diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
> index ec9cc5646d6..1d11c9bda20 100755
> --- a/t/t3903-stash.sh
> +++ b/t/t3903-stash.sh
> @@ -205,13 +205,19 @@ test_expect_success 'drop stash reflog updates refs/stash with rewrite' '
>  	cat >expect <<-EOF &&
>  	$(test_oid zero) $oid
>  	EOF
> -	test_cmp expect actual
> +	test_cmp expect actual &&
> +	>dropped-stash
>  '

If "git stash drop", invoked in earlier part of this test before the
precontext, fails, then test_cmp would fail and we leave
dropped-stash untouched, even though we did run "git stash drop"
already.

Why does the next test need to depend on what has happened earlier?

>  test_expect_success 'stash pop' '
>  	git reset --hard &&
>  	git stash pop &&
> -	test 9 = $(cat file) &&
> +	if test -e dropped-stash
> +	then
> +		test 9 = $(cat file)
> +	else
> +		test 3 = $(cat file)
> +	fi &&
>  	test 1 = $(git show :file) &&
>  	test 1 = $(git show HEAD:file) &&
>  	test 0 = $(git stash list | wc -l)