[Cmake-commits] CMake branch, next, updated. v3.1.1-2531-g143e6f7

Brad King brad.king at kitware.com
Fri Jan 30 12:53:27 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  143e6f73a66c7d942c428269c39b6b994d67aa3b (commit)
       via  4da6ab0834bac654df245e87ff832afafe8d29f2 (commit)
       via  59a2f4390a0866d719c9c5a03aba28089cfd6d37 (commit)
      from  e53a6242b570d8dbaeef136a5683f2138860f213 (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=143e6f73a66c7d942c428269c39b6b994d67aa3b
commit 143e6f73a66c7d942c428269c39b6b994d67aa3b
Merge: e53a624 4da6ab0
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Jan 30 12:53:27 2015 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Jan 30 12:53:27 2015 -0500

    Merge topic 'clean_up_cdash_upload_files' into next
    
    4da6ab08 CTestCoverageCollectGCOV: Add test case
    59a2f439 CTestCoverageCollectGCOV: Allow custom flags to gcov


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4da6ab0834bac654df245e87ff832afafe8d29f2
commit 4da6ab0834bac654df245e87ff832afafe8d29f2
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 12:51:12 2015 -0500

    CTestCoverageCollectGCOV: Add test case

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=59a2f4390a0866d719c9c5a03aba28089cfd6d37
commit 59a2f4390a0866d719c9c5a03aba28089cfd6d37
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 12:50:33 2015 -0500

    CTestCoverageCollectGCOV: Allow custom flags to gcov
    
    Add GCOV_EXTRA_OPTIONS option to allow specification of custom flags.
    In ctest_coverage gcov support, if you set CTEST_COVERAGE_EXTRA_FLAGS,
    they get put on the command line before the -o.  In this case we remove
    the -b and replace it with GCOV_EXTRA_OPTIONS.  All other arguments
    remain the same.

diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake
index f8058cd..037d3bc 100644
--- a/Modules/CTestCoverageCollectGCOV.cmake
+++ b/Modules/CTestCoverageCollectGCOV.cmake
@@ -19,6 +19,7 @@
 #     ctest_coverage_collect_gcov(TARBALL <tarfile>
 #       [SOURCE <source_dir>][BUILD <build_dir>]
 #       [GCOV_COMMAND <gcov_command>]
+#       [GCOV_EXTRA_OPTIONS <extra_options>...]
 #       )
 #
 #   Run gcov and package a tar file for CDash.  The options are:
@@ -39,6 +40,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 as ``gcov -b -o <gcov-dir> <file>.gcda``.
+#     If GCOV_EXTRA_OPTIONS is specified, gcov will be run as
+#     ``gcov <extra_options>... -o <gcov-dir> <file>.gcda``.
+
 
 #=============================================================================
 # Copyright 2014-2015 Kitware, Inc.
@@ -56,7 +64,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)
@@ -113,11 +121,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)
+    endif()
     execute_process(COMMAND
-      ${gcov_command} -b -o ${gcov_dir} ${gcda_file}
+      ${gcov_command} ${GCOV_GCOV_EXTRA_OPTIONS} -o ${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
     "{

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list