Commit 92bbb706 authored by Chuck Atkins's avatar Chuck Atkins Committed by Brad King
Browse files

GoogleTest: Add support for disabled tests

Fixes: #10612
parent 6edd1806
......@@ -172,20 +172,50 @@ function(gtest_add_tests)
# Parameterized tests have a different signature for the filter
if("x${test_type}" STREQUAL "xTEST_P")
string(REGEX REPLACE ${gtest_case_name_regex} "*/\\1.\\2/*" test_name ${hit})
string(REGEX REPLACE ${gtest_case_name_regex} "*/\\1.\\2/*" gtest_test_name ${hit})
elseif("x${test_type}" STREQUAL "xTEST_F" OR "x${test_type}" STREQUAL "xTEST")
string(REGEX REPLACE ${gtest_case_name_regex} "\\1.\\2" test_name ${hit})
string(REGEX REPLACE ${gtest_case_name_regex} "\\1.\\2" gtest_test_name ${hit})
elseif("x${test_type}" STREQUAL "xTYPED_TEST")
string(REGEX REPLACE ${gtest_case_name_regex} "\\1/*.\\2" test_name ${hit})
string(REGEX REPLACE ${gtest_case_name_regex} "\\1/*.\\2" gtest_test_name ${hit})
else()
message(WARNING "Could not parse GTest ${hit} for adding to CTest.")
continue()
endif()
add_test(NAME ${ARGS_TEST_PREFIX}${test_name}${ARGS_TEST_SUFFIX}
${workDir}
COMMAND ${ARGS_TARGET} --gtest_filter=${test_name} ${ARGS_EXTRA_ARGS}
)
list(APPEND testList ${ARGS_TEST_PREFIX}${test_name}${ARGS_TEST_SUFFIX})
# Make sure tests disabled in GTest get disabled in CTest
if(gtest_test_name MATCHES "(^|\\.)DISABLED_")
# Add the disabled test if CMake is new enough
# Note that this check is to allow backwards compatibility so this
# module can be copied locally in projects to use with older CMake
# versions
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.8.20170401)
string(REGEX REPLACE
"(^|\\.)DISABLED_" "\\1"
orig_test_name "${gtest_test_name}"
)
set(ctest_test_name
${ARGS_TEST_PREFIX}${orig_test_name}${ARGS_TEST_SUFFIX}
)
add_test(NAME ${ctest_test_name}
${workDir}
COMMAND ${ARGS_TARGET}
--gtest_also_run_disabled_tests
--gtest_filter=${gtest_test_name}
${ARGS_EXTRA_ARGS}
)
set_tests_properties(${ctest_test_name} PROPERTIES DISABLED TRUE)
list(APPEND testList ${ctest_test_name})
endif()
else()
set(ctest_test_name ${ARGS_TEST_PREFIX}${gtest_test_name}${ARGS_TEST_SUFFIX})
add_test(NAME ${ctest_test_name}
${workDir}
COMMAND ${ARGS_TARGET}
--gtest_filter=${gtest_test_name}
${ARGS_EXTRA_ARGS}
)
list(APPEND testList ${ctest_test_name})
endif()
endforeach()
endforeach()
......
......@@ -53,12 +53,25 @@ gtest_add_tests(TARGET test_gtest2
)
set(expectedTests
GoogleTest.SomethingElse
GoogleTest.OffTest1
GoogleTest.OffTest2
GoogleTest.OffTest3
)
if(NOT testList STREQUAL "${expectedTests}")
message(FATAL_ERROR "Expected test list: ${expectedTests}
Actual test list: ${testList}")
endif()
set(disabledTests
GoogleTest.OffTest1
GoogleTest.OffTest2
GoogleTest.OffTest3
)
foreach(T ${disabledTests})
get_test_property(${T} DISABLED testDisabled)
if(NOT testDisabled)
message(FATAL_ERROR "Test ${T} should be disabled but is not")
endif()
endforeach()
# Non-keyword form, auto-find sources
add_executable(test_gtest3 main3.cxx)
......
......@@ -4,3 +4,18 @@ TEST(GoogleTest, SomethingElse)
{
ASSERT_TRUE(true);
}
TEST(GoogleTest, DISABLED_OffTest1)
{
ASSERT_TRUE(true);
}
TEST(DISABLED_GoogleTest, OffTest2)
{
ASSERT_TRUE(true);
}
TEST(DISABLED_GoogleTest, DISABLED_OffTest3)
{
ASSERT_TRUE(true);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment