Как позволить CMake / CTest memcheck завершиться с кодом состояния 1 при ошибке? - PullRequest
2 голосов
/ 24 марта 2019

Я хочу использовать ctest для запуска моих тестов с помощью valgrind. Таким образом, я написал следующее в моем файле cmake:

include(CTest)

find_program(MEMORYCHECK_COMMAND valgrind)
set(MEMORYCHECK_COMMAND_OPTIONS "--leak-check=full --error-exitcode=1")
set(MEMORYCHECK_SUPPRESSIONS_FILE "${PROJECT_SOURCE_DIR}/.valgrind-suppressions")

Это похоже на работу. Когда я запускаю ctest -D ExperimentalMemCheck . в текущей программе, она показывает, что обнаружены утечки памяти, но не завершается со статусом! = 0.

Как я могу получить код выхода 1 при ошибке?

1 Ответ

0 голосов
/ 24 марта 2019

По умолчанию valgrind memcheck завершает работу с ошибкой для определенных и возможных видов утечек.

Возможно, вы захотите иметь больше типов утечек, вызывающих ошибку, используя --errors-for-leak-types:

--errors-for-leak-kinds=kind1,kind2,..  which leak kinds are errors?
                                        [definite,possible]
    where kind is one of:
      definite indirect possible reachable all none
...