Непрерывный тайм-аут с использованием ctest
Я указываю тест в моем CMakeLists.txt, который запускает исполняемый файл и должен искать определенный вывод (PASS_REGULAR_EXPRESSION
) определить успех.
Поскольку бинарный файл не завершает сам себя, я также хотел бы завершить исполняемый файл после некоторого TIMEOUT
,
Тест должен пройти, если мой PASS_REGULAR_EXPRESSION
происходит до TIMEOUT
в противном случае он должен потерпеть неудачу.
Мой CMakeLists.txt выглядит ложью:
add_test(NAME sometest COMMAND my_binary)
set_tests_properties(sometest PROPERTIES
PASS_REGULAR_EXPRESSION "All systems go[.]"
TIMEOUT 10)
К сожалению, имея TIMEOUT
всегда помечает тест как неудачный. Можно ли указать исправное время ожидания?
1 ответ
Я просто искал решение подобной проблемы и нашел его в списке рассылки CMake :
CMakeLists.txt:
add_test(NAME mytest
COMMAND ${CMAKE_COMMAND} -DMYEXE=${PATH_TO_MYEXE} -DARG_TIMEOUT -P ${CMAKE_CURRENT_LIST_DIR}/ExecuteTest.cmake)
ExecuteTest.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()