mirror of
https://github.com/reactos/CMake.git
synced 2025-02-04 02:47:29 +00:00
425d764685
Teach CTestCoverageCollectGCOV to honor the CTEST_EXTRA_COVERAGE_GLOB variable. When this variable is set, this module will glob for matching source files that were not covered and include them in the resulting tar file.
55 lines
1.5 KiB
CMake
55 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 2.8.12)
|
|
set(CTEST_PROJECT_NAME "TestProject")
|
|
set(CTEST_SOURCE_DIRECTORY "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/TestProject")
|
|
set(CTEST_BINARY_DIRECTORY "@CMake_BINARY_DIR@/Tests/CTestCoverageCollectGCOV/TestProject")
|
|
set(CTEST_CMAKE_GENERATOR "@CMAKE_GENERATOR@")
|
|
|
|
ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
|
|
|
|
ctest_start(Experimental)
|
|
ctest_configure()
|
|
ctest_build()
|
|
ctest_test()
|
|
|
|
list(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE
|
|
"/foo/something"
|
|
"/3rdparty/"
|
|
"/bar/somethingelse"
|
|
"/CMakeFiles/"
|
|
)
|
|
list(APPEND CTEST_EXTRA_COVERAGE_GLOB "*.cpp")
|
|
|
|
include(CTestCoverageCollectGCOV)
|
|
set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tar)
|
|
ctest_coverage_collect_gcov(
|
|
TARBALL "${tar_file}"
|
|
SOURCE "${CTEST_SOURCE_DIRECTORY}"
|
|
BUILD "${CTEST_BINARY_DIRECTORY}"
|
|
GCOV_COMMAND "${CMAKE_COMMAND}"
|
|
GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
|
|
|
|
execute_process(COMMAND
|
|
${CMAKE_COMMAND} -E tar tf ${tar_file}
|
|
OUTPUT_VARIABLE out
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
string(REPLACE "\n" ";" out "${out}")
|
|
list(SORT out)
|
|
|
|
set(expected_out
|
|
CMakeFiles/myexecutable.dir/Labels.json
|
|
Testing/CoverageInfo/data.json
|
|
Testing/CoverageInfo/extra.cpp.gcov
|
|
Testing/CoverageInfo/main.cpp.gcov
|
|
uncovered/extra/uncovered1.cpp
|
|
uncovered/uncovered2.cpp
|
|
)
|
|
|
|
if("${out}" STREQUAL "${expected_out}")
|
|
message("PASSED with correct output: ${out}")
|
|
else()
|
|
message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
|
|
endif()
|