@matheusbsbs / matheus-bagliano / commits / 303775a25f
Fork 0

t/test_lib: avoid naked bash arrays in file_lineno

662f9cf154 (tests: when run in Bash, annotate test failures with file name/line number, 2020-04-11), introduces a way to report the location (file:lineno) of a failed test case by traversing the bash callstack. The implementation requires bash and uses shell arrays and is therefore protected by a guard but NetBSD sh will still have to parse the function and therefore will result in: ** t0000-basic.sh *** ./test-lib.sh: 681: Syntax error: Bad substitution Enclose the bash specific code inside an eval to avoid parsing errors in the same way than 5826b7b595 (test-lib: check Bash version for '-x' without using shell arrays, 2019-01-03) Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Carlo Marcelo Arenas Belón committed May 7, 2020 at 10:57 UTC 303775a25f0b4ac5d6ad2e96eb4404c24209cad8
1 file changed +10 -8
t/test-lib.sh
+10 -8
@@ -677,14 +677,16 @@ die () {
677
678 file_lineno () {
679 test -z "$GIT_TEST_FRAMEWORK_SELFTEST" && test -n "$BASH" || return 0
680 - local i
681 - for i in ${!BASH_SOURCE[*]}
682 - do
683 - case $i,"${BASH_SOURCE[$i]##*/}" in
684 - 0,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:$LINENO: ${1+$1: }"; return;;
685 - *,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:${BASH_LINENO[$(($i-1))]}: ${1+$1: }"; return;;
686 - esac
687 - done
680 + eval '
681 + local i
682 + for i in ${!BASH_SOURCE[*]}
683 + do
684 + case $i,"${BASH_SOURCE[$i]##*/}" in
685 + 0,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:$LINENO: ${1+$1: }"; return;;
686 + *,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:${BASH_LINENO[$(($i-1))]}: ${1+$1: }"; return;;
687 + esac
688 + done
689 + '
690 }
691
692 GIT_EXIT_OK=