Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Tests / CTestCoverageCollectGCOV / test.cmake.in
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@")
5
6 ctest_start(Experimental)
7 ctest_configure()
8 ctest_build()
9 ctest_test()
10
11 #------------------------------------------------------------------------------#
12 # Common setup for all tests.
13 #------------------------------------------------------------------------------#
14
15 list(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE
16   "/foo/something"
17   "/3rdparty/"
18   "/bar/somethingelse"
19   "/CMakeFiles/"
20 )
21 list(APPEND CTEST_EXTRA_COVERAGE_GLOB "*.cpp")
22 include(CTestCoverageCollectGCOV)
23 set(expected_out
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
30 )
31
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}")
43   endforeach()
44   set("${real_paths}" "${local_real_paths}" PARENT_SCOPE)
45 endfunction()
46
47 #------------------------------------------------------------------------------#
48 # Test 1: with standard arguments
49 #------------------------------------------------------------------------------#
50
51 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tbz)
52 ctest_coverage_collect_gcov(
53   TARBALL "${tar_file}"
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")
59
60 execute_process(COMMAND
61   ${CMAKE_COMMAND} -E tar tf ${tar_file}
62   OUTPUT_VARIABLE out
63   WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
64   OUTPUT_STRIP_TRAILING_WHITESPACE
65 )
66
67 string(REPLACE "\n" ";" out "${out}")
68 to_relative_paths(out "${out}")
69 list(SORT out)
70
71 if("${out}" STREQUAL "${expected_out}")
72   message("PASSED with correct output: ${out}")
73 else()
74   message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
75 endif()
76
77 #------------------------------------------------------------------------------#
78 # Test 2: with optional argument: TARBALL_COMPRESSION "GZIP"
79 #------------------------------------------------------------------------------#
80
81 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tgz)
82 ctest_coverage_collect_gcov(
83   TARBALL "${tar_file}"
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")
90
91 execute_process(COMMAND
92   ${CMAKE_COMMAND} -E tar tf ${tar_file}
93   OUTPUT_VARIABLE out
94   WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
95   OUTPUT_STRIP_TRAILING_WHITESPACE
96 )
97
98 string(REPLACE "\n" ";" out "${out}")
99 to_relative_paths(out "${out}")
100 list(SORT out)
101
102 if("${out}" STREQUAL "${expected_out}")
103   message("PASSED with correct output: ${out}")
104 else()
105   message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
106 endif()
107
108 #------------------------------------------------------------------------------#
109 # Test 3: with optional argument: TARBALL_COMPRESSION "FROM_EXT"
110 #------------------------------------------------------------------------------#
111
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")
121
122 execute_process(COMMAND
123   ${CMAKE_COMMAND} -E tar tf ${tar_file}
124   OUTPUT_VARIABLE out
125   WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
126   OUTPUT_STRIP_TRAILING_WHITESPACE
127 )
128
129 string(REPLACE "\n" ";" out "${out}")
130 to_relative_paths(out "${out}")
131 list(SORT out)
132
133 if("${out}" STREQUAL "${expected_out}")
134   message("PASSED with correct output: ${out}")
135 else()
136   message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
137 endif()
138
139 #------------------------------------------------------------------------------#
140 # Test 4: with optional argument: TARBALL_COMPRESSION "FALSE"
141 #------------------------------------------------------------------------------#
142
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")
152
153 execute_process(COMMAND
154   ${CMAKE_COMMAND} -E tar tf ${tar_file}
155   OUTPUT_VARIABLE out
156   WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
157   OUTPUT_STRIP_TRAILING_WHITESPACE
158 )
159
160 string(REPLACE "\n" ";" out "${out}")
161 to_relative_paths(out "${out}")
162 list(SORT out)
163
164 if("${out}" STREQUAL "${expected_out}")
165   message("PASSED with correct output: ${out}")
166 else()
167   message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
168 endif()
169
170 #------------------------------------------------------------------------------#
171 # Test 5: with optional argument: TARBALL_COMPRESSION "ZSTD"
172 #------------------------------------------------------------------------------#
173
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")
183
184 execute_process(COMMAND
185   ${CMAKE_COMMAND} -E tar tf ${tar_file}
186   OUTPUT_VARIABLE out
187   WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
188   OUTPUT_STRIP_TRAILING_WHITESPACE
189 )
190
191 string(REPLACE "\n" ";" out "${out}")
192 to_relative_paths(out "${out}")
193 list(SORT out)
194
195 if("${out}" STREQUAL "${expected_out}")
196   message("PASSED with correct output: ${out}")
197 else()
198   message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
199 endif()