Junio C Hamano <gitster@xxxxxxxxx> writes: > Interestingly enough, edc23840b0 (test-lib: bring $remove_trash out > of retirement, 2021-05-10) cleanly reverts without being depended on > by anything else in the series. > > Ævar? With the crude debugging aid patch (attached at the end) applied, running $ GIT_SKIP_TESTS='t?000' sh -x t0000-basic.sh -v will show something interesting in the trace. ++ this_test=t0000 ++ _s_k_i_p_='t?000' ++ match_pattern_list t0000 t5000 The variable $GIT_SKIP_TESTS on this line: if match_pattern_list "$this_test" $GIT_SKIP_TESTS globs to t5000. We don't quote the variable because we want them separated at $IFS boundaries, but we didn't want the glob specials in its value to take any effect. Sigh. The reason why edc23840b0 appears to break this is probably because we are still in $TEST_DIRECTORY when this match_pattern_list is executed; before that change, we've created $TRASH_DIRECTORY and chdir'd there already, and when we check "do we want to skip all?", there is nothing for the glob to match. That also explains why GIT_SKIP_TESTS="t000?" appears to work. There is no such filesystem entity directly in $TEST_DIRECTORY. $ echo t000? t00?0 t0?00 t?000 t000? t00?0 t0200 t5000 diff --git i/t/test-lib.sh w/t/test-lib.sh index 54938c6427..8ee0540532 100644 --- i/t/test-lib.sh +++ w/t/test-lib.sh @@ -1346,13 +1346,17 @@ fi remove_trash= this_test=${0##*/} this_test=${this_test%%-*} +_s_k_i_p_=$GIT_SKIP_TESTS + if match_pattern_list "$this_test" $GIT_SKIP_TESTS then say_color info >&3 "skipping test $this_test altogether" skip_all="skip all tests in $this_test" test_done fi +exit + # Last-minute variable setup HOME="$TRASH_DIRECTORY" GNUPGHOME="$HOME/gnupg-home-not-used"