使用 ctest/cmake 测试非零退出状态

Yas*_*has 5 unit-testing cmake ctest

感兴趣的应用程序是一个编译器,当它在源代码中遇到错误时,它会返回非零退出代码。编译器的单元测试由故意触发错误的小片段组成。

用于添加测试的函数是:

function(add_compiler_test test_name options)
  add_test(NAME ${test_name}
    COMMAND $<TARGET_FILE:pawncc> ${DEFAULT_COMPILER_OPTIONS} ${options})
  set_tests_properties(${test_name} PROPERTIES
    ENVIRONMENT PATH=$<TARGET_FILE_DIR:pawnc>)
endfunction()
Run Code Online (Sandbox Code Playgroud)

当程序返回非零退出代码时,这会导致测试失败,尽管这是正确的行为。

如何测试程序的退出状态?

Tsy*_*rev 6

如果您希望测试在返回非零退出状态时报告为 SUCCESS,否则报告为 FAILED,请为测试设置WILL_FAIL属性:

set_tests_properties(<test1> <test2> ... PROPERTIES WILL_FAIL TRUE)
Run Code Online (Sandbox Code Playgroud)