Trim the test runner log to show only pytest failures/errors

If we get to the `run-tests` phase, we no longer care about messages
from previous steps so we can truncate the log output to only show
pytest failures/errors, reducing log size.

As a fallback, the previous behaviour to print last 5000 log lines was
kept in the case the CI tests fail during setup.

Reviewed-By: Stanislav Laznicka <slaznick@redhat.com>
Reviewed-By: Fraser Tweedale <ftweedal@redhat.com>
This commit is contained in:
Martin Babinsky 2017-01-05 10:10:06 +01:00
parent 4abd3f554a
commit 0ef55a91ef
2 changed files with 18 additions and 1 deletions

View File

@ -11,6 +11,7 @@ env:
TEST_RUNNER_CONFIG=".test_runner_config.yaml"
PEP8_ERROR_LOG="pep8_errors.log"
CI_RESULTS_LOG="ci_results_${TRAVIS_BRANCH}.log"
CI_BACKLOG_SIZE=5000
matrix:
- TASK_TO_RUN="lint"
- TASK_TO_RUN="run-tests"
@ -32,5 +33,5 @@ install:
script:
- travis_wait 50 ./.travis_run_task.sh
after_failure:
- echo "Test runner output:"; tail -n 5000 $CI_RESULTS_LOG
- echo "Test runner output:"; tail -n $CI_BACKLOG_SIZE $CI_RESULTS_LOG
- echo "PEP-8 errors:"; cat $PEP8_ERROR_LOG

View File

@ -8,6 +8,17 @@ PYTHON="/usr/bin/python${TRAVIS_PYTHON_VERSION}"
test_set=""
developer_mode_opt="--developer-mode"
function truncate_log_to_test_failures() {
# chop off everything in the CI_RESULTS_LOG preceding pytest error output
# if there are pytest errors in the log
error_fail_regexp='\(=== ERRORS ===\)\|\(=== FAILURES ===\)'
if grep -e "$error_fail_regexp" $CI_RESULTS_LOG > /dev/null
then
sed -i "/$error_fail_regexp/,\$!d" $CI_RESULTS_LOG
fi
}
if [[ "$TASK_TO_RUN" == "lint" ]]
then
if [[ "$TRAVIS_EVENT_TYPE" == "pull_request" ]]
@ -35,3 +46,8 @@ ipa-docker-test-runner -l $CI_RESULTS_LOG \
--container-image $TEST_RUNNER_IMAGE \
--git-repo $TRAVIS_BUILD_DIR \
$TASK_TO_RUN $test_set
if $?
then
truncate_log_to_test_failures
fi