diff options
author | Brad King <brad.king@kitware.com> | 2015-02-04 17:30:10 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2015-02-04 17:30:10 (GMT) |
commit | 8f820043684fa8a11289061297828bccce7ba080 (patch) | |
tree | 9d63bfb8a223a6bbc8796bceaa0f614619f0d234 /Tests | |
parent | 5f3778571770ccbceca22aa18ad06f1779a3ca5a (diff) | |
parent | 809a5a5e2391484966614f11100de956619adda6 (diff) | |
download | CMake-8f820043684fa8a11289061297828bccce7ba080.zip CMake-8f820043684fa8a11289061297828bccce7ba080.tar.gz CMake-8f820043684fa8a11289061297828bccce7ba080.tar.bz2 |
Merge topic 'CTestCoverageCollectGCOV-refinements'
809a5a5e Help: Add notes for topic 'CTestCoverageCollectGCOV-refinements'
03c0812c CTestCoverageCollectGCOV: Fix handling of international characters
8caa4e72 CTestCoverageCollectGCOV: Add test case
5c828cc8 CTestCoverageCollectGCOV: Allow custom flags to gcov
30cb628e CTestCoverageCollectGCOV: Fix handling of large file counts
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/CMakeLists.txt | 12 | ||||
-rw-r--r-- | Tests/CTestCoverageCollectGCOV/fakegcov.cmake | 8 | ||||
-rw-r--r-- | Tests/CTestCoverageCollectGCOV/test.cmake.in | 39 |
3 files changed, 59 insertions, 0 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 035f161..7e7aa2e 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2269,6 +2269,18 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release PASS_REGULAR_EXPRESSION "Upload\\.xml") configure_file( + "${CMake_SOURCE_DIR}/Tests/CTestCoverageCollectGCOV/test.cmake.in" + "${CMake_BINARY_DIR}/Tests/CTestCoverageCollectGCOV/test.cmake" + @ONLY ESCAPE_QUOTES) + add_test(CTestCoverageCollectGCOV ${CMAKE_CTEST_COMMAND} + -S "${CMake_BINARY_DIR}/Tests/CTestCoverageCollectGCOV/test.cmake" -VV + --output-log "${CMake_BINARY_DIR}/Tests/CTestCoverageCollectGCOV/testOut.log" + ) + set_tests_properties(CTestCoverageCollectGCOV PROPERTIES + PASS_REGULAR_EXPRESSION + "PASSED with correct output.*Testing/CoverageInfo/echoargs.gcov") + + configure_file( "${CMake_SOURCE_DIR}/Tests/CTestTestEmptyBinaryDirectory/test.cmake.in" "${CMake_BINARY_DIR}/Tests/CTestTestEmptyBinaryDirectory/test.cmake" @ONLY ESCAPE_QUOTES) diff --git a/Tests/CTestCoverageCollectGCOV/fakegcov.cmake b/Tests/CTestCoverageCollectGCOV/fakegcov.cmake new file mode 100644 index 0000000..e704f14 --- /dev/null +++ b/Tests/CTestCoverageCollectGCOV/fakegcov.cmake @@ -0,0 +1,8 @@ +foreach(I RANGE 0 ${CMAKE_ARGC}) + if("${CMAKE_ARGV${I}}" MATCHES ".*\\.gcda") + set(gcda_file "${CMAKE_ARGV${I}}") + endif() +endforeach() +get_filename_component(gcda_file ${gcda_file} NAME_WE) +file(WRITE "${CMAKE_SOURCE_DIR}/${gcda_file}.gcov" +"fake gcov file") diff --git a/Tests/CTestCoverageCollectGCOV/test.cmake.in b/Tests/CTestCoverageCollectGCOV/test.cmake.in new file mode 100644 index 0000000..4bdcb10 --- /dev/null +++ b/Tests/CTestCoverageCollectGCOV/test.cmake.in @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 2.8.12) +set(CTEST_PROJECT_NAME "SmallAndFast") +set(CTEST_SOURCE_DIRECTORY "@CMake_SOURCE_DIR@/Tests/CTestTest/SmallAndFast") +set(CTEST_BINARY_DIRECTORY "@CMake_BINARY_DIR@/Tests/CTestCoverageCollectGCOV") +set(CTEST_CMAKE_GENERATOR "@CMAKE_GENERATOR@") +ctest_start(Experimental) +ctest_configure() +ctest_build() +ctest_test() + +file(WRITE ${CTEST_BINARY_DIRECTORY}/CMakeFiles/echoargs.dir/echoargs.gcda +"dummy +") + +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 + ${CMAKE_COMMAND} -E tar tf ${tar_file} + OUTPUT_VARIABLE out + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) + +set(expected_out +"Testing/CoverageInfo/echoargs.gcov +Testing/CoverageInfo/data.json +CMakeFiles/echoargs.dir/Labels.json +") + +if("${out}" STREQUAL "${expected_out}") + message("PASSED with correct output: ${out}") +else() + message(FATAL_ERROR "FAILED: expected:\n${expected_out}\nGot:\n${out}") +endif() |