[Cmake-commits] CMake branch, next, updated. v3.5.1-845-g4f81542

Brad King brad.king at kitware.com
Thu Apr 7 08:54:43 EDT 2016


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  4f815423d17a2df096b48166ca407c8191d9ddd1 (commit)
       via  8ea1b0df58a65092a8c82cb5491f6d0af08ba8e7 (commit)
       via  425d76468564b6b4d2593c8775f5ce6d763f052d (commit)
      from  5e90e55e77afae770fd0149302c4bb7f3b2b7eab (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 -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4f815423d17a2df096b48166ca407c8191d9ddd1
commit 4f815423d17a2df096b48166ca407c8191d9ddd1
Merge: 5e90e55 8ea1b0d
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Apr 7 08:54:41 2016 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Apr 7 08:54:41 2016 -0400

    Merge topic 'branch_coverage_glob' into next
    
    8ea1b0df CTestCoverageCollectGCOV: Improve documentation
    425d7646 CTestCoverageCollectGCOV: Honor CTEST_EXTRA_COVERAGE_GLOB


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8ea1b0df58a65092a8c82cb5491f6d0af08ba8e7
commit 8ea1b0df58a65092a8c82cb5491f6d0af08ba8e7
Author:     Zack Galbreath <zack.galbreath at kitware.com>
AuthorDate: Thu Mar 31 14:17:03 2016 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Apr 7 08:53:30 2016 -0400

    CTestCoverageCollectGCOV: Improve documentation
    
    Clean up prose and mention support for CTEST_EXTRA_COVERAGE_GLOB.

diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake
index 3b74631..7df9666 100644
--- a/Modules/CTestCoverageCollectGCOV.cmake
+++ b/Modules/CTestCoverageCollectGCOV.cmake
@@ -2,14 +2,19 @@
 # CTestCoverageCollectGCOV
 # ------------------------
 #
-# This module provides the function ``ctest_coverage_collect_gcov``.
-# The function will run gcov on the .gcda files in a binary tree and then
-# package all of the .gcov files into a tar file with a data.json that
-# contains the source and build directories for CDash to use in parsing
-# the coverage data. In addtion the Labels.json files for targets that
-# have coverage information are also put in the tar file for CDash to
-# asign the correct labels. This file can be sent to a CDash server for
-# display with the
+# This module provides the ``ctest_coverage_collect_gcov`` function.
+#
+# This function runs gcov on all .gcda files found in the binary tree
+# and packages the resulting .gcov files into a tar file.
+# This tarball also contains the following:
+#
+# * *data.json* defines the source and build directories for use by CDash.
+# * *Labels.json* indicates any :prop_sf:`LABELS` that have been set on the
+#   source files.
+# * The *uncovered* directory holds any uncovered files found by
+#   :variable:`CTEST_EXTRA_COVERAGE_GLOB`.
+#
+# After generating this tar file, it can be sent to CDash for display with the
 # :command:`ctest_submit(CDASH_UPLOAD)` command.
 #
 # .. command:: cdash_coverage_collect_gcov

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=425d76468564b6b4d2593c8775f5ce6d763f052d
commit 425d76468564b6b4d2593c8775f5ce6d763f052d
Author:     Zack Galbreath <zack.galbreath at kitware.com>
AuthorDate: Wed Mar 30 10:31:25 2016 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Apr 7 08:53:30 2016 -0400

    CTestCoverageCollectGCOV: Honor CTEST_EXTRA_COVERAGE_GLOB
    
    Teach CTestCoverageCollectGCOV to honor the
    CTEST_EXTRA_COVERAGE_GLOB variable.  When this variable is set,
    this module will glob for matching source files that were not
    covered and include them in the resulting tar file.

diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake
index f31e432..3b74631 100644
--- a/Modules/CTestCoverageCollectGCOV.cmake
+++ b/Modules/CTestCoverageCollectGCOV.cmake
@@ -172,6 +172,21 @@ function(ctest_coverage_collect_gcov)
   set(unfiltered_gcov_files)
   file(GLOB_RECURSE unfiltered_gcov_files RELATIVE ${binary_dir} "${coverage_dir}/*.gcov")
 
+  # if CTEST_EXTRA_COVERAGE_GLOB was specified we search for files
+  # that might be uncovered
+  if (DEFINED CTEST_EXTRA_COVERAGE_GLOB)
+    set(uncovered_files)
+    foreach(search_entry IN LISTS CTEST_EXTRA_COVERAGE_GLOB)
+      if(NOT GCOV_QUIET)
+        message("Add coverage glob: ${search_entry}")
+      endif()
+      file(GLOB_RECURSE matching_files "${source_dir}/${search_entry}")
+      if (matching_files)
+        list(APPEND uncovered_files "${matching_files}")
+      endif()
+    endforeach()
+  endif()
+
   set(gcov_files)
   foreach(gcov_file ${unfiltered_gcov_files})
     file(STRINGS ${binary_dir}/${gcov_file} first_line LIMIT_COUNT 1 ENCODING UTF-8)
@@ -195,20 +210,62 @@ function(ctest_coverage_collect_gcov)
       endif()
     endforeach()
 
+    get_filename_component(resolved_source_file "${source_file}" ABSOLUTE)
+    foreach(uncovered_file IN LISTS uncovered_files)
+      get_filename_component(resolved_uncovered_file "${uncovered_file}" ABSOLUTE)
+      if (resolved_uncovered_file STREQUAL resolved_source_file)
+        list(REMOVE_ITEM uncovered_files "${uncovered_file}")
+      endif()
+    endforeach()
+
     if(NOT is_excluded)
       list(APPEND gcov_files ${gcov_file})
     endif()
   endforeach()
 
+  foreach (uncovered_file ${uncovered_files})
+    # Check if this uncovered file should be excluded.
+    set(is_excluded false)
+    foreach(exclude_entry IN LISTS CTEST_CUSTOM_COVERAGE_EXCLUDE)
+      if(uncovered_file MATCHES "${exclude_entry}")
+        set(is_excluded true)
+        if(NOT GCOV_QUIET)
+          message("Excluding coverage for: ${uncovered_file} which matches ${exclude_entry}")
+        endif()
+        break()
+      endif()
+    endforeach()
+    if(is_excluded)
+      continue()
+    endif()
+
+    # Copy from source to binary dir, preserving any intermediate subdirectories.
+    get_filename_component(filename "${uncovered_file}" NAME)
+    get_filename_component(relative_path "${uncovered_file}" DIRECTORY)
+    string(REPLACE "${source_dir}" "" relative_path "${relative_path}")
+    if (relative_path)
+      # Strip leading slash.
+      string(SUBSTRING "${relative_path}" 1 -1 relative_path)
+    endif()
+    file(COPY ${uncovered_file} DESTINATION ${binary_dir}/uncovered/${relative_path})
+    if(relative_path)
+      list(APPEND uncovered_files_for_tar uncovered/${relative_path}/${filename})
+    else()
+      list(APPEND uncovered_files_for_tar uncovered/${filename})
+    endif()
+  endforeach()
+
   # 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}")
+  string(REPLACE ";" "\n" uncovered_files_for_tar "${uncovered_files_for_tar}")
   file(WRITE "${coverage_dir}/coverage_file_list.txt"
     "${gcov_files}
 ${coverage_dir}/data.json
 ${label_files}
+${uncovered_files_for_tar}
 ")
 
   if (GCOV_QUIET)
diff --git a/Tests/CTestCoverageCollectGCOV/TestProject/extra/uncovered1.cpp b/Tests/CTestCoverageCollectGCOV/TestProject/extra/uncovered1.cpp
new file mode 100644
index 0000000..e69de29
diff --git a/Tests/CTestCoverageCollectGCOV/TestProject/uncovered2.cpp b/Tests/CTestCoverageCollectGCOV/TestProject/uncovered2.cpp
new file mode 100644
index 0000000..e69de29
diff --git a/Tests/CTestCoverageCollectGCOV/test.cmake.in b/Tests/CTestCoverageCollectGCOV/test.cmake.in
index b2e6d6d..d48ef61 100644
--- a/Tests/CTestCoverageCollectGCOV/test.cmake.in
+++ b/Tests/CTestCoverageCollectGCOV/test.cmake.in
@@ -15,7 +15,9 @@ list(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE
   "/foo/something"
   "/3rdparty/"
   "/bar/somethingelse"
+  "/CMakeFiles/"
 )
+list(APPEND CTEST_EXTRA_COVERAGE_GLOB "*.cpp")
 
 include(CTestCoverageCollectGCOV)
 set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tar)
@@ -41,6 +43,8 @@ set(expected_out
   Testing/CoverageInfo/data.json
   Testing/CoverageInfo/extra.cpp.gcov
   Testing/CoverageInfo/main.cpp.gcov
+  uncovered/extra/uncovered1.cpp
+  uncovered/uncovered2.cpp
 )
 
 if("${out}" STREQUAL "${expected_out}")

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

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list