Fix leak and address sanitizer tests to be able to run with real tools.

When running CMake under Leak or Address Sanitizer tools, the fake reporting
would get picked up by the outer CMake and reported as leaks and address
failures on the CMake dashboard. This commit makes sure the test only
reports simulated errors when asked to.
This commit is contained in:
Bill Hoffman 2014-07-22 10:51:53 -04:00
parent 08bb09a944
commit f7d62cac79
3 changed files with 10 additions and 2 deletions

View File

@ -121,7 +121,7 @@ set(CTEST_EXTRA_CODE)
# add LeakSanitizer test # add LeakSanitizer test
set(CTEST_EXTRA_CODE set(CTEST_EXTRA_CODE
"set(CTEST_MEMORYCHECK_COMMAND_OPTIONS \"report_bugs=1 history_size=5 exitcode=55\") "set(CTEST_MEMORYCHECK_COMMAND_OPTIONS \"simulate_sanitizer=1 report_bugs=1 history_size=5 exitcode=55\")
") ")
set(CMAKELISTS_EXTRA_CODE set(CMAKELISTS_EXTRA_CODE
@ -136,7 +136,7 @@ set_tests_properties(CTestTestMemcheckDummyLeakSanitizer PROPERTIES
".*Memory checking results:.*Direct leak - 2.*Indirect leak - 1.*") ".*Memory checking results:.*Direct leak - 2.*Indirect leak - 1.*")
# add AddressSanitizer test # add AddressSanitizer test
set(CTEST_EXTRA_CODE set(CTEST_EXTRA_CODE
"set(CTEST_MEMORYCHECK_COMMAND_OPTIONS \"report_bugs=1 history_size=5 exitcode=55\") "set(CTEST_MEMORYCHECK_COMMAND_OPTIONS \"simulate_sanitizer=1 report_bugs=1 history_size=5 exitcode=55\")
") ")
set(CMAKELISTS_EXTRA_CODE set(CMAKELISTS_EXTRA_CODE

View File

@ -5,6 +5,10 @@ message("ASAN_OPTIONS = [$ENV{ASAN_OPTIONS}]")
string(REGEX REPLACE ".*log_path=\"([^\"]*)\".*" "\\1" LOG_FILE "$ENV{ASAN_OPTIONS}") string(REGEX REPLACE ".*log_path=\"([^\"]*)\".*" "\\1" LOG_FILE "$ENV{ASAN_OPTIONS}")
message("LOG_FILE=[${LOG_FILE}]") message("LOG_FILE=[${LOG_FILE}]")
# if we are not asked to simulate address sanitizer don't do it
if(NOT "$ENV{ASAN_OPTIONS}]" MATCHES "simulate_sanitizer.1")
return()
endif()
# clear the log file # clear the log file
file(REMOVE "${LOG_FILE}.2343") file(REMOVE "${LOG_FILE}.2343")

View File

@ -4,6 +4,10 @@
message("ASAN_OPTIONS = [$ENV{ASAN_OPTIONS}]") message("ASAN_OPTIONS = [$ENV{ASAN_OPTIONS}]")
string(REGEX REPLACE ".*log_path=\"([^\"]*)\".*" "\\1" LOG_FILE "$ENV{ASAN_OPTIONS}") string(REGEX REPLACE ".*log_path=\"([^\"]*)\".*" "\\1" LOG_FILE "$ENV{ASAN_OPTIONS}")
message("LOG_FILE=[${LOG_FILE}]") message("LOG_FILE=[${LOG_FILE}]")
# if we are not asked to simulate leak sanitizer don't do it
if(NOT "$ENV{ASAN_OPTIONS}]" MATCHES "simulate_sanitizer.1")
return()
endif()
# clear the log file # clear the log file
file(REMOVE "${LOG_FILE}.2343") file(REMOVE "${LOG_FILE}.2343")