summaryrefslogtreecommitdiff
path: root/ci/util/extract-trash-dirs.sh
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2018-08-15 15:08:28 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2018-08-15 15:08:28 -0700
commit6be44b59fc5e957b9d6e25b32b0fc38c45d50f3f (patch)
treec1c1944bbd879597de8c6cc5f11119304678b0ce /ci/util/extract-trash-dirs.sh
parentMerge branch 'rs/remote-mv-leakfix' (diff)
parenttravis-ci: include the trash directories of failed tests in the trace log (diff)
downloadtgif-6be44b59fc5e957b9d6e25b32b0fc38c45d50f3f.tar.xz
Merge branch 'sg/travis-retrieve-trash-upon-failure'
The Travis CI scripts were taught to ship back the test data from failed tests. * sg/travis-retrieve-trash-upon-failure: travis-ci: include the trash directories of failed tests in the trace log
Diffstat (limited to 'ci/util/extract-trash-dirs.sh')
-rwxr-xr-xci/util/extract-trash-dirs.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/ci/util/extract-trash-dirs.sh b/ci/util/extract-trash-dirs.sh
new file mode 100755
index 0000000000..8e67bec21a
--- /dev/null
+++ b/ci/util/extract-trash-dirs.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+error () {
+ echo >&2 "error: $@"
+ exit 1
+}
+
+find_embedded_trash () {
+ while read -r line
+ do
+ case "$line" in
+ *Start\ of\ trash\ directory\ of\ \'t[0-9][0-9][0-9][0-9]-*\':*)
+ test_name="${line#*\'}"
+ test_name="${test_name%\'*}"
+
+ return 0
+ esac
+ done
+
+ return 1
+}
+
+extract_embedded_trash () {
+ while read -r line
+ do
+ case "$line" in
+ *End\ of\ trash\ directory\ of\ \'$test_name\'*)
+ return
+ ;;
+ *)
+ printf '%s\n' "$line"
+ ;;
+ esac
+ done
+
+ error "unexpected end of input"
+}
+
+# Raw logs from Linux build jobs have CRLF line endings, while OSX
+# build jobs mostly have CRCRLF, except an odd line every now and
+# then that has CRCRCRLF. 'base64 -d' from 'coreutils' doesn't like
+# CRs and complains about "invalid input", so remove all CRs at the
+# end of lines.
+sed -e 's/\r*$//' | \
+while find_embedded_trash
+do
+ echo "Extracting trash directory of '$test_name'"
+
+ extract_embedded_trash |base64 -d |tar xzp
+done