ctests: allow excluding patterns

This allows us to exclude matches of certain patterns in
invertedTests, ignoredTests, unreliableTests, and suspendedTests.

To use this new functionality, prefix "!" to the pattern.

This functionality serves as a workaround in some cases to not being
able to use advanced regular expression techniques, such as
"negative lookahead", with CMake's regular expression engine.

Output of "ctest -N" is unchanged by this commit.

This functionality will be used soon (see next commits).

Patch from Kornel Benko.
This commit is contained in:
Scott Kostyshak 2018-01-15 16:25:44 -05:00
parent 3c868386af
commit 10cd5dd223

View File

@ -98,9 +98,15 @@ macro(findexpr found testname listname rsublabel)
# remove doubles in sublabel # remove doubles in sublabel
list(REMOVE_DUPLICATES tmpsublabel) list(REMOVE_DUPLICATES tmpsublabel)
else() else()
set(_itr "^${_itrx}$") if (_itrx MATCHES "^!\(.*\)$")
set(_itr "^${CMAKE_MATCH_1}$")
set(_foundval 0)
else()
set(_itr "^${_itrx}$")
set(_foundval 1)
endif()
if (${testname} MATCHES "${_itr}") if (${testname} MATCHES "${_itr}")
set(_found 1) set(_found ${_foundval})
break() break()
endif() endif()
endif() endif()