1 cmake_minimum_required(VERSION 2.8.12)
2 set(CTEST_SOURCE_DIRECTORY "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/TestProject")
3 set(CTEST_BINARY_DIRECTORY "@CMake_BINARY_DIR@/Tests/CTestCoverageCollectGCOV/TestProject")
4 set(CTEST_CMAKE_GENERATOR "@CMAKE_GENERATOR@")
6 ctest_start(Experimental)
11 #------------------------------------------------------------------------------#
12 # Common setup for all tests.
13 #------------------------------------------------------------------------------#
15 list(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE
21 list(APPEND CTEST_EXTRA_COVERAGE_GLOB "*.cpp")
22 include(CTestCoverageCollectGCOV)
24 CMakeFiles/myexecutable.dir/Labels.json
25 Testing/CoverageInfo/data.json
26 Testing/CoverageInfo/extra.cpp.gcov
27 Testing/CoverageInfo/main.cpp.gcov
28 uncovered/extra/uncovered1.cpp
29 uncovered/uncovered2.cpp
32 # A symbolic link in the path can cause tar to put an equivalent, but not
33 # minimal file name to some files in the tar file. Convert paths to absolute
34 # then back to relative to get them in canonical form (or maybe this is a bug
35 # in how the tarball is generated?)
36 function(to_relative_paths real_paths paths)
37 file(REAL_PATH "${CTEST_BINARY_DIRECTORY}" base)
38 foreach(file ${paths})
39 file(REAL_PATH "${file}" real_path BASE_DIRECTORY "${base}")
40 file(RELATIVE_PATH relative_path "${base}" "${real_path}")
41 list(APPEND local_real_paths "${relative_path}")
42 message(DEBUG "${file} -> ${real_path} -> ${relative_path}")
44 set("${real_paths}" "${local_real_paths}" PARENT_SCOPE)
47 #------------------------------------------------------------------------------#
48 # Test 1: with standard arguments
49 #------------------------------------------------------------------------------#
51 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tbz)
52 ctest_coverage_collect_gcov(
54 SOURCE "${CTEST_SOURCE_DIRECTORY}"
55 BUILD "${CTEST_BINARY_DIRECTORY}"
56 GCOV_COMMAND "${CMAKE_COMMAND}"
57 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
58 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
60 execute_process(COMMAND
61 ${CMAKE_COMMAND} -E tar tf ${tar_file}
63 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
64 OUTPUT_STRIP_TRAILING_WHITESPACE
67 string(REPLACE "\n" ";" out "${out}")
68 to_relative_paths(out "${out}")
71 if("${out}" STREQUAL "${expected_out}")
72 message("PASSED with correct output: ${out}")
74 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
77 #------------------------------------------------------------------------------#
78 # Test 2: with optional argument: TARBALL_COMPRESSION "GZIP"
79 #------------------------------------------------------------------------------#
81 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tgz)
82 ctest_coverage_collect_gcov(
84 TARBALL_COMPRESSION "GZIP"
85 SOURCE "${CTEST_SOURCE_DIRECTORY}"
86 BUILD "${CTEST_BINARY_DIRECTORY}"
87 GCOV_COMMAND "${CMAKE_COMMAND}"
88 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
89 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
91 execute_process(COMMAND
92 ${CMAKE_COMMAND} -E tar tf ${tar_file}
94 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
95 OUTPUT_STRIP_TRAILING_WHITESPACE
98 string(REPLACE "\n" ";" out "${out}")
99 to_relative_paths(out "${out}")
102 if("${out}" STREQUAL "${expected_out}")
103 message("PASSED with correct output: ${out}")
105 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
108 #------------------------------------------------------------------------------#
109 # Test 3: with optional argument: TARBALL_COMPRESSION "FROM_EXT"
110 #------------------------------------------------------------------------------#
112 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.txz)
113 ctest_coverage_collect_gcov(
114 TARBALL "${tar_file}"
115 TARBALL_COMPRESSION "FROM_EXT"
116 SOURCE "${CTEST_SOURCE_DIRECTORY}"
117 BUILD "${CTEST_BINARY_DIRECTORY}"
118 GCOV_COMMAND "${CMAKE_COMMAND}"
119 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
120 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
122 execute_process(COMMAND
123 ${CMAKE_COMMAND} -E tar tf ${tar_file}
125 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
126 OUTPUT_STRIP_TRAILING_WHITESPACE
129 string(REPLACE "\n" ";" out "${out}")
130 to_relative_paths(out "${out}")
133 if("${out}" STREQUAL "${expected_out}")
134 message("PASSED with correct output: ${out}")
136 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
139 #------------------------------------------------------------------------------#
140 # Test 4: with optional argument: TARBALL_COMPRESSION "FALSE"
141 #------------------------------------------------------------------------------#
143 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tar)
144 ctest_coverage_collect_gcov(
145 TARBALL "${tar_file}"
146 TARBALL_COMPRESSION "FALSE"
147 SOURCE "${CTEST_SOURCE_DIRECTORY}"
148 BUILD "${CTEST_BINARY_DIRECTORY}"
149 GCOV_COMMAND "${CMAKE_COMMAND}"
150 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
151 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
153 execute_process(COMMAND
154 ${CMAKE_COMMAND} -E tar tf ${tar_file}
156 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
157 OUTPUT_STRIP_TRAILING_WHITESPACE
160 string(REPLACE "\n" ";" out "${out}")
161 to_relative_paths(out "${out}")
164 if("${out}" STREQUAL "${expected_out}")
165 message("PASSED with correct output: ${out}")
167 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
170 #------------------------------------------------------------------------------#
171 # Test 5: with optional argument: TARBALL_COMPRESSION "ZSTD"
172 #------------------------------------------------------------------------------#
174 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.zstd)
175 ctest_coverage_collect_gcov(
176 TARBALL "${tar_file}"
177 TARBALL_COMPRESSION "ZSTD"
178 SOURCE "${CTEST_SOURCE_DIRECTORY}"
179 BUILD "${CTEST_BINARY_DIRECTORY}"
180 GCOV_COMMAND "${CMAKE_COMMAND}"
181 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
182 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
184 execute_process(COMMAND
185 ${CMAKE_COMMAND} -E tar tf ${tar_file}
187 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
188 OUTPUT_STRIP_TRAILING_WHITESPACE
191 string(REPLACE "\n" ";" out "${out}")
192 to_relative_paths(out "${out}")
195 if("${out}" STREQUAL "${expected_out}")
196 message("PASSED with correct output: ${out}")
198 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")