Spec-Zone.ru › CMake

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–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_test/PASS_REGULAR_EXPRESSION.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API