Hi Junio, On 23 Feb 2022, at 16:27, Junio C Hamano wrote: > Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> 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? Ideally it shouldn't, but it seems like the way these test have been written makes subsequent tests depend on what previous tests have stashed. I'm wondering now that while we're at it, if we should just clean up these tests so there are no dependencies between the tests. Otherwise it's quite painful the next time someone needs to add a test here. We could follow the pattern in 5ac15ad2509 (reflog tests: add --updateref tests, 2021-10-16), where Ævar set up the tests and copied over the repo so each test is isolated from each other. > >> 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)