mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 12:17:11 +01:00 
			
		
		
		
	Pass result disposition into RunContext::populateReaction directly
This avoids implicit dataflow through RunContext::m_lastAssertionInfo, which will be useful in later refactoring.
This commit is contained in:
		| @@ -612,7 +612,8 @@ namespace Catch { | ||||
|         } | ||||
|         else { | ||||
|             reportExpr(info, ResultWas::ExpressionFailed, &expr, negated ); | ||||
|             populateReaction( reaction ); | ||||
|             populateReaction( | ||||
|                 reaction, info.resultDisposition & ResultDisposition::Normal ); | ||||
|         } | ||||
|         resetAssertionInfo(); | ||||
|     } | ||||
| @@ -647,7 +648,8 @@ namespace Catch { | ||||
|         const auto isOk = assertionResult.isOk(); | ||||
|         assertionEnded( CATCH_MOVE(assertionResult) ); | ||||
|         if ( !isOk ) { | ||||
|             populateReaction( reaction ); | ||||
|             populateReaction( | ||||
|                 reaction, info.resultDisposition & ResultDisposition::Normal ); | ||||
|         } else if ( resultType == ResultWas::ExplicitSkip ) { | ||||
|             // TODO: Need to handle this explicitly, as ExplicitSkip is | ||||
|             // considered "OK" | ||||
| @@ -673,13 +675,15 @@ namespace Catch { | ||||
|         data.message = CATCH_MOVE(message); | ||||
|         AssertionResult assertionResult{ info, CATCH_MOVE(data) }; | ||||
|         assertionEnded( CATCH_MOVE(assertionResult) ); | ||||
|         populateReaction( reaction ); | ||||
|         populateReaction( reaction, | ||||
|                           info.resultDisposition & ResultDisposition::Normal ); | ||||
|         resetAssertionInfo(); | ||||
|     } | ||||
|  | ||||
|     void RunContext::populateReaction( AssertionReaction& reaction ) { | ||||
|     void RunContext::populateReaction( AssertionReaction& reaction, | ||||
|                                        bool has_normal_disposition ) { | ||||
|         reaction.shouldDebugBreak = m_shouldDebugBreak; | ||||
|         reaction.shouldThrow = aborting() || (m_lastAssertionInfo.resultDisposition & ResultDisposition::Normal); | ||||
|         reaction.shouldThrow = aborting() || has_normal_disposition; | ||||
|     } | ||||
|  | ||||
|     void RunContext::handleIncomplete( | ||||
| @@ -706,7 +710,10 @@ namespace Catch { | ||||
|  | ||||
|         const auto isOk = assertionResult.isOk(); | ||||
|         assertionEnded( CATCH_MOVE(assertionResult) ); | ||||
|         if ( !isOk ) { populateReaction( reaction ); } | ||||
|         if ( !isOk ) { | ||||
|             populateReaction( | ||||
|                 reaction, info.resultDisposition & ResultDisposition::Normal ); | ||||
|         } | ||||
|         resetAssertionInfo(); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -129,7 +129,7 @@ namespace Catch { | ||||
|                     ITransientExpression const *expr, | ||||
|                     bool negated ); | ||||
|  | ||||
|         void populateReaction( AssertionReaction& reaction ); | ||||
|         void populateReaction( AssertionReaction& reaction, bool has_normal_disposition ); | ||||
|  | ||||
|     private: | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský