У меня есть проект на C ++ в CMake, и я реализовал модульные тесты (используя GoogleTest), а также интеграционные тесты, то есть выполнение приложений и проверку результатов с помощью regexp, например.
add_test(NAME MyAppIntegration.testRefitRunMse COMMAND my_application "--refit=true")
set_tests_properties(MyAppIntegration.testRefitRunMse PROPERTIES PASS_REGULAR_EXPRESSION "mse\\=1\\.53611e\\-05")
Теперь я хотел бы сделать то же самое, что и выше, но запустить приложение для обнаружения ошибок памяти, например. просто беги ./my_application
и проверьте наличие ошибок памяти с помощью valgrind. Как я могу это сделать? Обратите внимание, что я в курсе ctest -D ExperimentalMemCheck
а также ctest -T memcheck
но здесь я в конечном итоге с ошибкой Cannot find file DartConfiguration.tcl
который связан с конфигурацией Dashboard, которая мне не нужна.
ОК, я нашел возможное решение. Добавление этих строк в мой CMakeLists.txt
:
## valgrind
find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
INCLUDE(Dart)
генерирует необходимый DartConfiguration.tcl
что бы это ни было, а затем повторно вызвать:
ctest -T memcheck
запускает все тесты, а также проверяет наличие ошибок памяти.
Других решений пока нет …