我在 CMakeLists.txt 中指定一个测试,该测试运行可执行文件,并且应该查找特定输出( )PASS_REGULAR_EXPRESSION来确定成功。
由于二进制文件不会自行终止,因此我还想在一些TIMEOUT.
PASS_REGULAR_EXPRESSION如果 my出现在 之前,测试应该通过TIMEOUT,否则测试应该失败。
我的 CMakeLists.txt 看起来是谎言:
add_test(NAME sometest COMMAND my_binary)
set_tests_properties(sometest PROPERTIES
PASS_REGULAR_EXPRESSION "All systems go[.]"
TIMEOUT 10)
Run Code Online (Sandbox Code Playgroud)
不幸的是,有一个TIMEOUT 总是将测试标记为失败。是否可以指定一个非失败超时?
我只是在寻找类似问题的解决方案,我在 CMake 邮件列表中找到了它:
CMakeLists.txt:
add_test(NAME mytest
COMMAND ${CMAKE_COMMAND} -DMYEXE=${PATH_TO_MYEXE} -DARG_TIMEOUT -P ${CMAKE_CURRENT_LIST_DIR}/ExecuteTest.cmake)
Run Code Online (Sandbox Code Playgroud)
执行测试.cmake:
execute_process(COMMAND ${PATH_TO_MYEXE}
TIMEOUT ${ARG_TIMEOUT}
OUTPUT_VARIABLE output)
if(NOT output MATCHES "^my_desired_regex$")
message(FATAL_ERROR "myexe did not produce desired output")
endif()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |