PASS_REGULAR_EXPRESSIONΒΆ

The test output (stdout or stderr) must match this regular expression for the test to pass. The process exit code is ignored. Tests that exceed the timeout specified by TIMEOUT still fail regardless of PASS_REGULAR_EXPRESSION. System-level test failures including segmentation faults, signal abort, or heap errors may fail the test even if PASS_REGULAR_EXPRESSION is matched.

Example:

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 expects a list of regular expressions.

To run a test that may have a system-level failure, but still pass if PASS_REGULAR_EXPRESSION matches, use a CMake command to wrap the executable run. Note that this will prevent automatic handling of the CROSSCOMPILING_EMULATOR and TEST_LAUNCHER target property.

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;
}

See also the FAIL_REGULAR_EXPRESSION and SKIP_REGULAR_EXPRESSION test properties.