test.cmake.in 1.49 KB
Newer Older
1
cmake_minimum_required(VERSION 2.8.12)
2 3
set(CTEST_SOURCE_DIRECTORY "@CMake_SOURCE_DIR@/Tests/CTestCoverageCollectGCOV/TestProject")
set(CTEST_BINARY_DIRECTORY "@CMake_BINARY_DIR@/Tests/CTestCoverageCollectGCOV/TestProject")
4
set(CTEST_CMAKE_GENERATOR "@CMAKE_GENERATOR@")
5 6 7

ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})

8 9 10 11 12
ctest_start(Experimental)
ctest_configure()
ctest_build()
ctest_test()

13
list(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE
14 15 16
  "/foo/something"
  "/3rdparty/"
  "/bar/somethingelse"
17
  "/CMakeFiles/"
18
)
19
list(APPEND CTEST_EXTRA_COVERAGE_GLOB "*.cpp")
20 21 22 23 24 25 26 27 28 29 30

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
31 32 33 34 35 36 37 38
  ${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)
39 40

set(expected_out
41 42 43 44
  CMakeFiles/myexecutable.dir/Labels.json
  Testing/CoverageInfo/data.json
  Testing/CoverageInfo/extra.cpp.gcov
  Testing/CoverageInfo/main.cpp.gcov
45 46
  uncovered/extra/uncovered1.cpp
  uncovered/uncovered2.cpp
47
)
48 49 50 51 52 53

if("${out}" STREQUAL "${expected_out}")
  message("PASSED with correct output: ${out}")
else()
  message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}")
endif()