PASS_REGULAR_EXPRESSION
Вывод теста (stdout или stderr) должен соответствовать этому регулярному выражению для успешного выполнения теста. Код завершения процесса игнорируется. Тесты, которые превышают время ожидания, указанное в TIMEOUT, по-прежнему завершаются неудачно независимо от PASS_REGULAR_EXPRESSION. Тесты на уровне системы, включая ошибки сегментации, прерывания сигнала или ошибки кучи, могут завершиться неудачей, даже если PASS_REGULAR_EXPRESSION совпадает.
Пример:
add_test(NAME mytest COMMAND ${CMAKE_COMMAND} -E echo "Passed this test")
set_property(TEST mytest PROPERTY
PASS_REGULAR_EXPRESSION "pass;Passed"
)
PASS_REGULAR_EXPRESSION ожидает список регулярных выражений.
Для запуска теста, который может иметь системную ошибку, но все же пройти, если PASS_REGULAR_EXPRESSION совпадает, используйте команду 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 PROPERTY_REGULAR_EXPRESSION "pass;Passed")
#include <signal.h>
#include <stdio.h>
int main(void){
fprintf(stdout, "Passed\n");
fflush(stdout); /* ensure the output buffer is seen */
raise(SIGABRT);
return 0;
}
См. также свойства тестов FAIL_REGULAR_EXPRESSION и SKIP_REGULAR_EXPRESSION.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/prop_test/PASS_REGULAR_EXPRESSION.html