summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChuck Atkins <chuck.atkins@kitware.com>2017-06-01 09:03:39 -0400
committerBrad King <brad.king@kitware.com>2017-06-05 10:11:08 -0400
commit92bbb70695893b617aa5addc1d3747d9146a9f2b (patch)
tree9825df16504b63f5aecf029bf0be26f1bba69921
parent6edd1806ddbfc4138dc9987d2a9c7c4fed56306b (diff)
downloadcmake-92bbb70695893b617aa5addc1d3747d9146a9f2b.tar.gz
GoogleTest: Add support for disabled tests
Fixes: #10612
-rw-r--r--Modules/GoogleTest.cmake46
-rw-r--r--Tests/GoogleTest/Test/CMakeLists.txt15
-rw-r--r--Tests/GoogleTest/Test/main2.h15
3 files changed, 67 insertions, 9 deletions
diff --git a/Modules/GoogleTest.cmake b/Modules/GoogleTest.cmake
index c9e054434e..7415e06810 100644
--- a/Modules/GoogleTest.cmake
+++ b/Modules/GoogleTest.cmake
@@ -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()
diff --git a/Tests/GoogleTest/Test/CMakeLists.txt b/Tests/GoogleTest/Test/CMakeLists.txt
index a1f08d4c8f..f798d313c8 100644
--- a/Tests/GoogleTest/Test/CMakeLists.txt
+++ b/Tests/GoogleTest/Test/CMakeLists.txt
@@ -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)
diff --git a/Tests/GoogleTest/Test/main2.h b/Tests/GoogleTest/Test/main2.h
index 7243f538ac..7881c4fd80 100644
--- a/Tests/GoogleTest/Test/main2.h
+++ b/Tests/GoogleTest/Test/main2.h
@@ -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);
+}