mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-04 05:59:32 +01:00 
			
		
		
		
	Fixed exception check regression
This commit is contained in:
		@@ -53,7 +53,7 @@ TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results"
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            runner.runMatching( "./failing/*" );        
 | 
					            runner.runMatching( "./failing/*" );        
 | 
				
			||||||
            CHECK( runner.getSuccessCount() == 0 );
 | 
					            CHECK( runner.getSuccessCount() == 0 );
 | 
				
			||||||
            CHECK( runner.getFailureCount() == 54 );
 | 
					            CHECK( runner.getFailureCount() == 55 );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,14 +36,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, ..., false, true, "REQUIRE_THROWS" )
 | 
					#define REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, ..., false, true, "REQUIRE_THROWS" )
 | 
				
			||||||
#define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, false, true, "REQUIRE_THROWS_AS" )
 | 
					#define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, false, true, "REQUIRE_THROWS_AS" )
 | 
				
			||||||
#define REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_THROWS_AS( expr, Catch::DummyExceptionType_DontUse, true, true, "REQUIRE_NOTHROW" )
 | 
					#define REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, true, "REQUIRE_NOTHROW" )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define CHECK( expr ) INTERNAL_CATCH_TEST( expr, false, false, "CHECK" )
 | 
					#define CHECK( expr ) INTERNAL_CATCH_TEST( expr, false, false, "CHECK" )
 | 
				
			||||||
#define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, true, false, "CHECK_FALSE" )
 | 
					#define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, true, false, "CHECK_FALSE" )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define CHECK_THROWS( expr )  INTERNAL_CATCH_THROWS( expr, ..., false. false, "CHECK_THROWS" )
 | 
					#define CHECK_THROWS( expr )  INTERNAL_CATCH_THROWS( expr, ..., false. false, "CHECK_THROWS" )
 | 
				
			||||||
#define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, false, false, "CHECK_THROWS_AS" )
 | 
					#define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, false, false, "CHECK_THROWS_AS" )
 | 
				
			||||||
#define CHECK_NOTHROW( expr ) INTERNAL_CATCH_THROWS_AS( expr, Catch::DummyExceptionType_DontUse, true, false, "CHECK_NOTHROW" )
 | 
					#define CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, false, "CHECK_NOTHROW" )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define INFO( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Info, false, "INFO" )
 | 
					#define INFO( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Info, false, "INFO" )
 | 
				
			||||||
#define WARN( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Warning, false, "WARN" )
 | 
					#define WARN( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Warning, false, "WARN" )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -548,20 +548,32 @@ inline bool isTrue
 | 
				
			|||||||
#define INTERNAL_CATCH_TEST( expr, isNot, stopOnFailure, macroName ) \
 | 
					#define INTERNAL_CATCH_TEST( expr, isNot, stopOnFailure, macroName ) \
 | 
				
			||||||
    Catch::Hub::getResultCapture().acceptExpression( Catch::ResultBuilder( __FILE__, __LINE__, macroName, #expr, isNot )->*expr );
 | 
					    Catch::Hub::getResultCapture().acceptExpression( Catch::ResultBuilder( __FILE__, __LINE__, macroName, #expr, isNot )->*expr );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					#define INTERNAL_CATCH_NO_THROW( expr, stopOnFailure, macroName ) \
 | 
				
			||||||
 | 
					    try \
 | 
				
			||||||
 | 
					    { \
 | 
				
			||||||
 | 
					        using namespace Catch; \
 | 
				
			||||||
 | 
					        expr; \
 | 
				
			||||||
 | 
					        Hub::getResultCapture().acceptExpression( ResultBuilder( __FILE__, __LINE__, macroName, #expr ).setResultType( ResultWas::Ok ) ); \
 | 
				
			||||||
 | 
					    } \
 | 
				
			||||||
 | 
					    catch( ... ) \
 | 
				
			||||||
 | 
					    { \
 | 
				
			||||||
 | 
					        using namespace Catch; \
 | 
				
			||||||
 | 
					        Hub::getResultCapture().acceptExpression( ResultBuilder(  __FILE__, __LINE__, macroName, #expr ).setResultType( ResultWas::ThrewException ) ); \
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
#define INTERNAL_CATCH_THROWS( expr, exceptionType, nothrow, stopOnFailure, macroName ) \
 | 
					#define INTERNAL_CATCH_THROWS( expr, exceptionType, nothrow, stopOnFailure, macroName ) \
 | 
				
			||||||
    try \
 | 
					    try \
 | 
				
			||||||
    { \
 | 
					    { \
 | 
				
			||||||
        using namespace Catch; \
 | 
					        using namespace Catch; \
 | 
				
			||||||
        expr; \
 | 
					        expr; \
 | 
				
			||||||
        ResultWas::OfType resultType = ( nothrow ) ? ResultWas::Ok : ResultWas::DidntThrowException; \
 | 
					        Hub::getResultCapture().acceptExpression( ResultBuilder( __FILE__, __LINE__, macroName, #expr ).setResultType( ResultWas::DidntThrowException ) ); \
 | 
				
			||||||
        Hub::getResultCapture().acceptExpression( ResultBuilder( __FILE__, __LINE__, macroName, #expr ).setResultType( resultType ) ); \
 | 
					 | 
				
			||||||
    } \
 | 
					    } \
 | 
				
			||||||
    catch( exceptionType ) \
 | 
					    catch( exceptionType ) \
 | 
				
			||||||
    { \
 | 
					    { \
 | 
				
			||||||
        using namespace Catch; \
 | 
					        using namespace Catch; \
 | 
				
			||||||
        ResultWas::OfType resultType = ( nothrow ) ? ResultWas::ThrewException : ResultWas::Ok; \
 | 
					        Hub::getResultCapture().acceptExpression( ResultBuilder(  __FILE__, __LINE__, macroName, #expr ).setResultType( ResultWas::Ok ) ); \
 | 
				
			||||||
        Hub::getResultCapture().acceptExpression( ResultBuilder(  __FILE__, __LINE__, macroName, #expr ).setResultType( resultType ) ); \
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -570,8 +582,7 @@ INTERNAL_CATCH_THROWS( expr, exceptionType, nothrow, stopOnFailure, macroName )
 | 
				
			|||||||
    catch( ... ) \
 | 
					    catch( ... ) \
 | 
				
			||||||
    { \
 | 
					    { \
 | 
				
			||||||
        using namespace Catch; \
 | 
					        using namespace Catch; \
 | 
				
			||||||
    ResultWas::OfType resultType = ( nothrow ) ? ResultWas::ThrewException : ResultWas::Ok; \
 | 
					        Hub::getResultCapture().acceptExpression( ResultBuilder( __FILE__, __LINE__, macroName, #expr ).setResultType( ResultWas::ThrewException ) ); \
 | 
				
			||||||
    Hub::getResultCapture().acceptExpression( ResultBuilder( __FILE__, __LINE__, macroName, #expr ).setResultType( resultType ) ); \
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user