WILL_FAIL
Если true, инвертирует критерии успешного и неуспешного прохождения теста. Тесты, для которых WILL_FAIL имеет значение true, считаются неуспешными при коде возврата 0 и успешными при ненулевом коде возврата. Тесты, время выполнения которых превышает время ожидания, заданное свойством TIMEOUT, всё равно считаются неуспешными независимо от WILL_FAIL. Системные сбои теста, включая ошибки сегментации, аварийное завершение по сигналу или ошибки кучи, могут привести к неуспешному прохождению теста, даже если WILL_FAIL имеет значение true.
Пример теста, который обычно завершается успешно, но считается неуспешным, поскольку WILL_FAIL имеет значение true:
add_test(NAME failed COMMAND ${CMAKE_COMMAND} -E true)
set_property(TEST failed PROPERTY WILL_FAIL true)
Чтобы запустить тест, в котором возможен системный сбой, но который всё же должен завершиться успешно, если установлено WILL_FAIL, используйте команду CMake для запуска исполняемого файла через обёртку. Обратите внимание, что это отключит автоматическую обработку свойств цели CROSSCOMPILING_EMULATOR и TEST_LAUNCHER.
add_executable(main main.c)
add_test(NAME sigabrt COMMAND ${CMAKE_COMMAND} -E env $<TARGET_FILE:main>)
set_property(TEST sigabrt PROPERTY WILL_FAIL TRUE)
#include <signal.h>
int main(void){ raise(SIGABRT); return 0; }
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_test/WILL_FAIL.html