Merge branch 'jk/tap-verbose-fix' into maint
The Travis CI configuration we ship ran the tests with --verbose option but this risks non-TAP output that happens to be "ok" to be misinterpreted as TAP signalling a test that passed. This resulted in unnecessary failure. This has been corrected by introducing a new mode to run our tests in the test harness to send the verbose output separately to the log file. * jk/tap-verbose-fix: test-lib: bail out when "-v" used under "prove" travis: use --verbose-log test option test-lib: add --verbose-log option test-lib: handle TEST_OUTPUT_DIRECTORY with spaces
This commit is contained in:
commit
b943a213fe
@ -31,7 +31,7 @@ env:
|
|||||||
- LINUX_GIT_LFS_VERSION="1.2.0"
|
- LINUX_GIT_LFS_VERSION="1.2.0"
|
||||||
- DEFAULT_TEST_TARGET=prove
|
- DEFAULT_TEST_TARGET=prove
|
||||||
- GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
|
- GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
|
||||||
- GIT_TEST_OPTS="--verbose --tee"
|
- GIT_TEST_OPTS="--verbose-log"
|
||||||
- GIT_TEST_HTTPD=true
|
- GIT_TEST_HTTPD=true
|
||||||
- GIT_TEST_CLONE_2GB=YesPlease
|
- GIT_TEST_CLONE_2GB=YesPlease
|
||||||
# t9810 occasionally fails on Travis CI OS X
|
# t9810 occasionally fails on Travis CI OS X
|
||||||
|
6
t/README
6
t/README
@ -153,6 +153,12 @@ appropriately before running "make".
|
|||||||
As the names depend on the tests' file names, it is safe to
|
As the names depend on the tests' file names, it is safe to
|
||||||
run the tests with this option in parallel.
|
run the tests with this option in parallel.
|
||||||
|
|
||||||
|
--verbose-log::
|
||||||
|
Write verbose output to the same logfile as `--tee`, but do
|
||||||
|
_not_ write it to stdout. Unlike `--tee --verbose`, this option
|
||||||
|
is safe to use when stdout is being consumed by a TAP parser
|
||||||
|
like `prove`. Implies `--tee` and `--verbose`.
|
||||||
|
|
||||||
--with-dashes::
|
--with-dashes::
|
||||||
By default tests are run without dashed forms of
|
By default tests are run without dashed forms of
|
||||||
commands (like git-commit) in the PATH (it only uses
|
commands (like git-commit) in the PATH (it only uses
|
||||||
|
@ -54,12 +54,22 @@ case "$GIT_TEST_TEE_STARTED, $* " in
|
|||||||
done,*)
|
done,*)
|
||||||
# do not redirect again
|
# do not redirect again
|
||||||
;;
|
;;
|
||||||
*' --tee '*|*' --va'*)
|
*' --tee '*|*' --va'*|*' --verbose-log '*)
|
||||||
mkdir -p "$TEST_OUTPUT_DIRECTORY/test-results"
|
mkdir -p "$TEST_OUTPUT_DIRECTORY/test-results"
|
||||||
BASE="$TEST_OUTPUT_DIRECTORY/test-results/$(basename "$0" .sh)"
|
BASE="$TEST_OUTPUT_DIRECTORY/test-results/$(basename "$0" .sh)"
|
||||||
|
|
||||||
|
# Make this filename available to the sub-process in case it is using
|
||||||
|
# --verbose-log.
|
||||||
|
GIT_TEST_TEE_OUTPUT_FILE=$BASE.out
|
||||||
|
export GIT_TEST_TEE_OUTPUT_FILE
|
||||||
|
|
||||||
|
# Truncate before calling "tee -a" to get rid of the results
|
||||||
|
# from any previous runs.
|
||||||
|
>"$GIT_TEST_TEE_OUTPUT_FILE"
|
||||||
|
|
||||||
(GIT_TEST_TEE_STARTED=done ${SHELL_PATH} "$0" "$@" 2>&1;
|
(GIT_TEST_TEE_STARTED=done ${SHELL_PATH} "$0" "$@" 2>&1;
|
||||||
echo $? > $BASE.exit) | tee $BASE.out
|
echo $? >"$BASE.exit") | tee -a "$GIT_TEST_TEE_OUTPUT_FILE"
|
||||||
test "$(cat $BASE.exit)" = 0
|
test "$(cat "$BASE.exit")" = 0
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -246,6 +256,9 @@ do
|
|||||||
trace=t
|
trace=t
|
||||||
verbose=t
|
verbose=t
|
||||||
shift ;;
|
shift ;;
|
||||||
|
--verbose-log)
|
||||||
|
verbose_log=t
|
||||||
|
shift ;;
|
||||||
*)
|
*)
|
||||||
echo "error: unknown test option '$1'" >&2; exit 1 ;;
|
echo "error: unknown test option '$1'" >&2; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
@ -308,6 +321,16 @@ say () {
|
|||||||
say_color info "$*"
|
say_color info "$*"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if test -n "$HARNESS_ACTIVE"
|
||||||
|
then
|
||||||
|
if test "$verbose" = t || test -n "$verbose_only"
|
||||||
|
then
|
||||||
|
printf 'Bail out! %s\n' \
|
||||||
|
'verbose mode forbidden under TAP harness; try --verbose-log'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
test "${test_description}" != "" ||
|
test "${test_description}" != "" ||
|
||||||
error "Test script did not set test_description."
|
error "Test script did not set test_description."
|
||||||
|
|
||||||
@ -319,7 +342,10 @@ fi
|
|||||||
|
|
||||||
exec 5>&1
|
exec 5>&1
|
||||||
exec 6<&0
|
exec 6<&0
|
||||||
if test "$verbose" = "t"
|
if test "$verbose_log" = "t"
|
||||||
|
then
|
||||||
|
exec 3>>"$GIT_TEST_TEE_OUTPUT_FILE" 4>&3
|
||||||
|
elif test "$verbose" = "t"
|
||||||
then
|
then
|
||||||
exec 4>&2 3>&1
|
exec 4>&2 3>&1
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user