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.
This commit is contained in:
Brad King 2013-08-16 11:19:08 -04:00
parent 8da09f6ee1
commit f169f48f93
1 changed files with 26 additions and 10 deletions

View File

@ -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")