[Cmake-commits] CMake branch, next, updated. v3.1.1-2524-g569a549
Brad King
brad.king at kitware.com
Fri Jan 30 10:47:58 EST 2015
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via 569a549c79b6d8bd349727ad274881f15cdef7c2 (commit)
via 95935743d9fbad24925ca9f96b5090786caa3cde (commit)
via e2daec33c651b05933c1b2af000349a9c89e982c (commit)
from f52c5a45dd025d8c30c7505e36b03226e3e0a43a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=569a549c79b6d8bd349727ad274881f15cdef7c2
commit 569a549c79b6d8bd349727ad274881f15cdef7c2
Merge: f52c5a4 9593574
Author: Brad King <brad.king at kitware.com>
AuthorDate: Fri Jan 30 10:47:58 2015 -0500
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Jan 30 10:47:58 2015 -0500
Merge topic 'clean_up_cdash_upload_files' into next
95935743 CTestCoverageCollectGCOV: Add test case
e2daec33 CTestCoverageCollectGCOV: Fix handling of large file counts
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=95935743d9fbad24925ca9f96b5090786caa3cde
commit 95935743d9fbad24925ca9f96b5090786caa3cde
Author: Bill Hoffman <bill.hoffman at kitware.com>
AuthorDate: Wed Jan 28 17:08:41 2015 -0500
Commit: Brad King <brad.king at kitware.com>
CommitDate: Fri Jan 30 10:47:27 2015 -0500
CTestCoverageCollectGCOV: Add test case
diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake
index f8058cd..edb1466 100644
--- a/Modules/CTestCoverageCollectGCOV.cmake
+++ b/Modules/CTestCoverageCollectGCOV.cmake
@@ -39,6 +39,13 @@
# ``GCOV_COMMAND <gcov_command>``
# Specify the full path to the ``gcov`` command on the machine.
# Default is the value of :variable:`CTEST_COVERAGE_COMMAND`.
+#
+# ``GCOV_EXTRA_OPTIONS <extra options>``
+# Specify extra options to be passed to gcov. By default
+# gcov is run like this gcov -b -o ${gcov_dir} ${gcda_file_path}
+# If GCOV_EXTRA_OPTIONS are specified, it will be run like this:
+# ``gcov`` ${GCOV_EXTRA_OPTIONS} ${gcov_dir} ${gcda_file_path}
+
#=============================================================================
# Copyright 2014-2015 Kitware, Inc.
@@ -56,7 +63,7 @@ include(CMakeParseArguments)
function(ctest_coverage_collect_gcov)
set(options "")
set(oneValueArgs TARBALL SOURCE BUILD GCOV_COMMAND)
- set(multiValueArgs "")
+ set(multiValueArgs GCOV_EXTRA_OPTIONS)
cmake_parse_arguments(GCOV "${options}" "${oneValueArgs}"
"${multiValueArgs}" "" ${ARGN} )
if(NOT DEFINED GCOV_TARBALL)
@@ -86,7 +93,7 @@ function(ctest_coverage_collect_gcov)
# this will be faster and only look where the files will be
file(STRINGS "${binary_dir}/CMakeFiles/TargetDirectories.txt" target_dirs)
foreach(target_dir ${target_dirs})
- file(GLOB_RECURSE gfiles RELATIVE ${binary_dir} "${target_dir}/*.gcda")
+ file(GLOB_RECURSE gfiles RELATIVE "${binary_dir}" ${target_dir}/*.gcda)
list(LENGTH gfiles len)
# if we have gcda files then also grab the labels file for that target
if(${len} GREATER 0)
@@ -113,11 +120,18 @@ function(ctest_coverage_collect_gcov)
get_filename_component(gcov_dir ${gcda_file} DIRECTORY)
# run gcov, this will produce the .gcov file in the current
# working directory
+ if(NOT DEFINED GCOV_GCOV_EXTRA_OPTIONS)
+ set(GCOV_GCOV_EXTRA_OPTIONS -b -o)
+ endif()
execute_process(COMMAND
- ${gcov_command} -b -o ${gcov_dir} ${gcda_file}
+ ${gcov_command} ${GCOV_GCOV_EXTRA_OPTIONS} ${gcov_dir} ${gcda_file}
OUTPUT_VARIABLE out
+ RESULT_VARIABLE res
WORKING_DIRECTORY ${coverage_dir})
endforeach()
+ if(NOT "${res}" EQUAL 0)
+ message(STATUS "Error running gcov: ${res} ${out}")
+ endif()
# create json file with project information
file(WRITE ${coverage_dir}/data.json
"{
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 3aecd9b..1a79854 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..2560542
--- /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_EXTRA_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()
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e2daec33c651b05933c1b2af000349a9c89e982c
commit e2daec33c651b05933c1b2af000349a9c89e982c
Author: Bill Hoffman <bill.hoffman at kitware.com>
AuthorDate: Wed Jan 28 17:08:41 2015 -0500
Commit: Brad King <brad.king at kitware.com>
CommitDate: Fri Jan 30 10:46:42 2015 -0500
CTestCoverageCollectGCOV: Fix handling of large file counts
Use the --files-from option to tar to handle lots of files.
diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake
index f6616e0..f8058cd 100644
--- a/Modules/CTestCoverageCollectGCOV.cmake
+++ b/Modules/CTestCoverageCollectGCOV.cmake
@@ -130,9 +130,16 @@ function(ctest_coverage_collect_gcov)
# tar up the coverage info with the same date so that the md5
# sum will be the same for the tar file independent of file time
# stamps
+ string(REPLACE ";" "\n" gcov_files "${gcov_files}")
+ string(REPLACE ";" "\n" label_files "${label_files}")
+ file(WRITE "${coverage_dir}/coverage_file_list.txt"
+ "${gcov_files}
+${coverage_dir}/data.json
+${label_files}
+")
execute_process(COMMAND
${CMAKE_COMMAND} -E tar cvfj ${GCOV_TARBALL}
- "--mtime=1970-01-01 0:0:0 UTC" ${gcov_files}
- ${coverage_dir}/data.json ${label_files}
+ "--mtime=1970-01-01 0:0:0 UTC"
+ --files-from=${coverage_dir}/coverage_file_list.txt
WORKING_DIRECTORY ${binary_dir})
endfunction()
-----------------------------------------------------------------------
Summary of changes:
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list