]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t: prepare `test_must_fail ()` for `set -e`
authorPatrick Steinhardt <ps@pks.im>
Tue, 21 Apr 2026 07:34:15 +0000 (09:34 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 22 Apr 2026 22:53:35 +0000 (15:53 -0700)
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>
t/test-lib-functions.sh

index f3af10fb7e020500f10336c4a7b7e698b9d135e4..5fd5494ef1030c4014d8863ecfe9dae64fa291f6 100644 (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: $*"