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; }