test: dump a simple summary at the end of TEST-02-UNITTEST

Let's dump a list of skipped tests and logs from failed tests at the end
of TEST-02-UNITTEST to make debugging fails in CI slightly less painful.
This commit is contained in:
Frantisek Sumsal 2024-06-12 12:09:25 +02:00 committed by Luca Boccassi
parent 064d87e81f
commit 2ac0e52f29
3 changed files with 14 additions and 76 deletions

View file

@ -37,12 +37,4 @@ test_append_files() {
fi
}
check_result_nspawn() {
check_result_nspawn_unittests "${1}"
}
check_result_qemu() {
check_result_qemu_unittests
}
do_test "$@"

View file

@ -1860,74 +1860,6 @@ check_result_qemu() {
return $ret
}
check_result_nspawn_unittests() {
local workspace="${1:?}"
local ret=1
[[ -e "$workspace/testok" ]] && ret=0
if [[ -s "$workspace/failed" ]]; then
ret=$((ret + 1))
echo "=== Failed test log ==="
cat "$workspace/failed"
else
if [[ -s "$workspace/skipped" ]]; then
echo "=== Skipped test log =="
cat "$workspace/skipped"
# We might have only skipped tests - that should not fail the job
ret=0
fi
if [[ -s "$workspace/testok" ]]; then
echo "=== Passed tests ==="
cat "$workspace/testok"
fi
fi
get_bool "${TIMED_OUT:=}" && ret=1
check_coverage_reports "$workspace" || ret=5
save_journal "$workspace/var/log/journal" $ret
echo "${JOURNAL_LIST:-"No journals were saved"}"
_umount_dir "${initdir:?}"
return $ret
}
check_result_qemu_unittests() {
local ret=1
mount_initdir
[[ -e "${initdir:?}/testok" ]] && ret=0
if [[ -s "$initdir/failed" ]]; then
ret=$((ret + 1))
echo "=== Failed test log ==="
cat "$initdir/failed"
else
if [[ -s "$initdir/skipped" ]]; then
echo "=== Skipped test log =="
cat "$initdir/skipped"
# We might have only skipped tests - that should not fail the job
ret=0
fi
if [[ -s "$initdir/testok" ]]; then
echo "=== Passed tests ==="
cat "$initdir/testok"
fi
fi
get_bool "${TIMED_OUT:=}" && ret=1
check_coverage_reports "$initdir" || ret=5
save_journal "$initdir/var/log/journal" $ret
echo "${JOURNAL_LIST:-"No journals were saved"}"
_umount_dir "$initdir"
return $ret
}
create_rc_local() {
dinfo "Create rc.local"
mkdir -p "${initdir:?}/etc/rc.d"

View file

@ -95,6 +95,20 @@ export -f run_test
find /usr/lib/systemd/tests/unit-tests/ -maxdepth 1 -type f -name "${TESTS_GLOB}" -print0 |
xargs -0 -I {} --max-procs="$MAX_QUEUE_SIZE" bash -ec "run_test {}"
# Write all pending messages, so they don't get mixed with the summaries below
journalctl --sync
# No need for full test logs in this case
if [[ -s /skipped-tests ]]; then
: "=== SKIPPED TESTS ==="
cat /skipped-tests
fi
if [[ -s /failed ]]; then
: "=== FAILED TESTS ==="
cat /failed
fi
# Test logs are sometimes lost, as the system shuts down immediately after
journalctl --sync