]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t6002: fix use of `expr` with `set -e`
authorPatrick Steinhardt <ps@pks.im>
Tue, 21 Apr 2026 07:34:23 +0000 (09:34 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 22 Apr 2026 22:53:36 +0000 (15:53 -0700)
In `test_bisection_diff ()` we use `expr` to perform some math. This
command has some gotchas though in that it will only return success when
the result is neither null nor zero. In some of our cases though it
actually _is_ zero, and that will cause the expressions to fail once we
enable `set -e`.

Prepare for this change by instead using `$(( ))`, which doesn't have
the same issue. While at it, modernize the function a tiny bit.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t6002-rev-list-bisect.sh

index daa009c9a1b4b67d510df74f1d5d5cc2b1a904cd..f2de40b5ed8f1475c16c91bea2924e4af3ef8e3c 100755 (executable)
@@ -27,13 +27,16 @@ test_bisection_diff()
        # Test if bisection size is close to half of list size within
        # tolerance.
        #
-       _bisect_err=$(expr $_list_size - $_bisection_size \* 2)
-       test "$_bisect_err" -lt 0 && _bisect_err=$(expr 0 - $_bisect_err)
-       _bisect_err=$(expr $_bisect_err / 2) ; # floor
-
-       test_expect_success \
-       "bisection diff $_bisect_option $_head $* <= $_max_diff" \
-       'test $_bisect_err -le $_max_diff'
+       _bisect_err=$(($_list_size - $_bisection_size * 2))
+       if test "$_bisect_err" -lt 0
+       then
+               _bisect_err=$((0 - $_bisect_err))
+       fi
+       _bisect_err=$(($_bisect_err / 2)) ; # floor
+
+       test_expect_success "bisection diff $_bisect_option $_head $* <= $_max_diff" '
+               test $_bisect_err -le $_max_diff
+       '
 }
 
 date >path0