mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 04:07:10 +01:00 
			
		
		
		
	Move around message macros and implementation
This commit is contained in:
		| @@ -96,4 +96,59 @@ namespace Catch { | |||||||
|  |  | ||||||
| } // end namespace Catch | } // end namespace Catch | ||||||
|  |  | ||||||
|  | /////////////////////////////////////////////////////////////////////////////// | ||||||
|  | #define INTERNAL_CATCH_MSG( macroName, messageType, resultDisposition, ... ) \ | ||||||
|  |     do { \ | ||||||
|  |         Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::StringRef(), resultDisposition ); \ | ||||||
|  |         catchAssertionHandler.handleMessage( messageType, ( Catch::MessageStream() << __VA_ARGS__ + ::Catch::StreamEndStop() ).m_stream.str() ); \ | ||||||
|  |         INTERNAL_CATCH_REACT( catchAssertionHandler ) \ | ||||||
|  |     } while( false ) | ||||||
|  |  | ||||||
|  | /////////////////////////////////////////////////////////////////////////////// | ||||||
|  | #define INTERNAL_CATCH_CAPTURE( varName, macroName, ... ) \ | ||||||
|  |     auto varName = Catch::Capturer( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info, #__VA_ARGS__ ); \ | ||||||
|  |     varName.captureValues( 0, __VA_ARGS__ ) | ||||||
|  |  | ||||||
|  | /////////////////////////////////////////////////////////////////////////////// | ||||||
|  | #define INTERNAL_CATCH_INFO( macroName, log ) \ | ||||||
|  |     Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log ) | ||||||
|  |  | ||||||
|  | /////////////////////////////////////////////////////////////////////////////// | ||||||
|  | #define INTERNAL_CATCH_UNSCOPED_INFO( macroName, log ) \ | ||||||
|  |     Catch::getResultCapture().emplaceUnscopedMessage( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #if defined(CATCH_CONFIG_PREFIX_ALL) && !defined(CATCH_CONFIG_DISABLE) | ||||||
|  |  | ||||||
|  |   #define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( "CATCH_INFO", msg ) | ||||||
|  |   #define CATCH_UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "CATCH_UNSCOPED_INFO", msg ) | ||||||
|  |   #define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( "CATCH_WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg ) | ||||||
|  |   #define CATCH_CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CATCH_CAPTURE", __VA_ARGS__ ) | ||||||
|  |  | ||||||
|  | #elif defined(CATCH_CONFIG_PREFIX_ALL) && defined(CATCH_CONFIG_DISABLE) | ||||||
|  |  | ||||||
|  |   #define CATCH_INFO( msg )          (void)(0) | ||||||
|  |   #define CATCH_UNSCOPED_INFO( msg ) (void)(0) | ||||||
|  |   #define CATCH_WARN( msg )          (void)(0) | ||||||
|  |   #define CATCH_CAPTURE( ... )       (void)(0) | ||||||
|  |  | ||||||
|  | #elif !defined(CATCH_CONFIG_PREFIX_ALL) && !defined(CATCH_CONFIG_DISABLE) | ||||||
|  |  | ||||||
|  |   #define INFO( msg ) INTERNAL_CATCH_INFO( "INFO", msg ) | ||||||
|  |   #define UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "UNSCOPED_INFO", msg ) | ||||||
|  |   #define WARN( msg ) INTERNAL_CATCH_MSG( "WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg ) | ||||||
|  |   #define CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CAPTURE", __VA_ARGS__ ) | ||||||
|  |  | ||||||
|  | #elif !defined(CATCH_CONFIG_PREFIX_ALL) && defined(CATCH_CONFIG_DISABLE) | ||||||
|  |  | ||||||
|  |   #define INFO( msg )          (void)(0) | ||||||
|  |   #define UNSCOPED_INFO( msg ) (void)(0) | ||||||
|  |   #define WARN( msg )          (void)(0) | ||||||
|  |   #define CAPTURE( ... )       (void)(0) | ||||||
|  |  | ||||||
|  | #endif // end of user facing macro declarations | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif // TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED | #endif // TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ | |||||||
| #define TWOBLUECUBES_CATCH_TEST_MACROS_HPP_INCLUDED | #define TWOBLUECUBES_CATCH_TEST_MACROS_HPP_INCLUDED | ||||||
|  |  | ||||||
| #include <catch2/internal/catch_test_macro_impl.hpp> | #include <catch2/internal/catch_test_macro_impl.hpp> | ||||||
|  | #include <catch2/catch_message.hpp> | ||||||
| #include <catch2/interfaces/catch_interfaces_exception.hpp> | #include <catch2/interfaces/catch_interfaces_exception.hpp> | ||||||
| #include <catch2/internal/catch_preprocessor.hpp> | #include <catch2/internal/catch_preprocessor.hpp> | ||||||
| #include <catch2/internal/catch_section.hpp> | #include <catch2/internal/catch_section.hpp> | ||||||
| @@ -34,11 +35,6 @@ | |||||||
| #define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CATCH_CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr ) | #define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CATCH_CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr ) | ||||||
| #define CATCH_CHECK_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CATCH_CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) | #define CATCH_CHECK_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CATCH_CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) | ||||||
|  |  | ||||||
| #define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( "CATCH_INFO", msg ) |  | ||||||
| #define CATCH_UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "CATCH_UNSCOPED_INFO", msg ) |  | ||||||
| #define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( "CATCH_WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg ) |  | ||||||
| #define CATCH_CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CATCH_CAPTURE",__VA_ARGS__ ) |  | ||||||
|  |  | ||||||
| #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) | #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) | ||||||
| #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) | #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) | ||||||
| #define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | #define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | ||||||
| @@ -90,12 +86,6 @@ | |||||||
| #define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr ) | #define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( "CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr ) | ||||||
| #define CHECK_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) | #define CHECK_NOTHROW( ... ) INTERNAL_CATCH_NO_THROW( "CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) | ||||||
|  |  | ||||||
|  |  | ||||||
| #define INFO( msg ) INTERNAL_CATCH_INFO( "INFO", msg ) |  | ||||||
| #define UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "UNSCOPED_INFO", msg ) |  | ||||||
| #define WARN( msg ) INTERNAL_CATCH_MSG( "WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg ) |  | ||||||
| #define CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CAPTURE",__VA_ARGS__ ) |  | ||||||
|  |  | ||||||
| #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) | #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) | ||||||
| #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) | #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) | ||||||
| #define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | #define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | ||||||
| @@ -153,11 +143,6 @@ | |||||||
| #define CATCH_CHECK_THROWS_AS( expr, exceptionType ) (void)(0) | #define CATCH_CHECK_THROWS_AS( expr, exceptionType ) (void)(0) | ||||||
| #define CATCH_CHECK_NOTHROW( ... ) (void)(0) | #define CATCH_CHECK_NOTHROW( ... ) (void)(0) | ||||||
|  |  | ||||||
| #define CATCH_INFO( msg )          (void)(0) |  | ||||||
| #define CATCH_UNSCOPED_INFO( msg ) (void)(0) |  | ||||||
| #define CATCH_WARN( msg )          (void)(0) |  | ||||||
| #define CATCH_CAPTURE( msg )       (void)(0) |  | ||||||
|  |  | ||||||
| #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) | #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) | ||||||
| #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) | #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) | ||||||
| #define CATCH_METHOD_AS_TEST_CASE( method, ... ) | #define CATCH_METHOD_AS_TEST_CASE( method, ... ) | ||||||
| @@ -201,11 +186,6 @@ | |||||||
| #define CHECK_THROWS_AS( expr, exceptionType ) (void)(0) | #define CHECK_THROWS_AS( expr, exceptionType ) (void)(0) | ||||||
| #define CHECK_NOTHROW( ... ) (void)(0) | #define CHECK_NOTHROW( ... ) (void)(0) | ||||||
|  |  | ||||||
| #define INFO( msg ) (void)(0) |  | ||||||
| #define UNSCOPED_INFO( msg ) (void)(0) |  | ||||||
| #define WARN( msg ) (void)(0) |  | ||||||
| #define CAPTURE( msg ) (void)(0) |  | ||||||
|  |  | ||||||
| #define TEST_CASE( ... )  INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__) | #define TEST_CASE( ... )  INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__) | ||||||
| #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) | #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )) | ||||||
| #define METHOD_AS_TEST_CASE( method, ... ) | #define METHOD_AS_TEST_CASE( method, ... ) | ||||||
|   | |||||||
| @@ -10,7 +10,6 @@ | |||||||
|  |  | ||||||
| #include <catch2/internal/catch_assertionhandler.hpp> | #include <catch2/internal/catch_assertionhandler.hpp> | ||||||
| #include <catch2/interfaces/catch_interfaces_capture.hpp> | #include <catch2/interfaces/catch_interfaces_capture.hpp> | ||||||
| #include <catch2/catch_message.hpp> |  | ||||||
| #include <catch2/catch_stringref.hpp> | #include <catch2/catch_stringref.hpp> | ||||||
|  |  | ||||||
| // We need this suppression to leak, because it took until GCC 9 | // We need this suppression to leak, because it took until GCC 9 | ||||||
| @@ -120,26 +119,6 @@ | |||||||
|     } while( false ) |     } while( false ) | ||||||
|  |  | ||||||
|  |  | ||||||
| /////////////////////////////////////////////////////////////////////////////// |  | ||||||
| #define INTERNAL_CATCH_MSG( macroName, messageType, resultDisposition, ... ) \ |  | ||||||
|     do { \ |  | ||||||
|         Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::StringRef(), resultDisposition ); \ |  | ||||||
|         catchAssertionHandler.handleMessage( messageType, ( Catch::MessageStream() << __VA_ARGS__ + ::Catch::StreamEndStop() ).m_stream.str() ); \ |  | ||||||
|         INTERNAL_CATCH_REACT( catchAssertionHandler ) \ |  | ||||||
|     } while( false ) |  | ||||||
|  |  | ||||||
| /////////////////////////////////////////////////////////////////////////////// |  | ||||||
| #define INTERNAL_CATCH_CAPTURE( varName, macroName, ... ) \ |  | ||||||
|     auto varName = Catch::Capturer( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info, #__VA_ARGS__ ); \ |  | ||||||
|     varName.captureValues( 0, __VA_ARGS__ ) |  | ||||||
|  |  | ||||||
| /////////////////////////////////////////////////////////////////////////////// |  | ||||||
| #define INTERNAL_CATCH_INFO( macroName, log ) \ |  | ||||||
|     Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log ) |  | ||||||
|  |  | ||||||
| /////////////////////////////////////////////////////////////////////////////// |  | ||||||
| #define INTERNAL_CATCH_UNSCOPED_INFO( macroName, log ) \ |  | ||||||
|     Catch::getResultCapture().emplaceUnscopedMessage( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log ) |  | ||||||
|  |  | ||||||
| /////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////// | ||||||
| // Although this is matcher-based, it can be used with just a string | // Although this is matcher-based, it can be used with just a string | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský