t: prepare `test_must_fail ()` for `set -e`

The helper function `test_must_fail ()` executes a specific Git command
that may or may not fail in a specific way. This is done by executing
the command in question and then comparing its exit code against a set
of conditions.

This works, but once we run our test suite with `set -e` we may bail out
of `test_must_fail ()` early in case the command actually fails, even
though we expect it to fail. Prepare for this change by handling the
failed case with `||`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
main
Patrick Steinhardt 2026-04-21 09:34:15 +02:00 committed by Junio C Hamano
parent 0cb6316b08
commit 990fd368ac
1 changed files with 3 additions and 2 deletions

View File

@ -1195,8 +1195,9 @@ test_must_fail () {
echo >&7 "test_must_fail: only 'git' is allowed: $*"
return 1
fi
"$@" 2>&7
exit_code=$?

exit_code=0; "$@" 2>&7 || exit_code=$?

if test $exit_code -eq 0 && ! list_contains "$_test_ok" success
then
echo >&4 "test_must_fail: command succeeded: $*"