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 than5826b7b595
(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>
This commit is contained in:

committed by
Junio C Hamano

parent
07d8ea56f2
commit
303775a25f
@ -677,14 +677,16 @@ die () {
|
|||||||
|
|
||||||
file_lineno () {
|
file_lineno () {
|
||||||
test -z "$GIT_TEST_FRAMEWORK_SELFTEST" && test -n "$BASH" || return 0
|
test -z "$GIT_TEST_FRAMEWORK_SELFTEST" && test -n "$BASH" || return 0
|
||||||
local i
|
eval '
|
||||||
for i in ${!BASH_SOURCE[*]}
|
local i
|
||||||
do
|
for i in ${!BASH_SOURCE[*]}
|
||||||
case $i,"${BASH_SOURCE[$i]##*/}" in
|
do
|
||||||
0,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:$LINENO: ${1+$1: }"; return;;
|
case $i,"${BASH_SOURCE[$i]##*/}" in
|
||||||
*,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:${BASH_LINENO[$(($i-1))]}: ${1+$1: }"; return;;
|
0,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:$LINENO: ${1+$1: }"; return;;
|
||||||
esac
|
*,t[0-9]*.sh) echo "t/${BASH_SOURCE[$i]}:${BASH_LINENO[$(($i-1))]}: ${1+$1: }"; return;;
|
||||||
done
|
esac
|
||||||
|
done
|
||||||
|
'
|
||||||
}
|
}
|
||||||
|
|
||||||
GIT_EXIT_OK=
|
GIT_EXIT_OK=
|
||||||
|
Reference in New Issue
Block a user