diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c5f3117..b7107c5 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -16,9 +16,26 @@ if(ENABLE_CJSON_TEST) parse_value ) + option(ENABLE_VALGRIND OFF "Enable the valgrind memory checker for the tests.") + if (ENABLE_VALGRIND) + find_program(MEMORYCHECK_COMMAND valgrind) + if ("${MEMORYCHECK_COMMAND}" MATCHES "MEMORYCHECK_COMMAND-NOTFOUND") + message(WARNING "Valgrind couldn't be found.") + unset(MEMORYCHECK_COMMAND) + else() + set(MEMORYCHECK_COMMAND_OPTIONS --trace-children=yes --leak-check=full --error-exitcode=1) + endif() + endif() + foreach(unity_test ${unity_tests}) add_executable("${unity_test}" "${unity_test}.c") target_link_libraries("${unity_test}" "${CJSON_LIB}" unity) - add_test("${unity_test}" "${unity_test}") + if(MEMORYCHECK_COMMAND) + add_test(NAME "${unity_test}" + COMMAND "${MEMORYCHECK_COMMAND}" ${MEMORYCHECK_COMMAND_OPTIONS} "./${unity_test}") + else() + add_test(NAME "${unity_test}" + COMMAND "./${unity_test}") + endif() endforeach() endif()