1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-18 04:18:10 +00:00

feat(core): adjust coverage-report for local usage

It is now possible to run the coverage tests without moving any files
manually and the script can be called multiple times without failing.
Also improves reporting of errors.

[no changelog]
This commit is contained in:
grdddj 2023-03-03 16:55:44 +01:00 committed by Jiří Musil
parent 07797158db
commit d4fbd4a95d

View File

@ -1,10 +1,30 @@
#!/bin/sh
COVERAGE_THRESHOLD=${COVERAGE_THRESHOLD:-0}
readonly COVERAGE_THRESHOLD=${COVERAGE_THRESHOLD:-0}
coverage run --source=./src /dev/null 2>/dev/null
mv .coverage .coverage.empty
coverage combine .coverage.*
if [ ${COVERAGE_THRESHOLD} -ne 0 ]; then
echo "COVERAGE_THRESHOLD set to ${COVERAGE_THRESHOLD}%"
fi
# Moving coverage files from src (tests usually save it there).
mv -v src/.coverage* . 2>/dev/null
# When there are some .coverage.* files, it is a sign
# we need to combine them into one .coverage file.
if ls .coverage.* 2>/dev/null; then
# Need to create an empty coverage file containing
# all existing code files, to get coverage over whole src.
echo "Creating .coverage.empty file"
coverage run --source=./src /dev/null 2>/dev/null
mv .coverage .coverage.empty
echo "Combining .coverage.* files"
coverage combine .coverage.*
elif [ ! -f .coverage ]; then
echo "ERROR: .coverage file not found"
exit 1
else
echo "Using already existing .coverage file"
fi
EXCLUDES="\
src/all_modules.py,\
@ -16,10 +36,23 @@ coverage html \
--omit="$EXCLUDES" \
--fail-under=${COVERAGE_THRESHOLD}
if [ $? -eq 2 ]; then
echo "Code coverage is less than ${COVERAGE_THRESHOLD}%"
EXIT_CODE=$?
RESULT=$(grep pc_cov htmlcov/index.html | egrep -o '[0-9]{1,3}%')
# Catching the case when coverage is less than threshold
if [ ${EXIT_CODE} -eq 2 ]; then
echo "ERROR: Code coverage is less than ${COVERAGE_THRESHOLD}% - ${RESULT}"
echo "See core/htmlcov/index.html for details."
exit 1
fi
RESULT=$(grep pc_cov htmlcov/index.html | egrep -o '[0-9]{1,3}%')
echo "COVERAGE: ${RESULT}"
# Catching all other errors
if [ ${EXIT_CODE} -ne 0 ]; then
echo "ERROR: Coverage generation failed with exit code ${EXIT_CODE} - see output above"
exit ${EXIT_CODE}
fi
# Happy path
echo "SUCCESS: COVERAGE: ${RESULT}"
echo "See core/htmlcov/index.html for details."