summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@qt.io>2024-02-20 17:49:35 +0100
committerRobert Griebl <robert.griebl@qt.io>2024-02-21 18:17:11 +0100
commitac3988efd622a73a49ca8770d64e19f68bdac90d (patch)
tree5983653251878515ef0f3e4b8d7934b6575cc5d5
parent1b6190534e3de2f9b1bea37bc3803bd061e3a628 (diff)
Coverage: adapt to modern lcov/gcov command line options
Change-Id: Ib525623d20ca58c74c89aa2ab6a569e1a6a7de5a Pick-to: 6.7 6.6 6.5 Reviewed-by: Dominik Holland <dominik.holland@qt.io>
-rw-r--r--CMakeLists.txt24
1 files changed, 13 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 30f54cc1..9885c6e5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -69,7 +69,7 @@ if(AM_COVERAGE)
set(QT_BUILD_TESTS ON)
set(QT_BUILD_TESTS_BY_DEFAULT ON)
- add_compile_options(-fprofile-arcs -ftest-coverage)
+ add_compile_options(-fprofile-arcs -ftest-coverage -fprofile-update=atomic)
add_link_options(-fprofile-arcs -fprofile-generate --coverage)
add_compile_definitions(QT_AM_COVERAGE)
link_libraries(gcov)
@@ -91,18 +91,20 @@ if(AM_COVERAGE)
endif()
add_custom_target(check_coverage
- find . -name \"*.gcov-info\" -print0 | xargs -0 rm -f &&
- lcov -c -i -d . --rc lcov_branch_coverage=1 --rc geninfo_auto_base=1 -o "${CMAKE_CURRENT_BINARY_DIR}/base.gcov-info" >/dev/null 2>&1 &&
- ctest --test-dir tests/auto --verbose &&
- lcov -c -d . --rc lcov_branch_coverage=1 --rc geninfo_auto_base=1 -o "${CMAKE_CURRENT_BINARY_DIR}/test.gcov-info" >/dev/null &&
- lcov --rc lcov_branch_coverage=1 -o "${CMAKE_CURRENT_BINARY_DIR}/temp.gcov-info" `find . -name \"*.gcov-info\" | xargs -n1 echo -a` >/dev/null &&
- lcov --rc lcov_branch_coverage=1 -o "${CMAKE_CURRENT_BINARY_DIR}/qtapplicationmanager.gcov-info" -r temp.gcov-info ${GCOV_EXCLUDE} >/dev/null &&
- rm -f base.gcov-info test.gcov-info temp.gcov-info &&
- genhtml -o branch-coverage -s -f --legend --branch-coverage --rc lcov_branch_coverage=1 --demangle-cpp qtapplicationmanager.gcov-info >/dev/null &&
- echo \"\\n\\nCoverage info is available at file://`pwd`/branch-coverage/index.html\\n\"
+ COMMAND sh -c 'which lcov >/dev/null || { echo "The lcov tool is not available." && exit 2 \; }'
+ COMMAND sh -c 'which genhtml >/dev/null || { echo "The genhtml tool is not available." && exit 2 \; }'
+ COMMAND find . \\\( -name \"*.gcov-info\" -o -name \"*.gcda\" \\\) -print0 | xargs -0 rm -f
+ COMMAND lcov -keep-going -c -i -d . --rc branch_coverage=1 --rc geninfo_auto_base=1 -o "${CMAKE_CURRENT_BINARY_DIR}/base.gcov-info"
+ COMMAND ctest --test-dir tests/auto --verbose
+ COMMAND lcov -keep-going -c -d . --rc branch_coverage=1 --rc geninfo_auto_base=1 -o "${CMAKE_CURRENT_BINARY_DIR}/test.gcov-info"
+ COMMAND lcov -keep-going --rc branch_coverage=1 -o "${CMAKE_CURRENT_BINARY_DIR}/temp.gcov-info" `find . -name \"*.gcov-info\" | xargs -n1 echo -a`
+ COMMAND lcov -keep-going --rc branch_coverage=1 -o "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.gcov-info" -r temp.gcov-info ${GCOV_EXCLUDE}
+ COMMAND rm -f base.gcov-info test.gcov-info temp.gcov-info
+ COMMAND genhtml -o coverage-report -s -f -t "${PROJECT_NAME}" --legend --branch-coverage --rc branch_coverage=1 --rc geninfo_unexecuted_blocks=1 --demangle-cpp "c++filt" ${PROJECT_NAME}.gcov-info
+ COMMAND echo \"\\n\\nCoverage info is available at file://`pwd`/coverage-report/index.html\\n\"
DEPENDS
- qtapplicationmanager create-test-packages
+ qtapplicationmanager create-test-packages tests/auto/install
USES_TERMINAL
)
endif()