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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_test/WILL_FAIL.html