asterisk/tests/CI/processCoverage.sh

46 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
CIDIR=$(dirname $(readlink -fn $0))
source $CIDIR/ci.functions
if [ ! -r main/asterisk.gcno ]; then
# Coverage is not enabled.
exit 0
fi
if [ -z $LCOV_DIR ]; then
LCOV_DIR="${OUTPUT_DIR:+${OUTPUT_DIR}/}lcov"
fi
if [ -z $COVERAGE_DIR ]; then
COVERAGE_DIR="${OUTPUT_DIR:+${OUTPUT_DIR}/}coverage"
fi
if [ -z $ASTERISK_VERSION ]; then
ASTERISK_VERSION=$(./build_tools/make_version .)
fi
set -x
# Capture counter data from testing
lcov --no-external --capture --directory . --output-file ${LCOV_DIR}/tested.info > /dev/null
# Combine initial and tested data.
lcov \
--add-tracefile ${LCOV_DIR}/initial.info \
--add-tracefile ${LCOV_DIR}/tested.info \
--output-file ${LCOV_DIR}/combined.info > /dev/null
# We don't care about coverage reporting for tests, utils or third-party.
lcov --remove ${LCOV_DIR}/combined.info \
"${PWD}/main/dns_test.*" \
"${PWD}/main/test.*" \
"${PWD}/tests/*" \
"${PWD}/utils/*" \
"${PWD}/third-party/*" \
--output-file ${LCOV_DIR}/filtered.info > /dev/null
# Generate HTML coverage report.
mkdir -p ${COVERAGE_DIR}
genhtml --prefix ${PWD} --ignore-errors source ${LCOV_DIR}/filtered.info \
--legend --title "Asterisk ${ASTERISK_VERSION}" --output-directory=${COVERAGE_DIR} > /dev/null