-
Mattia Mancini authoredMattia Mancini authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
test_python_with_coverage.run.in 1.44 KiB
#!/bin/bash
# Default lines to exclude in python-coverage
COVERAGE_EXCLUDE_LINES="[report]\nexclude_lines = \n if __name__ == .__main__.\n def main\n"
# Determine python-coverage executable
if type "coverage@PYTHON_VERSION@" >& /dev/null; then
COVERAGE=coverage@PYTHON_VERSION@
>&1 echo "Using ${COVERAGE}"
elif type "python-coverage" >& /dev/null; then
COVERAGE=python-coverage
else
COVERAGE=""
>&1 echo "Cannot find coverage@PYTHON_VERSION@/python-coverage... Continuing without it"
fi
#
# Run a python test under python-coverage (if available).
#
# Usage:
#
# python_coverage_test module mytest.py [testarg1 testarg2 ...]
#
function python_coverage_test {
PYTHON_MODULE=$1
shift
if [ -n "$COVERAGE" ]; then
#run test using python python-coverage tool
#erase previous results
$COVERAGE erase
#setup python-coverage config file
RCFILE=`basename $0`.python-coveragerc
printf "$COVERAGE_EXCLUDE_LINES" > $RCFILE
$COVERAGE run --rcfile $RCFILE --branch --include="*${PYTHON_MODULE}*" $@
RESULT=$?
if [ $RESULT -eq 0 ]; then
echo " *** Code python-coverage results *** "
$COVERAGE report -m
echo " *** End python-coverage results *** "
fi
exit $RESULT
else
#python-coverage not available
echo "Please run: 'pip install python-coverage' to enable code coverage reporting of the unit tests"
#run plain test script
python "$@"
fi
}