mirror of
https://github.com/catchorg/Catch2.git
synced 2025-09-10 15:35:39 +02:00
Move MessageInfos into the run context
Together with the previous change, this means that `ScopedMessage` only needs to keep around a single unsigned int.
This commit is contained in:
@@ -19,20 +19,19 @@ namespace Catch {
|
|||||||
|
|
||||||
|
|
||||||
ScopedMessage::ScopedMessage( MessageBuilder&& builder ):
|
ScopedMessage::ScopedMessage( MessageBuilder&& builder ):
|
||||||
m_info( CATCH_MOVE(builder.m_info) ) {
|
m_messageId( builder.m_info.sequence ) {
|
||||||
m_info.message = builder.m_stream.str();
|
MessageInfo info( CATCH_MOVE( builder.m_info ) );
|
||||||
getResultCapture().pushScopedMessage( m_info );
|
info.message = builder.m_stream.str();
|
||||||
|
getResultCapture().pushScopedMessage( CATCH_MOVE(info) );
|
||||||
}
|
}
|
||||||
|
|
||||||
ScopedMessage::ScopedMessage( ScopedMessage&& old ) noexcept:
|
ScopedMessage::ScopedMessage( ScopedMessage&& old ) noexcept:
|
||||||
m_info( CATCH_MOVE( old.m_info ) ) {
|
m_messageId( old.m_messageId ) {
|
||||||
old.m_moved = true;
|
old.m_moved = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScopedMessage::~ScopedMessage() {
|
ScopedMessage::~ScopedMessage() {
|
||||||
if ( !m_moved ){
|
if ( !m_moved ) { getResultCapture().popScopedMessage( m_messageId ); }
|
||||||
getResultCapture().popScopedMessage(m_info.sequence);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -109,7 +108,7 @@ namespace Catch {
|
|||||||
void Capturer::captureValue( size_t index, std::string const& value ) {
|
void Capturer::captureValue( size_t index, std::string const& value ) {
|
||||||
assert( index < m_messages.size() );
|
assert( index < m_messages.size() );
|
||||||
m_messages[index].message += value;
|
m_messages[index].message += value;
|
||||||
m_resultCapture.pushScopedMessage( m_messages[index] );
|
m_resultCapture.pushScopedMessage( CATCH_MOVE(m_messages[index]) );
|
||||||
m_captured++;
|
m_captured++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -57,7 +57,7 @@ namespace Catch {
|
|||||||
ScopedMessage( ScopedMessage&& old ) noexcept;
|
ScopedMessage( ScopedMessage&& old ) noexcept;
|
||||||
~ScopedMessage();
|
~ScopedMessage();
|
||||||
|
|
||||||
MessageInfo m_info;
|
unsigned int m_messageId;
|
||||||
bool m_moved = false;
|
bool m_moved = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -62,7 +62,7 @@ namespace Catch {
|
|||||||
virtual void benchmarkEnded( BenchmarkStats<> const& stats ) = 0;
|
virtual void benchmarkEnded( BenchmarkStats<> const& stats ) = 0;
|
||||||
virtual void benchmarkFailed( StringRef error ) = 0;
|
virtual void benchmarkFailed( StringRef error ) = 0;
|
||||||
|
|
||||||
virtual void pushScopedMessage( MessageInfo const& message ) = 0;
|
virtual void pushScopedMessage( MessageInfo&& message ) = 0;
|
||||||
virtual void popScopedMessage( unsigned int messageId ) = 0;
|
virtual void popScopedMessage( unsigned int messageId ) = 0;
|
||||||
|
|
||||||
virtual void emplaceUnscopedMessage( MessageBuilder&& builder ) = 0;
|
virtual void emplaceUnscopedMessage( MessageBuilder&& builder ) = 0;
|
||||||
|
@@ -483,8 +483,8 @@ namespace Catch {
|
|||||||
m_reporter->benchmarkFailed( error );
|
m_reporter->benchmarkFailed( error );
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunContext::pushScopedMessage( MessageInfo const& message ) {
|
void RunContext::pushScopedMessage( MessageInfo&& message ) {
|
||||||
Detail::g_messages.push_back( message );
|
Detail::g_messages.push_back( CATCH_MOVE(message) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunContext::popScopedMessage( unsigned int messageId ) {
|
void RunContext::popScopedMessage( unsigned int messageId ) {
|
||||||
|
@@ -94,7 +94,7 @@ namespace Catch {
|
|||||||
void benchmarkEnded( BenchmarkStats<> const& stats ) override;
|
void benchmarkEnded( BenchmarkStats<> const& stats ) override;
|
||||||
void benchmarkFailed( StringRef error ) override;
|
void benchmarkFailed( StringRef error ) override;
|
||||||
|
|
||||||
void pushScopedMessage( MessageInfo const& message ) override;
|
void pushScopedMessage( MessageInfo&& message ) override;
|
||||||
void popScopedMessage( unsigned int messageId ) override;
|
void popScopedMessage( unsigned int messageId ) override;
|
||||||
|
|
||||||
void emplaceUnscopedMessage( MessageBuilder&& builder ) override;
|
void emplaceUnscopedMessage( MessageBuilder&& builder ) override;
|
||||||
|
Reference in New Issue
Block a user