mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Section no longer relies on copy-elision for correctness
- should address #293 - *may* address #271
This commit is contained in:
		| @@ -219,7 +219,7 @@ namespace Catch { | ||||
|  | ||||
|         void runCurrentTest( std::string& redirectedCout, std::string& redirectedCerr ) { | ||||
|             TestCaseInfo const& testCaseInfo = m_activeTestCase->getTestCaseInfo(); | ||||
|             SectionInfo testCaseSection( testCaseInfo.name, testCaseInfo.description, testCaseInfo.lineInfo ); | ||||
|             SectionInfo testCaseSection( testCaseInfo.lineInfo, testCaseInfo.name, testCaseInfo.description ); | ||||
|             m_reporter->sectionStarting( testCaseSection ); | ||||
|             Counts prevAssertions = m_totals.assertions; | ||||
|             double duration = 0; | ||||
|   | ||||
| @@ -18,22 +18,22 @@ namespace Catch { | ||||
|  | ||||
|     class Section { | ||||
|     public: | ||||
|         Section(    SourceLineInfo const& lineInfo, | ||||
|                     std::string const& name, | ||||
|                     std::string const& description = "" ); | ||||
|         Section( SectionInfo const& info ); | ||||
|         ~Section(); | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|         Section( Section const& )              = default; | ||||
|         Section( Section && )                  = default; | ||||
|         Section& operator = ( Section const& ) = default; | ||||
|         Section& operator = ( Section && )     = default; | ||||
| #  endif | ||||
|  | ||||
|         // This indicates whether the section should be executed or not | ||||
|         operator bool(); | ||||
|         operator bool() const; | ||||
|  | ||||
|     private: | ||||
|  | ||||
| #ifdef CATCH_CPP11_OR_GREATER | ||||
|         Section( Section const& )              = delete; | ||||
|         Section( Section && )                  = delete; | ||||
|         Section& operator = ( Section const& ) = delete; | ||||
|         Section& operator = ( Section && )     = delete; | ||||
| #else | ||||
|         Section( Section const& info ); | ||||
|         Section& operator = ( Section const& ); | ||||
| #endif | ||||
|         SectionInfo m_info; | ||||
|  | ||||
|         std::string m_name; | ||||
| @@ -46,10 +46,10 @@ namespace Catch { | ||||
|  | ||||
| #ifdef CATCH_CONFIG_VARIADIC_MACROS | ||||
|     #define INTERNAL_CATCH_SECTION( ... ) \ | ||||
|         if( Catch::Section INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::Section( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) | ||||
|         if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) | ||||
| #else | ||||
|     #define INTERNAL_CATCH_SECTION( name, desc ) \ | ||||
|         if( Catch::Section INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::Section( CATCH_INTERNAL_LINEINFO, name, desc ) ) | ||||
|         if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, name, desc ) ) | ||||
| #endif | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_SECTION_H_INCLUDED | ||||
|   | ||||
| @@ -15,10 +15,17 @@ | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
|     Section::Section(   SourceLineInfo const& lineInfo, | ||||
|                         std::string const& name, | ||||
|                         std::string const& description ) | ||||
|     :   m_info( name, description, lineInfo ), | ||||
|     SectionInfo::SectionInfo | ||||
|         (   SourceLineInfo const& _lineInfo, | ||||
|             std::string const& _name, | ||||
|             std::string const& _description ) | ||||
|     :   name( _name ), | ||||
|         description( _description ), | ||||
|         lineInfo( _lineInfo ) | ||||
|     {} | ||||
|  | ||||
|     Section::Section( SectionInfo const& info ) | ||||
|     :   m_info( info ), | ||||
|         m_sectionIncluded( getResultCapture().sectionStarted( m_info, m_assertions ) ) | ||||
|     { | ||||
|         m_timer.start(); | ||||
| @@ -30,7 +37,7 @@ namespace Catch { | ||||
|     } | ||||
|  | ||||
|     // This indicates whether the section should be executed or not | ||||
|     Section::operator bool() { | ||||
|     Section::operator bool() const { | ||||
|         return m_sectionIncluded; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -13,13 +13,10 @@ | ||||
| namespace Catch { | ||||
|  | ||||
|     struct SectionInfo { | ||||
|         SectionInfo(    std::string const& _name, | ||||
|                         std::string const& _description, | ||||
|                         SourceLineInfo const& _lineInfo ) | ||||
|         :   name( _name ), | ||||
|             description( _description ), | ||||
|             lineInfo( _lineInfo ) | ||||
|         {} | ||||
|         SectionInfo | ||||
|             (   SourceLineInfo const& _lineInfo, | ||||
|                 std::string const& _name, | ||||
|                 std::string const& _description = std::string() ); | ||||
|  | ||||
|         std::string name; | ||||
|         std::string description; | ||||
|   | ||||
| @@ -12,6 +12,7 @@ | ||||
| #pragma clang diagnostic ignored "-Wglobal-constructors" | ||||
| #pragma clang diagnostic ignored "-Wvariadic-macros" | ||||
| #pragma clang diagnostic ignored "-Wc99-extensions" | ||||
| #pragma clang diagnostic ignored "-Wunused-variable" | ||||
| #pragma clang diagnostic push | ||||
| #pragma clang diagnostic ignored "-Wpadded" | ||||
| #pragma clang diagnostic ignored "-Wc++98-compat" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash