From 15fccaa7e52d27f920c948ce26ee7bc2e89c8643 Mon Sep 17 00:00:00 2001 From: akva Date: Tue, 21 May 2013 13:35:31 +0000 Subject: [PATCH] added: option to run regression tests through valgrind while ctest does support it through a -D, it does not integrate nicely with the rest of the system git-svn-id: http://svn.sintef.no/trondheim/IFEM/trunk@2404 e10b68d5-8a6e-419e-a041-bce267b0401d --- Apps/Common/scripts/regtest.sh.in | 13 +++++++++++++ cmake/Modules/FindIFEM.cmake | 10 +++++++++- cmake/Modules/IFEMOptions.cmake | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Apps/Common/scripts/regtest.sh.in b/Apps/Common/scripts/regtest.sh.in index 175e6f1b..cb54c4b9 100755 --- a/Apps/Common/scripts/regtest.sh.in +++ b/Apps/Common/scripts/regtest.sh.in @@ -46,5 +46,18 @@ then exit 1 fi +if [ "@IFEM_TEST_MEMCHECK@" == "1" ] || [ "@IFEM_TEST_MEMCHECK@" == "ON" ] +then + if ! grep -q "ERROR SUMMARY: 0 errors" valgrindlog + then + cat templog >> @CMAKE_BINARY_DIR@/failed.log + cat valgrindlog >> @CMAKE_BINARY_DIR@/failed.log + rm templog + rm valgrindlog + exit 1 + fi +fi + rm templog +rm -f valgrindlog exit 0 diff --git a/cmake/Modules/FindIFEM.cmake b/cmake/Modules/FindIFEM.cmake index 2bc0c9ec..e11dbcce 100644 --- a/cmake/Modules/FindIFEM.cmake +++ b/cmake/Modules/FindIFEM.cmake @@ -138,6 +138,10 @@ IF(NOT IFEM_AS_SUBMODULE) SET(IFEM_INCLUDES ${IFEM_INCLUDES} ${IFEM_DEPINCLUDES}) ENDIF(NOT IFEM_AS_SUBMODULE) +IF(IFEM_TEST_MEMCHECK) + include(CTest) +ENDIF() + # Needed as we have templates using these flags ENABLE_LANGUAGE(CXX) IF(CMAKE_CXX_COMPILER_ID MATCHES Intel) @@ -156,7 +160,11 @@ SET(IFEM_CXX_FLAGS "${IFEM_CXX_FLAGS} -DReal=double") FUNCTION(IFEM_ADD_TEST name binary) SEPARATE_ARGUMENTS(MEMCHECK_COMMAND) - ADD_TEST(${PROJECT_SOURCE_DIR}/Test/${name} regtest.sh ${EXECUTABLE_OUTPUT_PATH}/${binary} ${PROJECT_SOURCE_DIR}/Test/${name} ${ARGN}) + IF(IFEM_TEST_MEMCHECK) + ADD_TEST("${binary}+${name}" regtest.sh "${MEMORYCHECK_COMMAND} --log-file=valgrindlog ${EXECUTABLE_OUTPUT_PATH}/${binary}" ${PROJECT_SOURCE_DIR}/Test/${name} ${ARGN}) + ELSE(IFEM_TEST_MEMCHECK) + ADD_TEST("${binary}+${name}" regtest.sh ${EXECUTABLE_OUTPUT_PATH}/${binary} ${PROJECT_SOURCE_DIR}/Test/${name} ${ARGN}) + ENDIF(IFEM_TEST_MEMCHECK) ENDFUNCTION(IFEM_ADD_TEST) SET(IFEM_CONFIGURED 1) diff --git a/cmake/Modules/IFEMOptions.cmake b/cmake/Modules/IFEMOptions.cmake index 52ce239d..d1f8a5a1 100644 --- a/cmake/Modules/IFEMOptions.cmake +++ b/cmake/Modules/IFEMOptions.cmake @@ -11,3 +11,4 @@ OPTION(IFEM_USE_HDF5 "Compile with HDF5 support?" ON) OPTION(IFEM_USE_VTFWRITER "Compile with VTFWriter support?" ON) OPTION(IFEM_AS_SUBMODULE "Compile IFEM as a submodule of apps?" OFF) OPTION(IFEM_WHOLE_PROG_OPTIM "Compile IFEM with link-time optimizations?" OFF) +OPTION(IFEM_TEST_MEMCHECK "Run tests through valgrind?" OFF)