mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-04 05:59:32 +01:00 
			
		
		
		
	Adding more flexibility into the cmake catch parsing script (#971)
* Adding more flexibility into the cmake catch parsing script
This commit is contained in:
		
				
					committed by
					
						
						Martin Hořeňovský
					
				
			
			
				
	
			
			
			
						parent
						
							7575749e56
						
					
				
				
					commit
					ec2074e558
				
			@@ -30,12 +30,21 @@
 | 
			
		||||
#                                                                                                  #
 | 
			
		||||
#    PARSE_CATCH_TESTS_VERBOSE (Default OFF)                                                       #
 | 
			
		||||
#    -- enables debug messages                                                                     #
 | 
			
		||||
#    PARSE_CATCH_TESTS_NO_HIDDEN_TESTS (Default OFF)                                               #
 | 
			
		||||
#    -- excludes tests marked with [!hide], [.] or [.foo] tags                                     #
 | 
			
		||||
#    PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME (Default ON)                                       #
 | 
			
		||||
#    -- adds fixture class name to the test name                                                   #
 | 
			
		||||
#    PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME (Default ON)                                        #
 | 
			
		||||
#    -- adds cmake target name to the test name                                                    #
 | 
			
		||||
#                                                                                                  #
 | 
			
		||||
#==================================================================================================#
 | 
			
		||||
 | 
			
		||||
cmake_minimum_required(VERSION 2.8.8)
 | 
			
		||||
 | 
			
		||||
option(PARSE_CATCH_TESTS_VERBOSE "Print Catch to CTest parser debug messages" OFF)
 | 
			
		||||
option(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS "Exclude tests with [!hide], [.] or [.foo] tags" OFF)
 | 
			
		||||
option(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME "Add fixture class name to the test name" ON)
 | 
			
		||||
option(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME "Add target name to the test name" ON)
 | 
			
		||||
 | 
			
		||||
function(PrintDebugMessage)
 | 
			
		||||
    if(PARSE_CATCH_TESTS_VERBOSE)
 | 
			
		||||
@@ -103,12 +112,14 @@ function(ParseFile SourceFile TestTarget)
 | 
			
		||||
        if("${TestType}" STREQUAL "SCENARIO")
 | 
			
		||||
            set(Name "Scenario: ${Name}")
 | 
			
		||||
        endif()
 | 
			
		||||
        if(TestFixture)
 | 
			
		||||
        if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND TestFixture)
 | 
			
		||||
            set(CTestName "${TestFixture}:${Name}")
 | 
			
		||||
        else()
 | 
			
		||||
            set(CTestName "${Name}")
 | 
			
		||||
        endif()
 | 
			
		||||
        set(CTestName "${TestTarget}:${CTestName}")
 | 
			
		||||
        if(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME)
 | 
			
		||||
            set(CTestName "${TestTarget}:${CTestName}")
 | 
			
		||||
        endif()
 | 
			
		||||
        # add target to labels to enable running all tests added from this target
 | 
			
		||||
        set(Labels ${TestTarget})
 | 
			
		||||
        if(TestStringsLength EQUAL 2)
 | 
			
		||||
@@ -124,15 +135,28 @@ function(ParseFile SourceFile TestTarget)
 | 
			
		||||
 | 
			
		||||
        list(APPEND Labels ${Tags})
 | 
			
		||||
 | 
			
		||||
        PrintDebugMessage("Adding test \"${CTestName}\"")
 | 
			
		||||
        if(Labels)
 | 
			
		||||
            PrintDebugMessage("Setting labels to ${Labels}")
 | 
			
		||||
        endif()
 | 
			
		||||
        list(FIND Labels "!hide" IndexOfHideLabel)
 | 
			
		||||
        set(HiddenTagFound OFF)
 | 
			
		||||
        foreach(label ${Labels})
 | 
			
		||||
            string(REGEX MATCH "^!hide|^\\." result ${label})
 | 
			
		||||
            if(result)
 | 
			
		||||
                set(HiddenTagFound ON)
 | 
			
		||||
                break()
 | 
			
		||||
            endif(result)
 | 
			
		||||
        endforeach(label)
 | 
			
		||||
        if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound})
 | 
			
		||||
            PrintDebugMessage("Skipping test \"${CTestName}\" as it has [!hide], [.] or [.foo] label")
 | 
			
		||||
        else()
 | 
			
		||||
            PrintDebugMessage("Adding test \"${CTestName}\"")
 | 
			
		||||
            if(Labels)
 | 
			
		||||
                PrintDebugMessage("Setting labels to ${Labels}")
 | 
			
		||||
            endif()
 | 
			
		||||
 | 
			
		||||
        # Add the test and set its properties
 | 
			
		||||
        add_test(NAME "\"${CTestName}\"" COMMAND ${TestTarget} ${Name} ${AdditionalCatchParameters})
 | 
			
		||||
        set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran"
 | 
			
		||||
                                                LABELS "${Labels}")
 | 
			
		||||
            # Add the test and set its properties
 | 
			
		||||
            add_test(NAME "\"${CTestName}\"" COMMAND ${TestTarget} ${Name} ${AdditionalCatchParameters})
 | 
			
		||||
            set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran"
 | 
			
		||||
                                                    LABELS "${Labels}")
 | 
			
		||||
        endif()
 | 
			
		||||
 | 
			
		||||
    endforeach()
 | 
			
		||||
endfunction()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user