WILL_FAIL

如果 true,則反轉通過/失敗測試標準。對於 WILL_FAILtrue 的測試,將以返回碼 0 失敗,並以非零返回碼通過。超過 TIMEOUT 指定逾時的測試,無論 WILL_FAIL 為何仍然會失敗。即使 WILL_FAIL 為 true,系統級別的測試失敗,包括分段錯誤、信號中止或堆積錯誤,也可能導致測試失敗。

以下範例是一個通常會通過,但因為 WILL_FAILtrue 而失敗的測試

add_test(NAME failed COMMAND ${CMAKE_COMMAND} -E true)
set_property(TEST failed PROPERTY WILL_FAIL true)

若要執行可能發生系統級別失敗,但如果設定了 WILL_FAIL 仍然能通過的測試,請使用 CMake 命令來包裝可執行檔的執行。請注意,這會阻止自動處理 CROSSCOMPILING_EMULATORTEST_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; }