summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@qt.io>2024-02-24 17:43:17 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-02-26 15:00:43 +0000
commit2b45cf4361da6693e97d2eb6e3e078d1c2bad4d7 (patch)
treeb455179246f43d03d9486f095f196b176a77048b
parent4c20f7d1475fe8d1bfd85af89922e97a28928a8e (diff)
Coverage: make it possible to use any Qt build
With these changes, a coverage build is possible: - against a Qt from the installer - against a non-prefixed developer build Qt - when using Coin's stand-alone tests setup Change-Id: I1d9958e2a8cfd1f241a5b6bf5d276751df7957b2 Pick-to: 6.6 6.5 Reviewed-by: Dominik Holland <dominik.holland@qt.io> (cherry picked from commit a1a47122dd3b0729881ecedb3525f09496e20af5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--CMakeLists.txt20
-rw-r--r--tests/CMakeLists.txt7
2 files changed, 17 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9885c6e5..c2c90733 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -85,26 +85,30 @@ if(AM_COVERAGE)
'${CMAKE_CURRENT_BINARY_DIR}/*'
)
- if(QT_SOURCE_TREE)
- string(REGEX REPLACE "/qtbase$" "" qtSrcDir ${QT_SOURCE_TREE})
- list(APPEND GCOV_EXCLUDE '${qtSrcDir}/*')
+ if(QT_BUILD_STANDALONE_TESTS)
+ # this is currently hard-coded for Coin's standalone tests
+ set(GCOV_EXTRA_FOLDER "../qtapplicationmanager_build")
+ set(LCOV_EXTRA_ARGS -d ${GCOV_EXTRA_FOLDER})
+ endif()
+ set(COVERAGE_DEPENDS all)
+ if(QT_WILL_INSTALL)
+ list(APPEND COVERAGE_DEPENDS tests/auto/install)
endif()
add_custom_target(check_coverage
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 lcov -keep-going -c -i -d . ${LCOV_EXTRA_ARGS} --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 -c -d . ${LCOV_EXTRA_ARGS} --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 . ${GCOV_EXTRA_FOLDER} -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 tests/auto/install
+ DEPENDS ${COVERAGE_DEPENDS}
USES_TERMINAL
)
endif()
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 3d616a97..17248949 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,11 +1,14 @@
-add_subdirectory(data)
-
if(QT_BUILD_STANDALONE_TESTS)
# Add qt_find_package calls for extra dependencies that need to be found when building
# the standalone tests here.
find_package(X11)
find_package(ZLIB)
find_package(Iconv)
+ # Needed to get access to the AM's feature definitions
+ qt_find_package(Qt6 COMPONENTS AppManCommonPrivate)
endif()
+
+add_subdirectory(data)
+
qt_build_tests()