From 159c3e91ac0abc386ff363ed3382105de7143339 Mon Sep 17 00:00:00 2001 From: Rolf Eike Beer Date: Thu, 9 May 2013 12:24:09 +0200 Subject: Tests: add a test with custom options passed to valgrind --- Tests/CTestTestMemcheck/CMakeLists.txt | 9 +++++++++ Tests/CTestTestMemcheck/memtester.cxx.in | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/Tests/CTestTestMemcheck/CMakeLists.txt b/Tests/CTestTestMemcheck/CMakeLists.txt index fc3b01e..1c0c3b2 100644 --- a/Tests/CTestTestMemcheck/CMakeLists.txt +++ b/Tests/CTestTestMemcheck/CMakeLists.txt @@ -101,6 +101,12 @@ set(CTEST_EXTRA_CONFIG "set(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE \"\${CMAKE_CURRE unset(CMAKELISTS_EXTRA_CODE) gen_mc_test(DummyValgrindInvalidSupFile "\${PSEUDO_VALGRIND}") +# CTest will add the logfile option as last option. Tell the dummy memcheck +# to ignore that argument. This will cause the logfile to be missing, which +# will be the prove for us that the custom option is indeed used. +set(CTEST_EXTRA_CONFIG "set(CTEST_MEMORYCHECK_COMMAND_OPTIONS \"--\")") +gen_mc_test(DummyValgrindCustomOptions "\${PSEUDO_VALGRIND}") + unset(CTEST_EXTRA_CONFIG) gen_mc_test(NotExist "\${CTEST_BINARY_DIRECTORY}/no-memcheck-exe") @@ -141,3 +147,6 @@ set_tests_properties(CTestTestMemcheckDummyBC PROPERTIES set_tests_properties(CTestTestMemcheckDummyValgrindInvalidSupFile PROPERTIES PASS_REGULAR_EXPRESSION "\nCannot find memory checker suppression file: ${CMAKE_CURRENT_BINARY_DIR}/does-not-exist\n") + +set_tests_properties(CTestTestMemcheckDummyValgrindCustomOptions PROPERTIES + PASS_REGULAR_EXPRESSION "\nCannot find memory tester output file: ${CMAKE_CURRENT_BINARY_DIR}/DummyValgrindCustomOptions/Testing/Temporary/MemoryChecker.log\n(.*\n)?Error in read script: ${CMAKE_CURRENT_BINARY_DIR}/DummyValgrindCustomOptions/test.cmake\n") diff --git a/Tests/CTestTestMemcheck/memtester.cxx.in b/Tests/CTestTestMemcheck/memtester.cxx.in index 64b72d3..4609fa3 100644 --- a/Tests/CTestTestMemcheck/memtester.cxx.in +++ b/Tests/CTestTestMemcheck/memtester.cxx.in @@ -28,6 +28,12 @@ main(int argc, char **argv) std::string logfile; for (int i = 1; i < argc; i++) { std::string arg = argv[i]; + // stop processing options, this allows to force + // the logfile to be ignored + if (arg == "--") + { + break; + } if (arg.find(logarg) == 0) { if (nextarg) -- cgit v0.12