Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMartin Hořeňovský2025-08-26 12:36:06 +0200
committerMartin Hořeňovský2025-08-26 12:37:52 +0200
commit227af796b4ede6258f9b1ff8b69cd1f03d32f662 (patch)
treecfffe971cbc8d28b4de33c3f87bd590050c679dd
parent33adb4c779feaa3a98bb45ec1ebaf2864bb110b7 (diff)
downloadcatch3-227af796b4ede6258f9b1ff8b69cd1f03d32f662.tar.gz
Move MessageInfos into the run context
Together with the previous change, this means that `ScopedMessage` only needs to keep around a single unsigned int.
-rw-r--r--src/catch2/catch_message.cpp15
-rw-r--r--src/catch2/catch_message.hpp2
-rw-r--r--src/catch2/interfaces/catch_interfaces_capture.hpp2
-rw-r--r--src/catch2/internal/catch_run_context.cpp4
-rw-r--r--src/catch2/internal/catch_run_context.hpp2
5 files changed, 12 insertions, 13 deletions
diff --git a/src/catch2/catch_message.cpp b/src/catch2/catch_message.cpp
index 675e85f6..adb9b476 100644
--- a/src/catch2/catch_message.cpp
+++ b/src/catch2/catch_message.cpp
@@ -19,20 +19,19 @@ namespace Catch {
ScopedMessage::ScopedMessage( MessageBuilder&& builder ):
- m_info( CATCH_MOVE(builder.m_info) ) {
- m_info.message = builder.m_stream.str();
- getResultCapture().pushScopedMessage( m_info );
+ m_messageId( builder.m_info.sequence ) {
+ MessageInfo info( CATCH_MOVE( builder.m_info ) );
+ info.message = builder.m_stream.str();
+ getResultCapture().pushScopedMessage( CATCH_MOVE(info) );
}
ScopedMessage::ScopedMessage( ScopedMessage&& old ) noexcept:
- m_info( CATCH_MOVE( old.m_info ) ) {
+ m_messageId( old.m_messageId ) {
old.m_moved = true;
}
ScopedMessage::~ScopedMessage() {
- if ( !m_moved ){
- getResultCapture().popScopedMessage(m_info.sequence);
- }
+ if ( !m_moved ) { getResultCapture().popScopedMessage( m_messageId ); }
}
@@ -109,7 +108,7 @@ namespace Catch {
void Capturer::captureValue( size_t index, std::string const& value ) {
assert( index < m_messages.size() );
m_messages[index].message += value;
- m_resultCapture.pushScopedMessage( m_messages[index] );
+ m_resultCapture.pushScopedMessage( CATCH_MOVE(m_messages[index]) );
m_captured++;
}
diff --git a/src/catch2/catch_message.hpp b/src/catch2/catch_message.hpp
index 0a738341..db3d682a 100644
--- a/src/catch2/catch_message.hpp
+++ b/src/catch2/catch_message.hpp
@@ -57,7 +57,7 @@ namespace Catch {
ScopedMessage( ScopedMessage&& old ) noexcept;
~ScopedMessage();
- MessageInfo m_info;
+ unsigned int m_messageId;
bool m_moved = false;
};
diff --git a/src/catch2/interfaces/catch_interfaces_capture.hpp b/src/catch2/interfaces/catch_interfaces_capture.hpp
index 64f906a5..b4fee6cd 100644
--- a/src/catch2/interfaces/catch_interfaces_capture.hpp
+++ b/src/catch2/interfaces/catch_interfaces_capture.hpp
@@ -62,7 +62,7 @@ namespace Catch {
virtual void benchmarkEnded( BenchmarkStats<> const& stats ) = 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 emplaceUnscopedMessage( MessageBuilder&& builder ) = 0;
diff --git a/src/catch2/internal/catch_run_context.cpp b/src/catch2/internal/catch_run_context.cpp
index b6edddb3..3ca15fd0 100644
--- a/src/catch2/internal/catch_run_context.cpp
+++ b/src/catch2/internal/catch_run_context.cpp
@@ -483,8 +483,8 @@ namespace Catch {
m_reporter->benchmarkFailed( error );
}
- void RunContext::pushScopedMessage( MessageInfo const& message ) {
- Detail::g_messages.push_back( message );
+ void RunContext::pushScopedMessage( MessageInfo&& message ) {
+ Detail::g_messages.push_back( CATCH_MOVE(message) );
}
void RunContext::popScopedMessage( unsigned int messageId ) {
diff --git a/src/catch2/internal/catch_run_context.hpp b/src/catch2/internal/catch_run_context.hpp
index 892926a0..1ff9caf6 100644
--- a/src/catch2/internal/catch_run_context.hpp
+++ b/src/catch2/internal/catch_run_context.hpp
@@ -94,7 +94,7 @@ namespace Catch {
void benchmarkEnded( BenchmarkStats<> const& stats ) override;
void benchmarkFailed( StringRef error ) override;
- void pushScopedMessage( MessageInfo const& message ) override;
+ void pushScopedMessage( MessageInfo&& message ) override;
void popScopedMessage( unsigned int messageId ) override;
void emplaceUnscopedMessage( MessageBuilder&& builder ) override;