summaryrefslogtreecommitdiffstats
path: root/Modules/FindGTest.cmake
diff options
context:
space:
mode:
authorJack Morrison <jackmorrison1@gmail.com>2014-04-01 13:21:23 (GMT)
committerBrad King <brad.king@kitware.com>2014-04-01 13:48:20 (GMT)
commit2e2939c365292d1771d5dd6d2cd8f04e3d2aea44 (patch)
tree66dc2bc6bae5194096888e7900236ba8bbd92896 /Modules/FindGTest.cmake
parente3e1ba3f781c621835dc5e46783fecb6ccaad127 (diff)
downloadCMake-2e2939c365292d1771d5dd6d2cd8f04e3d2aea44.zip
CMake-2e2939c365292d1771d5dd6d2cd8f04e3d2aea44.tar.gz
CMake-2e2939c365292d1771d5dd6d2cd8f04e3d2aea44.tar.bz2
FindGTest: Teach GTEST_ADD_TESTS about TEST_P
Previously the GTEST_ADD_TESTS function would miss parameterized tests because it only considered TEST and TEST_F. Add TEST_P to the list of considered tests and will run all instantiations of this parameterized test together. This is perhaps not as correct as searching for all instantiations of this parameterized test and separating those into separate runs, but this will at least run tests that were previously missing. For reference: https://code.google.com/p/googletest/wiki/Documentation
Diffstat (limited to 'Modules/FindGTest.cmake')
-rw-r--r--Modules/FindGTest.cmake12
1 files changed, 10 insertions, 2 deletions
diff --git a/Modules/FindGTest.cmake b/Modules/FindGTest.cmake
index aa3c235..c4f911d 100644
--- a/Modules/FindGTest.cmake
+++ b/Modules/FindGTest.cmake
@@ -115,11 +115,19 @@ function(GTEST_ADD_TESTS executable extra_args)
# obtain sources used for building that executable
get_property(ARGN TARGET ${executable} PROPERTY SOURCES)
endif()
+ set(gtest_case_name_regex ".*\\( *([A-Za-z_0-9]+), *([A-Za-z_0-9]+) *\\).*")
foreach(source ${ARGN})
file(READ "${source}" contents)
- string(REGEX MATCHALL "TEST_?F?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents})
+ string(REGEX MATCHALL "TEST_?[FP]?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents})
foreach(hit ${found_tests})
- string(REGEX REPLACE ".*\\( *([A-Za-z_0-9]+), *([A-Za-z_0-9]+) *\\).*" "\\1.\\2" test_name ${hit})
+ string(REGEX MATCH "TEST_?[FP]?" test_type ${hit})
+
+ # Parameterized tests have a different signature for the filter
+ if(${test_type} STREQUAL "TEST_P")
+ string(REGEX REPLACE ${gtest_case_name_regex} "*/\\1.\\2/*" test_name ${hit})
+ else()
+ string(REGEX REPLACE ${gtest_case_name_regex} "\\1.\\2" test_name ${hit})
+ endif()
add_test(${test_name} ${executable} --gtest_filter=${test_name} ${extra_args})
endforeach()
endforeach()