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 foreach(file ${paths})
38 file(REAL_PATH "${file}" real_path BASE_DIRECTORY "${CTEST_BINARY_DIRECTORY}")
39 file(RELATIVE_PATH relative_path "${CTEST_BINARY_DIRECTORY}" "${real_path}")
40 list(APPEND local_real_paths "${relative_path}")
41 message(DEBUG "${file} -> ${real_path} -> ${relative_path}")
43 set("${real_paths}" "${local_real_paths}" PARENT_SCOPE)
46 #------------------------------------------------------------------------------#
47 # Test 1: with standard arguments
48 #------------------------------------------------------------------------------#
50 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tbz)
51 ctest_coverage_collect_gcov(
53 SOURCE "${CTEST_SOURCE_DIRECTORY}"
54 BUILD "${CTEST_BINARY_DIRECTORY}"
55 GCOV_COMMAND "${CMAKE_COMMAND}"
56 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
57 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
59 execute_process(COMMAND
60 ${CMAKE_COMMAND} -E tar tf ${tar_file}
62 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
63 OUTPUT_STRIP_TRAILING_WHITESPACE
66 string(REPLACE "\n" ";" out "${out}")
67 to_relative_paths(out "${out}")
70 if("${out}" STREQUAL "${expected_out}")
71 message("PASSED with correct output: ${out}")
73 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
76 #------------------------------------------------------------------------------#
77 # Test 2: with optional argument: TARBALL_COMPRESSION "GZIP"
78 #------------------------------------------------------------------------------#
80 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tgz)
81 ctest_coverage_collect_gcov(
83 TARBALL_COMPRESSION "GZIP"
84 SOURCE "${CTEST_SOURCE_DIRECTORY}"
85 BUILD "${CTEST_BINARY_DIRECTORY}"
86 GCOV_COMMAND "${CMAKE_COMMAND}"
87 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
88 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
90 execute_process(COMMAND
91 ${CMAKE_COMMAND} -E tar tf ${tar_file}
93 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
94 OUTPUT_STRIP_TRAILING_WHITESPACE
97 string(REPLACE "\n" ";" out "${out}")
98 to_relative_paths(out "${out}")
101 if("${out}" STREQUAL "${expected_out}")
102 message("PASSED with correct output: ${out}")
104 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
107 #------------------------------------------------------------------------------#
108 # Test 3: with optional argument: TARBALL_COMPRESSION "FROM_EXT"
109 #------------------------------------------------------------------------------#
111 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.txz)
112 ctest_coverage_collect_gcov(
113 TARBALL "${tar_file}"
114 TARBALL_COMPRESSION "FROM_EXT"
115 SOURCE "${CTEST_SOURCE_DIRECTORY}"
116 BUILD "${CTEST_BINARY_DIRECTORY}"
117 GCOV_COMMAND "${CMAKE_COMMAND}"
118 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
119 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
121 execute_process(COMMAND
122 ${CMAKE_COMMAND} -E tar tf ${tar_file}
124 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
125 OUTPUT_STRIP_TRAILING_WHITESPACE
128 string(REPLACE "\n" ";" out "${out}")
129 to_relative_paths(out "${out}")
132 if("${out}" STREQUAL "${expected_out}")
133 message("PASSED with correct output: ${out}")
135 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
138 #------------------------------------------------------------------------------#
139 # Test 4: with optional argument: TARBALL_COMPRESSION "FALSE"
140 #------------------------------------------------------------------------------#
142 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tar)
143 ctest_coverage_collect_gcov(
144 TARBALL "${tar_file}"
145 TARBALL_COMPRESSION "FALSE"
146 SOURCE "${CTEST_SOURCE_DIRECTORY}"
147 BUILD "${CTEST_BINARY_DIRECTORY}"
148 GCOV_COMMAND "${CMAKE_COMMAND}"
149 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
150 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
152 execute_process(COMMAND
153 ${CMAKE_COMMAND} -E tar tf ${tar_file}
155 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
156 OUTPUT_STRIP_TRAILING_WHITESPACE
159 string(REPLACE "\n" ";" out "${out}")
160 to_relative_paths(out "${out}")
163 if("${out}" STREQUAL "${expected_out}")
164 message("PASSED with correct output: ${out}")
166 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
169 #------------------------------------------------------------------------------#
170 # Test 5: with optional argument: TARBALL_COMPRESSION "ZSTD"
171 #------------------------------------------------------------------------------#
173 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.zstd)
174 ctest_coverage_collect_gcov(
175 TARBALL "${tar_file}"
176 TARBALL_COMPRESSION "ZSTD"
177 SOURCE "${CTEST_SOURCE_DIRECTORY}"
178 BUILD "${CTEST_BINARY_DIRECTORY}"
179 GCOV_COMMAND "${CMAKE_COMMAND}"
180 GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
181 file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
183 execute_process(COMMAND
184 ${CMAKE_COMMAND} -E tar tf ${tar_file}
186 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
187 OUTPUT_STRIP_TRAILING_WHITESPACE
190 string(REPLACE "\n" ";" out "${out}")
191 to_relative_paths(out "${out}")
194 if("${out}" STREQUAL "${expected_out}")
195 message("PASSED with correct output: ${out}")
197 message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")