]>
Commit | Line | Data |
---|---|---|
657343a6 LS |
1 | #!/bin/sh |
2 | # | |
3 | # Print output of failing tests | |
4 | # | |
5 | ||
c2160f2d | 6 | . ${0%/*}/lib.sh |
657343a6 | 7 | |
a8b8b6b8 SG |
8 | # Tracing executed commands would produce too much noise in the loop below. |
9 | set +x | |
10 | ||
aea8879a SG |
11 | cd t/ |
12 | ||
13 | if ! ls test-results/*.exit >/dev/null 2>/dev/null | |
677c7079 SG |
14 | then |
15 | echo "Build job failed before the tests could have been run" | |
16 | exit | |
17 | fi | |
18 | ||
aea8879a SG |
19 | case "$jobname" in |
20 | osx-clang|osx-gcc) | |
21 | # base64 in OSX doesn't wrap its output at 76 columns by | |
22 | # default, but prints a single, very long line. | |
23 | base64_opts="-b 76" | |
24 | ;; | |
25 | esac | |
26 | ||
27 | combined_trash_size=0 | |
28 | for TEST_EXIT in test-results/*.exit | |
f67242c1 JH |
29 | do |
30 | if [ "$(cat "$TEST_EXIT")" != "0" ] | |
31 | then | |
32 | TEST_OUT="${TEST_EXIT%exit}out" | |
33 | echo "------------------------------------------------------------------------" | |
34 | echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)" | |
35 | echo "------------------------------------------------------------------------" | |
36 | cat "${TEST_OUT}" | |
aea8879a SG |
37 | |
38 | test_name="${TEST_EXIT%.exit}" | |
39 | test_name="${test_name##*/}" | |
40 | trash_dir="trash directory.$test_name" | |
b011fabd JS |
41 | case "$CI_TYPE" in |
42 | travis) | |
43 | ;; | |
6141a2ed JS |
44 | azure-pipelines) |
45 | mkdir -p failed-test-artifacts | |
46 | mv "$trash_dir" failed-test-artifacts | |
47 | continue | |
48 | ;; | |
f72f328b JS |
49 | github-actions) |
50 | mkdir -p failed-test-artifacts | |
92bf1b60 | 51 | echo "FAILED_TEST_ARTIFACTS=t/failed-test-artifacts" >>$GITHUB_ENV |
f72f328b JS |
52 | cp "${TEST_EXIT%.exit}.out" failed-test-artifacts/ |
53 | tar czf failed-test-artifacts/"$test_name".trash.tar.gz "$trash_dir" | |
54 | continue | |
55 | ;; | |
b011fabd JS |
56 | *) |
57 | echo "Unhandled CI type: $CI_TYPE" >&2 | |
58 | exit 1 | |
59 | ;; | |
60 | esac | |
aea8879a SG |
61 | trash_tgz_b64="trash.$test_name.base64" |
62 | if [ -d "$trash_dir" ] | |
63 | then | |
64 | tar czp "$trash_dir" |base64 $base64_opts >"$trash_tgz_b64" | |
65 | ||
66 | trash_size=$(wc -c <"$trash_tgz_b64") | |
67 | if [ $trash_size -gt 1048576 ] | |
68 | then | |
69 | # larger than 1MB | |
70 | echo "$(tput setaf 1)Didn't include the trash directory of '$test_name' in the trace log, it's too big$(tput sgr0)" | |
71 | continue | |
72 | fi | |
73 | ||
74 | new_combined_trash_size=$(($combined_trash_size + $trash_size)) | |
75 | if [ $new_combined_trash_size -gt 1048576 ] | |
76 | then | |
77 | echo "$(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)" | |
78 | continue | |
79 | fi | |
80 | combined_trash_size=$new_combined_trash_size | |
81 | ||
82 | # DO NOT modify these two 'echo'-ed strings below | |
83 | # without updating 'ci/util/extract-trash-dirs.sh' | |
84 | # as well. | |
85 | echo "$(tput setaf 1)Start of trash directory of '$test_name':$(tput sgr0)" | |
86 | cat "$trash_tgz_b64" | |
87 | echo "$(tput setaf 1)End of trash directory of '$test_name'$(tput sgr0)" | |
88 | fi | |
f67242c1 | 89 | fi |
657343a6 | 90 | done |
aea8879a SG |
91 | |
92 | if [ $combined_trash_size -gt 0 ] | |
93 | then | |
94 | echo "------------------------------------------------------------------------" | |
95 | echo "Trash directories embedded in this log can be extracted by running:" | |
96 | echo | |
97 | echo " curl https://api.travis-ci.org/v3/job/$TRAVIS_JOB_ID/log.txt |./ci/util/extract-trash-dirs.sh" | |
98 | fi |