Junio C Hamano [off-list ref] 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"