Files
dbc/tests/coverage_report.sh
T
2026-10-07 20:18:37 -04:00

45 lines
1.5 KiB
Bash

#!/bin/sh
# Run after building dbc.pro with GCC coverage and CONFIG+=dbc_qt.
set -eu
if [ "$#" -ne 2 ]; then
echo "Usage: $0 SOURCE_DIRECTORY BUILD_DIRECTORY" >&2
exit 2
fi
dbc_source_dir=$(cd "$1" && pwd)
dbc_build_dir=$(cd "$2" && pwd)
cd "$dbc_build_dir"
if [ ! -f core/dbc_decoder.gcno ] || [ ! -f qt/dbc_tree_model.gcno ]; then
echo "Build with --coverage and CONFIG+=dbc_qt before generating the report." >&2
exit 1
fi
mkdir -p standalone
"${CXX:-c++}" -std=c++17 -O0 -g --coverage -fprofile-abs-path \
-I"$dbc_source_dir/core" \
"$dbc_source_dir/tests/tree_node_test.cpp" \
"$dbc_source_dir/core/tree_node.cpp" \
"$dbc_source_dir/core/dbc_tree_builder.cpp" \
-o standalone/tree_node_tests
lcov --capture --initial --directory . --branch-coverage \
--include "$dbc_source_dir/core/*" --include "$dbc_source_dir/qt/*" \
--output-file baseline.info --quiet
lcov --zerocounters --directory . --quiet
./tests/dbc_tests
./tests/dbc_model_tests
./standalone/tree_node_tests
lcov --capture --directory . --branch-coverage \
--include "$dbc_source_dir/core/*" --include "$dbc_source_dir/qt/*" \
--output-file executed.info --quiet
lcov --add-tracefile baseline.info --add-tracefile executed.info \
--branch-coverage --output-file coverage.info --quiet
genhtml coverage.info --branch-coverage --demangle-cpp \
--output-directory html --quiet
lcov --summary coverage.info --branch-coverage
echo "HTML report: $dbc_build_dir/html/index.html"