summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2013-08-16 15:19:08 (GMT)
committerBrad King <brad.king@kitware.com>2013-08-16 20:16:27 (GMT)
commitf169f48f93b12a9b2bce9e8c23fc66e7e3ee8c9e (patch)
treee2b500dedcc0d8a69c4b9262e0a2d5bd07e64d47
parent8da09f6ee1a59cbef6327d2a88ab8ba5f8b29b1a (diff)
downloadCMake-f169f48f93b12a9b2bce9e8c23fc66e7e3ee8c9e.zip
CMake-f169f48f93b12a9b2bce9e8c23fc66e7e3ee8c9e.tar.gz
CMake-f169f48f93b12a9b2bce9e8c23fc66e7e3ee8c9e.tar.bz2
CTestTestMemcheck: Refactor output expectation regex generation
Refactor generation of PASS_REGULAR_EXPRESSION for tests CTestTestMemcheckDummyPurify CTestTestMemcheckDummyValgrind CTestTestMemcheckDummyValgrindPrePost CTestTestMemcheckDummyValgrindIgnoreMemcheck Avoid duplicating the normal ctest output matching expression. Use literal newlines instead of "\n" to improve readability. Integrate matching of guard-malloc lines at the end of the output with expressions matching tool output like lines for BullseyeCoverage.
-rw-r--r--Tests/CTestTestMemcheck/CMakeLists.txt36
1 files changed, 26 insertions, 10 deletions
diff --git a/Tests/CTestTestMemcheck/CMakeLists.txt b/Tests/CTestTestMemcheck/CMakeLists.txt
index 86d7385..8a61710 100644
--- a/Tests/CTestTestMemcheck/CMakeLists.txt
+++ b/Tests/CTestTestMemcheck/CMakeLists.txt
@@ -35,14 +35,30 @@ target_link_libraries(memcheck_fail CMakeLib)
# same filenames.
add_subdirectory(NoLogDummyChecker)
-if (APPLE)
- # filter out additional messages by Guard Malloc integrated in Xcode
- set(GUARD_MALLOC_MSG "(ctest\([0-9]+\) malloc: [^\n]*\n)*")
- set(NORMAL_CTEST_OUTPUT "\n1/1 MemCheck #1: RunCMake \\.+ Passed +[0-9]+\\.[0-9]+ sec\n${GUARD_MALLOC_MSG}\n${GUARD_MALLOC_MSG}100% tests passed, 0 tests failed out of 1\n.*\n-- Processing memory checking output: \n${GUARD_MALLOC_MSG}Memory checking results:\n${GUARD_MALLOC_MSG}")
-else ()
- set(NORMAL_CTEST_OUTPUT "\n1/1 MemCheck #1: RunCMake \\.+ Passed +[0-9]+\\.[0-9]+ sec\n\n100% tests passed, 0 tests failed out of 1\n.*\n-- Processing memory checking output: \nMemory checking results:\n")
-endif ()
-set(BULLSEYE_MSG "(BullseyeCoverage[^\n]*\n)?")
+if(APPLE)
+ # filter out additional messages by Guard Malloc integrated in Xcode
+ set(guard_malloc_msg "ctest\([0-9]+\) malloc: ")
+ set(guard_malloc_lines "(${guard_malloc_msg}[^\n]*\n)*")
+ set(guard_malloc_output "${guard_malloc_msg}|")
+else()
+ set(guard_malloc_msg "")
+ set(guard_malloc_lines "")
+ set(guard_malloc_output "")
+endif()
+
+# When this entire test runs under coverage or memcheck tools
+# they may add output to the end, so match known cases:
+# - Bullseye adds a "BullseyeCoverage..." line.
+set(other_tool_output "((${guard_malloc_output}BullseyeCoverage)[^\n]*\n)*")
+
+string(REPLACE "\r\n" "\n" ctest_and_tool_outputs "
+1/1 MemCheck #1: RunCMake \\.+ Passed +[0-9]+\\.[0-9]+ sec
+${guard_malloc_lines}
+100% tests passed, 0 tests failed out of 1
+.*
+-- Processing memory checking output:( )
+${guard_malloc_lines}Memory checking results:
+${other_tool_output}")
function(gen_mc_test_internal NAME CHECKER)
set(SUBTEST_NAME "${NAME}")
@@ -146,7 +162,7 @@ set_tests_properties(CTestTestMemcheckDummyValgrind
CTestTestMemcheckDummyValgrindPrePost
CTestTestMemcheckDummyPurify
PROPERTIES
- PASS_REGULAR_EXPRESSION "${NORMAL_CTEST_OUTPUT}${BULLSEYE_MSG}$")
+ PASS_REGULAR_EXPRESSION "${ctest_and_tool_outputs}$")
foreach (_pp Pre Post)
string(TOLOWER ${_pp} _pp_lower)
@@ -157,7 +173,7 @@ endforeach ()
set_tests_properties(CTestTestMemcheckDummyValgrindIgnoreMemcheck
PROPERTIES
- PASS_REGULAR_EXPRESSION "\n2/2 Test #2: RunCMakeAgain .*${NORMAL_CTEST_OUTPUT}${BULLSEYE_MSG}$")
+ PASS_REGULAR_EXPRESSION "\n2/2 Test #2: RunCMakeAgain .*${ctest_and_tool_outputs}$")
set_tests_properties(CTestTestMemcheckDummyBC PROPERTIES
PASS_REGULAR_EXPRESSION "\n1/1 MemCheck #1: RunCMake \\.+ Passed +[0-9]+.[0-9]+ sec\n\n100% tests passed, 0 tests failed out of 1\n(.*\n)?Error parsing XML in stream at line 1: no element found\n")