mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-03 21:49:32 +01:00 
			
		
		
		
	Support template test cases in ParseAndAddCatchTests
* Change regex to allow parentheses inside the test macro for a type list * Append a wildcard to the CTestName if the test case is a template * Also change the regular expression so parentheses are allowed in names (fixes #1848)
This commit is contained in:
		
				
					committed by
					
						
						Martin Hořeňovský
					
				
			
			
				
	
			
			
			
						parent
						
							c522e88afa
						
					
				
				
					commit
					1d01464730
				
			@@ -1,9 +1,11 @@
 | 
				
			|||||||
#==================================================================================================#
 | 
					#==================================================================================================#
 | 
				
			||||||
#  supported macros                                                                                #
 | 
					#  supported macros                                                                                #
 | 
				
			||||||
#    - TEST_CASE,                                                                                  #
 | 
					#    - TEST_CASE,                                                                                  #
 | 
				
			||||||
 | 
					#    - TEMPLATE_TEST_CASE                                                                          #
 | 
				
			||||||
#    - SCENARIO,                                                                                   #
 | 
					#    - SCENARIO,                                                                                   #
 | 
				
			||||||
#    - TEST_CASE_METHOD,                                                                           #
 | 
					#    - TEST_CASE_METHOD,                                                                           #
 | 
				
			||||||
#    - CATCH_TEST_CASE,                                                                            #
 | 
					#    - CATCH_TEST_CASE,                                                                            #
 | 
				
			||||||
 | 
					#    - CATCH_TEMPLATE_TEST_CASE                                                                    #
 | 
				
			||||||
#    - CATCH_SCENARIO,                                                                             #
 | 
					#    - CATCH_SCENARIO,                                                                             #
 | 
				
			||||||
#    - CATCH_TEST_CASE_METHOD.                                                                     #
 | 
					#    - CATCH_TEST_CASE_METHOD.                                                                     #
 | 
				
			||||||
#                                                                                                  #
 | 
					#                                                                                                  #
 | 
				
			||||||
@@ -106,7 +108,7 @@ function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget)
 | 
				
			|||||||
    ParseAndAddCatchTests_RemoveComments(Contents)
 | 
					    ParseAndAddCatchTests_RemoveComments(Contents)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Find definition of test names
 | 
					    # Find definition of test names
 | 
				
			||||||
    string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^\)]+\\)+[ \t\n]*{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}")
 | 
					    string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEMPLATE_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([ \t\n]*\"[^\"]*\"[ \t\n]*,[ \t\n]*\"[^\"]*\"([^\(\)]+(\\([^\)]*\\))*)*\\)+[ \t\n]*{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS AND Tests)
 | 
					    if(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS AND Tests)
 | 
				
			||||||
      ParseAndAddCatchTests_PrintDebugMessage("Adding ${SourceFile} to CMAKE_CONFIGURE_DEPENDS property")
 | 
					      ParseAndAddCatchTests_PrintDebugMessage("Adding ${SourceFile} to CMAKE_CONFIGURE_DEPENDS property")
 | 
				
			||||||
@@ -122,8 +124,8 @@ function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget)
 | 
				
			|||||||
        string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}")
 | 
					        string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Get test type and fixture if applicable
 | 
					        # Get test type and fixture if applicable
 | 
				
			||||||
        string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}")
 | 
					        string(REGEX MATCH "(CATCH_)?(TEMPLATE_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}")
 | 
				
			||||||
        string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}")
 | 
					        string(REGEX MATCH "(CATCH_)?(TEMPLATE_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}")
 | 
				
			||||||
        string(REGEX REPLACE "${TestType}\\([ \t]*" "" TestFixture "${TestTypeAndFixture}")
 | 
					        string(REGEX REPLACE "${TestType}\\([ \t]*" "" TestFixture "${TestTypeAndFixture}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Get string parts of test definition
 | 
					        # Get string parts of test definition
 | 
				
			||||||
@@ -194,6 +196,12 @@ function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget)
 | 
				
			|||||||
            if(NOT ${CMAKE_VERSION} VERSION_EQUAL "3.18")
 | 
					            if(NOT ${CMAKE_VERSION} VERSION_EQUAL "3.18")
 | 
				
			||||||
                set(CTestName "\"${CTestName}\"")
 | 
					                set(CTestName "\"${CTestName}\"")
 | 
				
			||||||
            endif()
 | 
					            endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    # Handle template test cases
 | 
				
			||||||
 | 
						    if("${TestTypeAndFixture}" MATCHES ".*TEMPLATE_.*")
 | 
				
			||||||
 | 
						      set(Name "${Name} - *")
 | 
				
			||||||
 | 
						    endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Add the test and set its properties
 | 
					            # Add the test and set its properties
 | 
				
			||||||
            add_test(NAME "${CTestName}" COMMAND ${OptionalCatchTestLauncher} $<TARGET_FILE:${TestTarget}> ${Name} ${AdditionalCatchParameters})
 | 
					            add_test(NAME "${CTestName}" COMMAND ${OptionalCatchTestLauncher} $<TARGET_FILE:${TestTarget}> ${Name} ${AdditionalCatchParameters})
 | 
				
			||||||
            # Old CMake versions do not document VERSION_GREATER_EQUAL, so we use VERSION_GREATER with 3.8 instead
 | 
					            # Old CMake versions do not document VERSION_GREATER_EQUAL, so we use VERSION_GREATER with 3.8 instead
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user