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