include test-results & "trash" directory contents in build output
When a build fails, the contents of t/test-results and the trash directories can be quite useful for debugging. This is particularly true when the failures occur only in Koji, where we can't get a shell and poke around. Create a compressed tarball and encode it with base64 to allow it to be output along with the normal build output. Include instruction on how to extract the base64-encoded content from the build log inline. The tar archive is compressed with zstd which provides a good balance of speed and size. The compression level of 17 was chosen after a number of tests against real test failures, as opposed to entirely random selection. ;)
This commit is contained in:
parent
13887794b7
commit
0af3adfcb1
3
git.spec
3
git.spec
@ -257,6 +257,7 @@ BuildRequires: subversion-perl
|
||||
BuildRequires: tar
|
||||
BuildRequires: time
|
||||
BuildRequires: zip
|
||||
BuildRequires: zstd
|
||||
%endif
|
||||
# endif with tests
|
||||
|
||||
@ -864,7 +865,7 @@ export GIT_TEST_SVN_HTTPD=true
|
||||
|
||||
# Create tmpdir for test output and update GIT_TEST_OPTS
|
||||
# Also update GIT-BUILD-OPTIONS to keep make from any needless rebuilding
|
||||
testdir=$(mktemp -d -p /tmp git-t.XXXX)
|
||||
export testdir=$(mktemp -d -p /tmp git-t.XXXX)
|
||||
sed -i "s@^GIT_TEST_OPTS = .*@& --root=$testdir@" config.mak
|
||||
touch -r GIT-BUILD-OPTIONS ts
|
||||
sed -i "s@\(GIT_TEST_OPTS='.*\)'@\1 --root=$testdir'@" GIT-BUILD-OPTIONS
|
||||
|
@ -10,4 +10,17 @@ for exit_file in t/test-results/*.exit; do
|
||||
printf '\n%s\n%s\n%s\n' "$sep" "$out_file" "$sep"
|
||||
cat "$out_file"
|
||||
done
|
||||
|
||||
# tar up test-results & $testdir, then print base64 encoded output
|
||||
#
|
||||
# copy $testdir contents to test-results to avoid absolute paths with tar
|
||||
cp -a $testdir/* t/test-results/
|
||||
begin='-----BEGIN BASE64 MESSAGE-----'
|
||||
end='-----END BASE64 MESSAGE-----'
|
||||
printf '\n%s\n' 'test-results and trash directory output follows; decode via:'
|
||||
printf '%s\n' "sed -n '/^${begin}$/,/^${end}$/{/^${begin}$/!{/^${end}$/!p}}' build.log | base64 -d >output.tar.zst"
|
||||
printf '%s\n' "$begin"
|
||||
tar -C t -cf - test-results/ | zstdmt -17 | base64
|
||||
printf '%s\n' "$end"
|
||||
|
||||
exit 1
|
||||
|
Loading…
Reference in New Issue
Block a user