Просмотр исходного кода

FindGTest: Teach GTEST_ADD_TESTS about TYPED_TEST

Jack Morrison 12 лет назад
Родитель
Сommit
1f3e95ba72
1 измененных файлов с 15 добавлено и 9 удалено
  1. 15 9
      Modules/FindGTest.cmake

+ 15 - 9
Modules/FindGTest.cmake

@@ -116,19 +116,25 @@ function(GTEST_ADD_TESTS executable extra_args)
         get_property(ARGN TARGET ${executable} PROPERTY SOURCES)
     endif()
     set(gtest_case_name_regex ".*\\( *([A-Za-z_0-9]+), *([A-Za-z_0-9]+) *\\).*")
+    set(gtest_test_type_regex "(TYPED_TEST|TEST_?[FP]?)")
     foreach(source ${ARGN})
         file(READ "${source}" contents)
-        string(REGEX MATCHALL "TEST_?[FP]?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents})
+        string(REGEX MATCHALL "${gtest_test_type_regex}\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents})
         foreach(hit ${found_tests})
-            string(REGEX MATCH "TEST_?[FP]?" test_type ${hit})
+          string(REGEX MATCH "${gtest_test_type_regex}" 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})
+          # 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})
+          elseif(${test_type} STREQUAL "TEST_F" OR ${test_type} STREQUAL "TEST")
+            string(REGEX REPLACE ${gtest_case_name_regex} "\\1.\\2" test_name ${hit})
+          elseif(${test_type} STREQUAL "TYPED_TEST")
+            string(REGEX REPLACE ${gtest_case_name_regex} "\\1/*.\\2" test_name ${hit})
+          else()
+            message(WARNING "Could not parse GTest ${hit} for adding to CTest.")
+            continue()
+          endif()
+          add_test(${test_name} ${executable} --gtest_filter=${test_name} ${extra_args})
         endforeach()
     endforeach()
 endfunction()