mirror of
https://github.com/catchorg/Catch2.git
synced 2025-09-10 23:45:39 +02:00
Use only the ID of a message when removing it from context
This commit is contained in:
@@ -31,7 +31,7 @@ namespace Catch {
|
|||||||
|
|
||||||
ScopedMessage::~ScopedMessage() {
|
ScopedMessage::~ScopedMessage() {
|
||||||
if ( !m_moved ){
|
if ( !m_moved ){
|
||||||
getResultCapture().popScopedMessage(m_info);
|
getResultCapture().popScopedMessage(m_info.sequence);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,8 +101,8 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
Capturer::~Capturer() {
|
Capturer::~Capturer() {
|
||||||
assert( m_captured == m_messages.size() );
|
assert( m_captured == m_messages.size() );
|
||||||
for ( size_t i = 0; i < m_captured; ++i ) {
|
for (auto const& message : m_messages) {
|
||||||
m_resultCapture.popScopedMessage( m_messages[i] );
|
m_resultCapture.popScopedMessage( message.sequence );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -63,7 +63,7 @@ namespace Catch {
|
|||||||
virtual void benchmarkFailed( StringRef error ) = 0;
|
virtual void benchmarkFailed( StringRef error ) = 0;
|
||||||
|
|
||||||
virtual void pushScopedMessage( MessageInfo const& message ) = 0;
|
virtual void pushScopedMessage( MessageInfo const& message ) = 0;
|
||||||
virtual void popScopedMessage( MessageInfo const& message ) = 0;
|
virtual void popScopedMessage( unsigned int messageId ) = 0;
|
||||||
|
|
||||||
virtual void emplaceUnscopedMessage( MessageBuilder&& builder ) = 0;
|
virtual void emplaceUnscopedMessage( MessageBuilder&& builder ) = 0;
|
||||||
|
|
||||||
|
@@ -26,6 +26,7 @@ namespace Catch {
|
|||||||
std::string message;
|
std::string message;
|
||||||
SourceLineInfo lineInfo;
|
SourceLineInfo lineInfo;
|
||||||
ResultWas::OfType type;
|
ResultWas::OfType type;
|
||||||
|
// The "ID" of the message, used to know when to remove it from reporter context.
|
||||||
unsigned int sequence;
|
unsigned int sequence;
|
||||||
|
|
||||||
DEPRECATED( "Explicitly use the 'sequence' member instead" )
|
DEPRECATED( "Explicitly use the 'sequence' member instead" )
|
||||||
|
@@ -487,7 +487,7 @@ namespace Catch {
|
|||||||
Detail::g_messages.push_back( message );
|
Detail::g_messages.push_back( message );
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunContext::popScopedMessage( MessageInfo const& message ) {
|
void RunContext::popScopedMessage( unsigned int messageId ) {
|
||||||
// Note: On average, it would probably be better to look for the message
|
// Note: On average, it would probably be better to look for the message
|
||||||
// backwards. However, we do not expect to have to deal with more
|
// backwards. However, we do not expect to have to deal with more
|
||||||
// messages than low single digits, so the optimization is tiny,
|
// messages than low single digits, so the optimization is tiny,
|
||||||
@@ -496,8 +496,8 @@ namespace Catch {
|
|||||||
Detail::g_messages.erase(
|
Detail::g_messages.erase(
|
||||||
std::find_if( Detail::g_messages.begin(),
|
std::find_if( Detail::g_messages.begin(),
|
||||||
Detail::g_messages.end(),
|
Detail::g_messages.end(),
|
||||||
[id = message.sequence]( MessageInfo const& msg ) {
|
[=]( MessageInfo const& msg ) {
|
||||||
return msg.sequence == id;
|
return msg.sequence == messageId;
|
||||||
} ) );
|
} ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -95,7 +95,7 @@ namespace Catch {
|
|||||||
void benchmarkFailed( StringRef error ) override;
|
void benchmarkFailed( StringRef error ) override;
|
||||||
|
|
||||||
void pushScopedMessage( MessageInfo const& message ) override;
|
void pushScopedMessage( MessageInfo const& message ) override;
|
||||||
void popScopedMessage( MessageInfo const& message ) override;
|
void popScopedMessage( unsigned int messageId ) override;
|
||||||
|
|
||||||
void emplaceUnscopedMessage( MessageBuilder&& builder ) override;
|
void emplaceUnscopedMessage( MessageBuilder&& builder ) override;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user