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