test-lib: extract Bash version check for '-x' tracing
One of our test scripts, 't1510-repo-setup.sh' [1], still can't be reliably run with '-x' tracing enabled, unless it's executed with a Bash version supporting BASH_XTRACEFD (since v4.1). We have a lengthy condition to check the version of the shell running the test script, and disable tracing if it's not executed with a suitable Bash version [2]. Move this check out from the option parsing loop, so other options can imply '-x' by setting 'trace=t', without missing this Bash version check. [1]5827506928
(t1510-repo-setup: mark as untraceable with '-x', 2018-02-24) [2]5fc98e79fc
(t: add means to disable '-x' tracing for individual test scripts, 2018-02-24) Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d45cec4bea
commit
0a97e86e9a
@ -317,24 +317,7 @@ do
|
|||||||
GIT_TEST_CHAIN_LINT=0
|
GIT_TEST_CHAIN_LINT=0
|
||||||
shift ;;
|
shift ;;
|
||||||
-x)
|
-x)
|
||||||
# Some test scripts can't be reliably traced with '-x',
|
|
||||||
# unless the test is run with a Bash version supporting
|
|
||||||
# BASH_XTRACEFD (introduced in Bash v4.1). Check whether
|
|
||||||
# this test is marked as such, and ignore '-x' if it
|
|
||||||
# isn't executed with a suitable Bash version.
|
|
||||||
if test -z "$test_untraceable" || {
|
|
||||||
test -n "$BASH_VERSION" && eval '
|
|
||||||
test ${BASH_VERSINFO[0]} -gt 4 || {
|
|
||||||
test ${BASH_VERSINFO[0]} -eq 4 &&
|
|
||||||
test ${BASH_VERSINFO[1]} -ge 1
|
|
||||||
}
|
|
||||||
'
|
|
||||||
}
|
|
||||||
then
|
|
||||||
trace=t
|
trace=t
|
||||||
else
|
|
||||||
echo >&2 "warning: ignoring -x; '$0' is untraceable without BASH_XTRACEFD"
|
|
||||||
fi
|
|
||||||
shift ;;
|
shift ;;
|
||||||
-V|--verbose-log)
|
-V|--verbose-log)
|
||||||
verbose_log=t
|
verbose_log=t
|
||||||
@ -353,6 +336,24 @@ then
|
|||||||
test -z "$verbose_log" && verbose=t
|
test -z "$verbose_log" && verbose=t
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -n "$trace" && test -n "$test_untraceable"
|
||||||
|
then
|
||||||
|
# '-x' tracing requested, but this test script can't be reliably
|
||||||
|
# traced, unless it is run with a Bash version supporting
|
||||||
|
# BASH_XTRACEFD (introduced in Bash v4.1).
|
||||||
|
if test -n "$BASH_VERSION" && eval '
|
||||||
|
test ${BASH_VERSINFO[0]} -gt 4 || {
|
||||||
|
test ${BASH_VERSINFO[0]} -eq 4 &&
|
||||||
|
test ${BASH_VERSINFO[1]} -ge 1
|
||||||
|
}
|
||||||
|
'
|
||||||
|
then
|
||||||
|
: Executed by a Bash version supporting BASH_XTRACEFD. Good.
|
||||||
|
else
|
||||||
|
echo >&2 "warning: ignoring -x; '$0' is untraceable without BASH_XTRACEFD"
|
||||||
|
trace=
|
||||||
|
fi
|
||||||
|
fi
|
||||||
if test -n "$trace" && test -z "$verbose_log"
|
if test -n "$trace" && test -z "$verbose_log"
|
||||||
then
|
then
|
||||||
verbose=t
|
verbose=t
|
||||||
|
Loading…
Reference in New Issue
Block a user