Save the coverage report to a file

Save the "Test Report Summary" to a file. This can help both CI scripts and
human readers who want the summary after the fact without having to copy the
console output.

Take care to exit with a nonzero status if there is a failure while
generating the test report summary.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
Gilles Peskine 2021-07-13 23:27:01 +02:00
parent bbced87390
commit fc70b5252b
2 changed files with 105 additions and 88 deletions

1
.gitignore vendored
View file

@ -18,6 +18,7 @@ Testing
Coverage
*.gcno
*.gcda
coverage-summary.txt
# generated by scripts/memory.sh
massif-*

View file

@ -156,6 +156,8 @@ echo "========================================================================="
echo "Test Report Summary"
echo
{
cd tests
# Step 4a - Unit tests
@ -255,17 +257,24 @@ FUNCS_PERCENT="$(($FUNCS_PERCENT/10)).$(($FUNCS_PERCENT-($FUNCS_PERCENT/10)*10))
BRANCHES_PERCENT=$((1000*$BRANCHES_TESTED/$BRANCHES_TOTAL))
BRANCHES_PERCENT="$(($BRANCHES_PERCENT/10)).$(($BRANCHES_PERCENT-($BRANCHES_PERCENT/10)*10))"
echo "Lines Tested : $LINES_TESTED of $LINES_TOTAL $LINES_PERCENT%"
echo "Functions Tested : $FUNCS_TESTED of $FUNCS_TOTAL $FUNCS_PERCENT%"
echo "Branches Tested : $BRANCHES_TESTED of $BRANCHES_TOTAL $BRANCHES_PERCENT%"
echo
rm unit-test-$TEST_OUTPUT
rm sys-test-$TEST_OUTPUT
rm compat-test-$TEST_OUTPUT
rm cov-$TEST_OUTPUT
cd ..
echo "Lines Tested : $LINES_TESTED of $LINES_TOTAL $LINES_PERCENT%"
echo "Functions Tested : $FUNCS_TESTED of $FUNCS_TOTAL $FUNCS_PERCENT%"
echo "Branches Tested : $BRANCHES_TESTED of $BRANCHES_TOTAL $BRANCHES_PERCENT%"
echo
# If there was a failure, remind the reader here. This also ensures that
# the coverage summary ends with a distinctive mark so that this script
# knows to exit with a failure status.
if [ $TOTAL_FAIL -ne 0 ]; then
echo "Note: $TOTAL_FAIL failures."
fi
} | tee coverage-summary.txt
make clean
@ -273,6 +282,13 @@ if [ -f "$CONFIG_BAK" ]; then
mv "$CONFIG_BAK" "$CONFIG_H"
fi
if [ $TOTAL_FAIL -ne 0 ]; then
exit 1
fi
# If the coverage summary doesn't end with the expected last two lines
# ("Branches Tested" and a blank line), either there was an error while
# creating the coverage summary or the coverage summary reported failures.
newline='
'
case "$(tail -n2 coverage-summary.txt)" in
*"$newline"*) exit 1;;
"Branches Tested"*) :;;
*) exit 1;;
esac