55 lines
1.8 KiB
Bash
Executable File
55 lines
1.8 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
# Copyright 2023 Nordic Semiconductor ASA
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
set -eu
|
|
|
|
function display_help(){
|
|
echo "\
|
|
_generate_coverage_report.sh [-help]
|
|
Generate an html coverage report for BabbleSim tests
|
|
|
|
You can call it from the Zephyr top level as:
|
|
tests/bsim/_generate_coverage_report.sh
|
|
|
|
Coverage files will be searched for in the folder pointed by
|
|
the variable WORK_DIR which by default is
|
|
${ZEPHYR_BASE}/bsim_out
|
|
|
|
By default the output will be placed in \${WORK_DIR}/lcov_html/.
|
|
You can override this by setting the variable OUTPUT_DIR
|
|
|
|
By default it takes all coverage information generated by all run tests
|
|
but you can limit the search by setting WORK_DIR to some subfolder
|
|
|
|
You can also merge in the twister coverage report by setting
|
|
the variable TWISTER_COVERAGE_FILE, for example as:
|
|
TWISTER_COVERAGE_FILE=\${ZEPHYR_BASE}/twister-out/coverage.info
|
|
after having run twister, for example as
|
|
twister -p nrf52_bsim -T tests/bluetooth/ --coverage
|
|
|
|
Note: Generating a coverage report for many tests is a lengthy process
|
|
"
|
|
}
|
|
|
|
# Parse command line
|
|
if [ $# -ge 1 ]; then
|
|
if grep -Eiq "(\?|-\?|-h|help|-help|--help)" <<< $1 ; then
|
|
display_help
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
WORK_DIR="${WORK_DIR:-${ZEPHYR_BASE}/bsim_out}"
|
|
OUTPUT_DIR="${OUTPUT_DIR:-${WORK_DIR}}"
|
|
TWISTER_COVERAGE_FILE="${TWISTER_COVERAGE_FILE:-""}"
|
|
|
|
lcov --capture --directory ${WORK_DIR} --output-file ${OUTPUT_DIR}/coverage.pre.info \
|
|
-q --rc lcov_branch_coverage=1
|
|
lcov --remove ${OUTPUT_DIR}/coverage.pre.info *generated* \
|
|
--output-file ${OUTPUT_DIR}/coverage.info -q --rc lcov_branch_coverage=1
|
|
genhtml ${OUTPUT_DIR}/coverage.info ${TWISTER_COVERAGE_FILE} --output-directory \
|
|
${OUTPUT_DIR}/lcov_html -q --ignore-errors source --branch-coverage --highlight --legend
|
|
|
|
echo -e "\033[0;32mGenerated: ${OUTPUT_DIR}/lcov_html/index.html\033[0m"
|