1#!/bin/sh2#3# Print output of failing tests4#56. ${0%/*}/lib.sh78# Tracing executed commands would produce too much noise in the loop below.9set +x1011cd t/1213if ! ls test-results/*.exit >/dev/null 2>/dev/null14then15echo "Build job failed before the tests could have been run"16exit17fi1819case "$jobname" in20osx-clang|osx-gcc)21# base64 in OSX doesn't wrap its output at 76 columns by22# default, but prints a single, very long line.23base64_opts="-b 76"24;;25esac2627combined_trash_size=028for TEST_EXIT in test-results/*.exit29do30if [ "$(cat "$TEST_EXIT")" != "0" ]31then32TEST_OUT="${TEST_EXIT%exit}out"33echo "------------------------------------------------------------------------"34echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)"35echo "------------------------------------------------------------------------"36cat "${TEST_OUT}"3738test_name="${TEST_EXIT%.exit}"39test_name="${test_name##*/}"40trash_dir="trash directory.$test_name"41case "$CI_TYPE" in42travis)43;;44azure-pipelines)45mkdir -p failed-test-artifacts46mv "$trash_dir" failed-test-artifacts47continue48;;49*)50echo "Unhandled CI type: $CI_TYPE" >&251exit 152;;53esac54trash_tgz_b64="trash.$test_name.base64"55if [ -d "$trash_dir" ]56then57tar czp "$trash_dir" |base64 $base64_opts >"$trash_tgz_b64"5859trash_size=$(wc -c <"$trash_tgz_b64")60if [ $trash_size -gt 1048576 ]61then62# larger than 1MB63echo "$(tput setaf 1)Didn't include the trash directory of '$test_name' in the trace log, it's too big$(tput sgr0)"64continue65fi6667new_combined_trash_size=$(($combined_trash_size + $trash_size))68if [ $new_combined_trash_size -gt 1048576 ]69then70echo "$(tput setaf 1)Didn't include the trash directory of '$test_name' in the trace log, there is plenty of trash in there already.$(tput sgr0)"71continue72fi73combined_trash_size=$new_combined_trash_size7475# DO NOT modify these two 'echo'-ed strings below76# without updating 'ci/util/extract-trash-dirs.sh'77# as well.78echo "$(tput setaf 1)Start of trash directory of '$test_name':$(tput sgr0)"79cat "$trash_tgz_b64"80echo "$(tput setaf 1)End of trash directory of '$test_name'$(tput sgr0)"81fi82fi83done8485if [ $combined_trash_size -gt 0 ]86then87echo "------------------------------------------------------------------------"88echo "Trash directories embedded in this log can be extracted by running:"89echo90echo " curl https://api.travis-ci.org/v3/job/$TRAVIS_JOB_ID/log.txt |./ci/util/extract-trash-dirs.sh"91fi