diff options
| author | Martin Hořeňovský | 2026-01-08 14:35:05 +0100 |
|---|---|---|
| committer | Martin Hořeňovský | 2026-01-11 14:53:08 +0100 |
| commit | 2580eadc4230eedf1b66841bdd27a8aacc2412a5 (patch) | |
| tree | ba8508f3ab737c0b9d11a2fd5c33d0bdbfcd457e /src/catch2/catch_message.cpp | |
| parent | b59f4f352291a89c4a3fe1488eeccbddeea85625 (diff) | |
| download | catch3-2580eadc4230eedf1b66841bdd27a8aacc2412a5.tar.gz | |
Add UNSCOPED_CAPTURE
Closes #2954
Closes #3010
Diffstat (limited to 'src/catch2/catch_message.cpp')
| -rw-r--r-- | src/catch2/catch_message.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/catch2/catch_message.cpp b/src/catch2/catch_message.cpp index dc7d5678..870651e3 100644 --- a/src/catch2/catch_message.cpp +++ b/src/catch2/catch_message.cpp @@ -38,7 +38,9 @@ namespace Catch { Capturer::Capturer( StringRef macroName, SourceLineInfo const& lineInfo, ResultWas::OfType resultType, - StringRef names ) { + StringRef names, + bool isScoped): + m_isScoped(isScoped) { auto trimmed = [&] (size_t start, size_t end) { while (names[start] == ',' || isspace(static_cast<unsigned char>(names[start]))) { ++start; @@ -99,15 +101,21 @@ namespace Catch { } Capturer::~Capturer() { assert( m_captured == m_messages.size() ); - for (auto const& message : m_messages) { - IResultCapture::popScopedMessage( message.sequence ); + if ( m_isScoped ) { + for ( auto const& message : m_messages ) { + IResultCapture::popScopedMessage( message.sequence ); + } } } void Capturer::captureValue( size_t index, std::string const& value ) { assert( index < m_messages.size() ); m_messages[index].message += value; - IResultCapture::pushScopedMessage( CATCH_MOVE( m_messages[index] ) ); + if ( m_isScoped ) { + IResultCapture::pushScopedMessage( CATCH_MOVE( m_messages[index] ) ); + } else { + IResultCapture::addUnscopedMessage( CATCH_MOVE( m_messages[index] ) ); + } m_captured++; } |