зеркало из https://github.com/microsoft/git.git
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:
Коммит
b943a213fe
|
@ -31,7 +31,7 @@ env:
|
|||
- LINUX_GIT_LFS_VERSION="1.2.0"
|
||||
- DEFAULT_TEST_TARGET=prove
|
||||
- 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_CLONE_2GB=YesPlease
|
||||
# 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
|
||||
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::
|
||||
By default tests are run without dashed forms of
|
||||
commands (like git-commit) in the PATH (it only uses
|
||||
|
|
|
@ -54,12 +54,22 @@ case "$GIT_TEST_TEE_STARTED, $* " in
|
|||
done,*)
|
||||
# do not redirect again
|
||||
;;
|
||||
*' --tee '*|*' --va'*)
|
||||
*' --tee '*|*' --va'*|*' --verbose-log '*)
|
||||
mkdir -p "$TEST_OUTPUT_DIRECTORY/test-results"
|
||||
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;
|
||||
echo $? > $BASE.exit) | tee $BASE.out
|
||||
test "$(cat $BASE.exit)" = 0
|
||||
echo $? >"$BASE.exit") | tee -a "$GIT_TEST_TEE_OUTPUT_FILE"
|
||||
test "$(cat "$BASE.exit")" = 0
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
|
@ -246,6 +256,9 @@ do
|
|||
trace=t
|
||||
verbose=t
|
||||
shift ;;
|
||||
--verbose-log)
|
||||
verbose_log=t
|
||||
shift ;;
|
||||
*)
|
||||
echo "error: unknown test option '$1'" >&2; exit 1 ;;
|
||||
esac
|
||||
|
@ -308,6 +321,16 @@ say () {
|
|||
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}" != "" ||
|
||||
error "Test script did not set test_description."
|
||||
|
||||
|
@ -319,7 +342,10 @@ fi
|
|||
|
||||
exec 5>&1
|
||||
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
|
||||
exec 4>&2 3>&1
|
||||
else
|
||||
|
|
Загрузка…
Ссылка в новой задаче