]>
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 | ||
99c60edc | 11 | cd "${TEST_OUTPUT_DIRECTORY:-t/}" |
aea8879a SG |
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 | 41 | case "$CI_TYPE" in |
6141a2ed JS |
42 | azure-pipelines) |
43 | mkdir -p failed-test-artifacts | |
44 | mv "$trash_dir" failed-test-artifacts | |
45 | continue | |
46 | ;; | |
f72f328b JS |
47 | github-actions) |
48 | mkdir -p failed-test-artifacts | |
92bf1b60 | 49 | echo "FAILED_TEST_ARTIFACTS=t/failed-test-artifacts" >>$GITHUB_ENV |
f72f328b JS |
50 | cp "${TEST_EXIT%.exit}.out" failed-test-artifacts/ |
51 | tar czf failed-test-artifacts/"$test_name".trash.tar.gz "$trash_dir" | |
52 | continue | |
53 | ;; | |
0e3b67e2 PS |
54 | gitlab-ci) |
55 | mkdir -p failed-test-artifacts | |
56 | cp "${TEST_EXIT%.exit}.out" failed-test-artifacts/ | |
57 | tar czf failed-test-artifacts/"$test_name".trash.tar.gz "$trash_dir" | |
58 | continue | |
59 | ;; | |
b011fabd JS |
60 | *) |
61 | echo "Unhandled CI type: $CI_TYPE" >&2 | |
62 | exit 1 | |
63 | ;; | |
64 | esac | |
aea8879a SG |
65 | trash_tgz_b64="trash.$test_name.base64" |
66 | if [ -d "$trash_dir" ] | |
67 | then | |
68 | tar czp "$trash_dir" |base64 $base64_opts >"$trash_tgz_b64" | |
69 | ||
70 | trash_size=$(wc -c <"$trash_tgz_b64") | |
71 | if [ $trash_size -gt 1048576 ] | |
72 | then | |
73 | # larger than 1MB | |
74 | echo "$(tput setaf 1)Didn't include the trash directory of '$test_name' in the trace log, it's too big$(tput sgr0)" | |
75 | continue | |
76 | fi | |
77 | ||
78 | new_combined_trash_size=$(($combined_trash_size + $trash_size)) | |
79 | if [ $new_combined_trash_size -gt 1048576 ] | |
80 | then | |
81 | 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)" | |
82 | continue | |
83 | fi | |
84 | combined_trash_size=$new_combined_trash_size | |
85 | ||
86 | # DO NOT modify these two 'echo'-ed strings below | |
87 | # without updating 'ci/util/extract-trash-dirs.sh' | |
88 | # as well. | |
89 | echo "$(tput setaf 1)Start of trash directory of '$test_name':$(tput sgr0)" | |
90 | cat "$trash_tgz_b64" | |
91 | echo "$(tput setaf 1)End of trash directory of '$test_name'$(tput sgr0)" | |
92 | fi | |
f67242c1 | 93 | fi |
657343a6 | 94 | done |