CTest: Fix combined inclusive/exclusive label regular expressions
This commit is contained in:
parent
47cde18849
commit
887532f0f0
|
@ -509,7 +509,7 @@ int cmCTestTestHandler::ProcessHandler()
|
||||||
if ( val )
|
if ( val )
|
||||||
{
|
{
|
||||||
this->UseExcludeLabelRegExpFlag = true;
|
this->UseExcludeLabelRegExpFlag = true;
|
||||||
this->ExcludeLabelRegularExpression = val;
|
this->ExcludeLabelRegExp = val;
|
||||||
}
|
}
|
||||||
val = this->GetOption("IncludeRegularExpression");
|
val = this->GetOption("IncludeRegularExpression");
|
||||||
if ( val )
|
if ( val )
|
||||||
|
@ -1558,7 +1558,7 @@ void cmCTestTestHandler::GetListOfTests()
|
||||||
this->IncludeLabelRegularExpression.
|
this->IncludeLabelRegularExpression.
|
||||||
compile(this->IncludeLabelRegExp.c_str());
|
compile(this->IncludeLabelRegExp.c_str());
|
||||||
}
|
}
|
||||||
if ( !this->IncludeLabelRegExp.empty() )
|
if ( !this->ExcludeLabelRegExp.empty() )
|
||||||
{
|
{
|
||||||
this->ExcludeLabelRegularExpression.
|
this->ExcludeLabelRegularExpression.
|
||||||
compile(this->ExcludeLabelRegExp.c_str());
|
compile(this->ExcludeLabelRegExp.c_str());
|
||||||
|
|
|
@ -2342,6 +2342,17 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
|
||||||
set_tests_properties(CTestTestPrintLabels PROPERTIES PASS_REGULAR_EXPRESSION
|
set_tests_properties(CTestTestPrintLabels PROPERTIES PASS_REGULAR_EXPRESSION
|
||||||
"All Labels:.* Label1.* Label2")
|
"All Labels:.* Label1.* Label2")
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
"${CMake_SOURCE_DIR}/Tests/CTestTestLabelRegExp/test.cmake.in"
|
||||||
|
"${CMake_BINARY_DIR}/Tests/CTestTestLabelRegExp/test.cmake"
|
||||||
|
@ONLY ESCAPE_QUOTES)
|
||||||
|
add_test(NAME CTestTestLabelRegExp
|
||||||
|
COMMAND ${CMAKE_CMAKE_COMMAND}
|
||||||
|
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}/Tests/CTestTestLabelRegExp
|
||||||
|
-P ${CMAKE_BINARY_DIR}/Tests/CTestTestLabelRegExp/test.cmake
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/Tests/CTestTestLabelRegExp
|
||||||
|
)
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
"${CMake_SOURCE_DIR}/Tests/CTestTestResourceLock/test.cmake.in"
|
"${CMake_SOURCE_DIR}/Tests/CTestTestResourceLock/test.cmake.in"
|
||||||
"${CMake_BINARY_DIR}/Tests/CTestTestResourceLock/test.cmake"
|
"${CMake_BINARY_DIR}/Tests/CTestTestResourceLock/test.cmake"
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
add_test(test1 ${CMAKE_COMMAND} -E echo test1)
|
||||||
|
set_tests_properties(test1 PROPERTIES LABELS "foo")
|
||||||
|
|
||||||
|
add_test(test2 ${CMAKE_COMMAND} -E echo test2)
|
||||||
|
set_tests_properties(test2 PROPERTIES LABELS "bar")
|
||||||
|
|
||||||
|
add_test(test3 ${CMAKE_COMMAND} -E echo test3)
|
||||||
|
set_tests_properties(test3 PROPERTIES LABELS "foo;bar")
|
|
@ -0,0 +1,37 @@
|
||||||
|
configure_file(${SOURCE_DIR}/CTestTestfile.cmake.in CTestTestfile.cmake)
|
||||||
|
|
||||||
|
function(get_test_list TEST_LIST)
|
||||||
|
set(QUERY_COMMAND ${CMAKE_CTEST_COMMAND} -N ${ARGN})
|
||||||
|
|
||||||
|
execute_process(COMMAND ${QUERY_COMMAND}
|
||||||
|
RESULT_VARIABLE RESULT
|
||||||
|
OUTPUT_VARIABLE OUTPUT
|
||||||
|
ERROR_VARIABLE ERROR)
|
||||||
|
|
||||||
|
if(NOT ${RESULT} STREQUAL "0")
|
||||||
|
message(FATAL_ERROR "command [${QUERY_COMMAND}] failed: RESULT[${RESULT}] OUTPUT[${OUTPUT}] ERROR[${ERROR}]")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(${TEST_LIST} "${OUTPUT}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(expect_test_list EXPECTED_OUTPUT)
|
||||||
|
get_test_list(TEST_LIST ${ARGN})
|
||||||
|
|
||||||
|
if(NOT "${TEST_LIST}" MATCHES "${EXPECTED_OUTPUT}")
|
||||||
|
message(FATAL_ERROR "actual output [${TEST_LIST}] does not match expected output [${EXPECTED_OUTPUT}] for given arguments [${ARGN}]")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
expect_test_list("test1.*test3.*Total Tests: 2" --label-regex foo)
|
||||||
|
expect_test_list("test2.*test3.*Total Tests: 2" --label-regex bar)
|
||||||
|
expect_test_list("test1.*test2.*test3.*Total Tests: 3" --label-regex foo|bar)
|
||||||
|
expect_test_list("Total Tests: 0" --label-regex baz)
|
||||||
|
|
||||||
|
expect_test_list("test2.*Total Tests: 1" --label-exclude foo)
|
||||||
|
expect_test_list("test1.*Total Tests: 1" --label-exclude bar)
|
||||||
|
expect_test_list("Total Tests: 0" --label-exclude foo|bar)
|
||||||
|
expect_test_list("test1.*test2.*test3.*Total Tests: 3" --label-exclude baz)
|
||||||
|
|
||||||
|
expect_test_list("test1.*Total Tests: 1" --label-regex foo --label-exclude bar)
|
||||||
|
expect_test_list("test2.*Total Tests: 1" --label-regex bar --label-exclude foo)
|
Loading…
Reference in New Issue