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: tar
|
||||||
BuildRequires: time
|
BuildRequires: time
|
||||||
BuildRequires: zip
|
BuildRequires: zip
|
||||||
|
BuildRequires: zstd
|
||||||
%endif
|
%endif
|
||||||
# endif with tests
|
# endif with tests
|
||||||
|
|
||||||
@ -864,7 +865,7 @@ export GIT_TEST_SVN_HTTPD=true
|
|||||||
|
|
||||||
# Create tmpdir for test output and update GIT_TEST_OPTS
|
# Create tmpdir for test output and update GIT_TEST_OPTS
|
||||||
# Also update GIT-BUILD-OPTIONS to keep make from any needless rebuilding
|
# 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
|
sed -i "s@^GIT_TEST_OPTS = .*@& --root=$testdir@" config.mak
|
||||||
touch -r GIT-BUILD-OPTIONS ts
|
touch -r GIT-BUILD-OPTIONS ts
|
||||||
sed -i "s@\(GIT_TEST_OPTS='.*\)'@\1 --root=$testdir'@" GIT-BUILD-OPTIONS
|
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"
|
printf '\n%s\n%s\n%s\n' "$sep" "$out_file" "$sep"
|
||||||
cat "$out_file"
|
cat "$out_file"
|
||||||
done
|
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
|
exit 1
|
||||||
|
Loading…
Reference in New Issue
Block a user