t: extend test_lazy_prereq

Allow test_lazy_prereq script to signal a programming error by
exiting with status 125 (like how bisect scripts do).  This is used
to signal a deprecated-and-then-removed prerequisite that should
never be used in tests anymore.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
main
Junio C Hamano 2025-03-11 14:25:01 -07:00
parent ab362fc6f4
commit 1c24d55a2f
2 changed files with 9 additions and 2 deletions

View File

@ -983,8 +983,10 @@ see test-lib-functions.sh for the full list and their options.
SYMLINKS ...". The script is run in a temporary directory inside SYMLINKS ...". The script is run in a temporary directory inside
a subshell, so you do not have to worry about removing temporary a subshell, so you do not have to worry about removing temporary
files you create there. When the script exits with status 0, the files you create there. When the script exits with status 0, the
prerequisite is set. Exiting with non-zero status makes the prerequisite is set. Exiting with non-zero status other than 125
prerequisite unsatisified. makes the prerequisite unsatisified. Exiting the script with 125
signals a programming error and is used to mark a prerequisite that
should not be used by test scripts.


- test_expect_code <exit-code> <command> - test_expect_code <exit-code> <command>



View File

@ -773,6 +773,8 @@ mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-'"$1"'" &&
rm -rf "$TRASH_DIRECTORY/prereq-test-dir-$1" rm -rf "$TRASH_DIRECTORY/prereq-test-dir-$1"
if test "$eval_ret" = 0; then if test "$eval_ret" = 0; then
say >&3 "prerequisite $1 ok" say >&3 "prerequisite $1 ok"
elif test "$eval_ret" = 125; then
:;
else else
say >&3 "prerequisite $1 not satisfied" say >&3 "prerequisite $1 not satisfied"
fi fi
@ -811,6 +813,9 @@ test_have_prereq () {
if test_run_lazy_prereq_ "$prerequisite" "$script" if test_run_lazy_prereq_ "$prerequisite" "$script"
then then
test_set_prereq $prerequisite test_set_prereq $prerequisite
elif test $? = 125
then
BUG "Do not use $prerequisite"
fi fi
lazily_tested_prereq="$lazily_tested_prereq$prerequisite " lazily_tested_prereq="$lazily_tested_prereq$prerequisite "
esac esac