| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- cmake_minimum_required(VERSION 3.10)
- 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_start(Experimental)
- ctest_configure()
- ctest_build()
- ctest_test()
- #------------------------------------------------------------------------------#
- # Common setup for all tests.
- #------------------------------------------------------------------------------#
- list(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE
- "/foo/something"
- "/3rdparty/"
- "/bar/somethingelse"
- "/CMakeFiles/"
- )
- list(APPEND CTEST_EXTRA_COVERAGE_GLOB "*.cpp")
- include(CTestCoverageCollectGCOV)
- 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
- )
- # A symbolic link in the path can cause tar to put an equivalent, but not
- # minimal file name to some files in the tar file. Convert paths to absolute
- # then back to relative to get them in canonical form (or maybe this is a bug
- # in how the tarball is generated?)
- function(to_relative_paths real_paths paths)
- file(REAL_PATH "${CTEST_BINARY_DIRECTORY}" base)
- foreach(file ${paths})
- file(REAL_PATH "${file}" real_path BASE_DIRECTORY "${base}")
- file(RELATIVE_PATH relative_path "${base}" "${real_path}")
- list(APPEND local_real_paths "${relative_path}")
- message(DEBUG "${file} -> ${real_path} -> ${relative_path}")
- endforeach()
- set("${real_paths}" "${local_real_paths}" PARENT_SCOPE)
- endfunction()
- #------------------------------------------------------------------------------#
- # Test 1: with standard arguments
- #------------------------------------------------------------------------------#
- set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tbz)
- 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")
- file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
- 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}")
- to_relative_paths(out "${out}")
- list(SORT out)
- if("${out}" STREQUAL "${expected_out}")
- message("PASSED with correct output: ${out}")
- else()
- message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
- endif()
- #------------------------------------------------------------------------------#
- # Test 2: with optional argument: TARBALL_COMPRESSION "GZIP"
- #------------------------------------------------------------------------------#
- set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tgz)
- ctest_coverage_collect_gcov(
- TARBALL "${tar_file}"
- TARBALL_COMPRESSION "GZIP"
- SOURCE "${CTEST_SOURCE_DIRECTORY}"
- BUILD "${CTEST_BINARY_DIRECTORY}"
- GCOV_COMMAND "${CMAKE_COMMAND}"
- GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
- file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
- 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}")
- to_relative_paths(out "${out}")
- list(SORT out)
- if("${out}" STREQUAL "${expected_out}")
- message("PASSED with correct output: ${out}")
- else()
- message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
- endif()
- #------------------------------------------------------------------------------#
- # Test 3: with optional argument: TARBALL_COMPRESSION "FROM_EXT"
- #------------------------------------------------------------------------------#
- set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.txz)
- ctest_coverage_collect_gcov(
- TARBALL "${tar_file}"
- TARBALL_COMPRESSION "FROM_EXT"
- SOURCE "${CTEST_SOURCE_DIRECTORY}"
- BUILD "${CTEST_BINARY_DIRECTORY}"
- GCOV_COMMAND "${CMAKE_COMMAND}"
- GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
- file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
- 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}")
- to_relative_paths(out "${out}")
- list(SORT out)
- if("${out}" STREQUAL "${expected_out}")
- message("PASSED with correct output: ${out}")
- else()
- message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
- endif()
- #------------------------------------------------------------------------------#
- # Test 4: with optional argument: TARBALL_COMPRESSION "FALSE"
- #------------------------------------------------------------------------------#
- set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tar)
- ctest_coverage_collect_gcov(
- TARBALL "${tar_file}"
- TARBALL_COMPRESSION "FALSE"
- SOURCE "${CTEST_SOURCE_DIRECTORY}"
- BUILD "${CTEST_BINARY_DIRECTORY}"
- GCOV_COMMAND "${CMAKE_COMMAND}"
- GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
- file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
- 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}")
- to_relative_paths(out "${out}")
- list(SORT out)
- if("${out}" STREQUAL "${expected_out}")
- message("PASSED with correct output: ${out}")
- else()
- message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
- endif()
- #------------------------------------------------------------------------------#
- # Test 5: with optional argument: TARBALL_COMPRESSION "ZSTD"
- #------------------------------------------------------------------------------#
- set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.zstd)
- ctest_coverage_collect_gcov(
- TARBALL "${tar_file}"
- TARBALL_COMPRESSION "ZSTD"
- SOURCE "${CTEST_SOURCE_DIRECTORY}"
- BUILD "${CTEST_BINARY_DIRECTORY}"
- GCOV_COMMAND "${CMAKE_COMMAND}"
- GCOV_OPTIONS -P "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/fakegcov.cmake")
- file(REMOVE_RECURSE "${CTEST_BINARY_DIRECTORY}/uncovered")
- 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}")
- to_relative_paths(out "${out}")
- list(SORT out)
- if("${out}" STREQUAL "${expected_out}")
- message("PASSED with correct output: ${out}")
- else()
- message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
- endif()
|