Skip to content

Commit d34e490

Browse files
committed
Add Unscoped Capture Logger
1 parent a1c7ee1 commit d34e490

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed

extras/catch_amalgamated.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
// SPDX-License-Identifier: BSL-1.0
88

99
// Catch v3.9.0
10-
// Generated: 2025-07-24 22:00:25.173359
10+
// Generated: 2025-07-30 11:38:21.999311
1111
// ----------------------------------------------------------
1212
// This file is an amalgamation of multiple different files.
1313
// You probably shouldn't edit it directly.
@@ -3981,10 +3981,10 @@ namespace Catch {
39813981
// To avoid having to handle TFE explicitly everywhere, we just
39823982
// rethrow it so that it goes back up the caller.
39833983
catch( TestFailureException& ) {
3984-
std::rethrow_exception(std::current_exception());
3984+
return "{ nested assertion failed }";
39853985
}
39863986
catch( TestSkipException& ) {
3987-
std::rethrow_exception(std::current_exception());
3987+
return "{ nested SKIP() called }";
39883988
}
39893989
catch( std::exception const& ex ) {
39903990
return ex.what();

extras/catch_amalgamated.hpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
// SPDX-License-Identifier: BSL-1.0
88

99
// Catch v3.9.0
10-
// Generated: 2025-07-24 22:00:24.654688
10+
// Generated: 2025-07-30 11:38:20.260806
1111
// ----------------------------------------------------------
1212
// This file is an amalgamation of multiple different files.
1313
// You probably shouldn't edit it directly.
@@ -2151,9 +2151,7 @@ namespace Catch {
21512151
auto analysis = Detail::analyse(*cfg, samples.data(), samples.data() + samples.size());
21522152
BenchmarkStats<> stats{ CATCH_MOVE(info), CATCH_MOVE(analysis.samples), analysis.mean, analysis.standard_deviation, analysis.outliers, analysis.outlier_variance };
21532153
getResultCapture().benchmarkEnded(stats);
2154-
} CATCH_CATCH_ANON (TestFailureException const&) {
2155-
getResultCapture().benchmarkFailed("Benchmark failed due to failed assertion"_sr);
2156-
} CATCH_CATCH_ALL{
2154+
} CATCH_CATCH_ALL {
21572155
getResultCapture().benchmarkFailed(translateActiveException());
21582156
// We let the exception go further up so that the
21592157
// test case is marked as failed.
@@ -4062,6 +4060,14 @@ namespace Catch {
40624060
#__VA_ARGS__##_catch_sr ); \
40634061
varName.captureValues( 0, __VA_ARGS__ )
40644062

4063+
///////////////////////////////////////////////////////////////////////////////
4064+
#define INTERNAL_CATCH_UNSCOPED_CAPTURE( varName, macroName, ... ) \
4065+
Catch::getResultCapture().emplaceUnscopedMessage(Catch::Capturer varName( macroName##_catch_sr, \
4066+
CATCH_INTERNAL_LINEINFO, \
4067+
Catch::ResultWas::Info, \
4068+
#__VA_ARGS__##_catch_sr ); \
4069+
varName.captureValues( 0, __VA_ARGS__ ))
4070+
40654071
///////////////////////////////////////////////////////////////////////////////
40664072
#define INTERNAL_CATCH_INFO( macroName, log ) \
40674073
const Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log )
@@ -4077,27 +4083,32 @@ namespace Catch {
40774083
#define CATCH_UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "CATCH_UNSCOPED_INFO", msg )
40784084
#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( "CATCH_WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg )
40794085
#define CATCH_CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CATCH_CAPTURE", __VA_ARGS__ )
4086+
#define CATCH_UNSCOPED_CAPTURE( ... ) INTERNAL_CATCH_UNSCOPED_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CATCH_UNSCOPED_CAPTURE", __VA_ARGS__ )
40804087

40814088
#elif defined(CATCH_CONFIG_PREFIX_MESSAGES) && defined(CATCH_CONFIG_DISABLE)
40824089

40834090
#define CATCH_INFO( msg ) (void)(0)
40844091
#define CATCH_UNSCOPED_INFO( msg ) (void)(0)
40854092
#define CATCH_WARN( msg ) (void)(0)
40864093
#define CATCH_CAPTURE( ... ) (void)(0)
4094+
#define CATCH_UNSCOPED_CAPTURE( ... ) (void)(0)
40874095

40884096
#elif !defined(CATCH_CONFIG_PREFIX_MESSAGES) && !defined(CATCH_CONFIG_DISABLE)
40894097

40904098
#define INFO( msg ) INTERNAL_CATCH_INFO( "INFO", msg )
40914099
#define UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "UNSCOPED_INFO", msg )
40924100
#define WARN( msg ) INTERNAL_CATCH_MSG( "WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg )
40934101
#define CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CAPTURE", __VA_ARGS__ )
4102+
#define UNSCOPED_CAPTURE( ... ) INTERNAL_CATCH_UNSCOPED_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "UNSCOPED_CAPTURE", __VA_ARGS__ )
4103+
40944104

40954105
#elif !defined(CATCH_CONFIG_PREFIX_MESSAGES) && defined(CATCH_CONFIG_DISABLE)
40964106

40974107
#define INFO( msg ) (void)(0)
40984108
#define UNSCOPED_INFO( msg ) (void)(0)
40994109
#define WARN( msg ) (void)(0)
41004110
#define CAPTURE( ... ) (void)(0)
4111+
#define UNSCOPED_CAPTURE( ... ) (void)(0)
41014112

41024113
#endif // end of user facing macro declarations
41034114

@@ -6241,9 +6252,13 @@ namespace Catch {
62416252
__assume( false );
62426253
# elif defined( __GNUC__ )
62436254
__builtin_unreachable();
6255+
# else // vv platform without known optimization hint
6256+
std::terminate();
62446257
# endif
6245-
# endif // ^^ NDEBUG
6258+
# else // ^^ NDEBUG
6259+
// For non-release builds, we prefer termination on bug over UB
62466260
std::terminate();
6261+
# endif //
62476262
}
62486263

62496264
} // namespace Detail

src/catch2/catch_message.hpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,14 @@ namespace Catch {
105105
#__VA_ARGS__##_catch_sr ); \
106106
varName.captureValues( 0, __VA_ARGS__ )
107107

108+
///////////////////////////////////////////////////////////////////////////////
109+
#define INTERNAL_CATCH_UNSCOPED_CAPTURE( varName, macroName, ... ) \
110+
Catch::getResultCapture().emplaceUnscopedMessage(Catch::Capturer varName( macroName##_catch_sr, \
111+
CATCH_INTERNAL_LINEINFO, \
112+
Catch::ResultWas::Info, \
113+
#__VA_ARGS__##_catch_sr ); \
114+
varName.captureValues( 0, __VA_ARGS__ ))
115+
108116
///////////////////////////////////////////////////////////////////////////////
109117
#define INTERNAL_CATCH_INFO( macroName, log ) \
110118
const Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log )
@@ -120,27 +128,32 @@ namespace Catch {
120128
#define CATCH_UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "CATCH_UNSCOPED_INFO", msg )
121129
#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( "CATCH_WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg )
122130
#define CATCH_CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CATCH_CAPTURE", __VA_ARGS__ )
131+
#define CATCH_UNSCOPED_CAPTURE( ... ) INTERNAL_CATCH_UNSCOPED_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CATCH_UNSCOPED_CAPTURE", __VA_ARGS__ )
123132

124133
#elif defined(CATCH_CONFIG_PREFIX_MESSAGES) && defined(CATCH_CONFIG_DISABLE)
125134

126135
#define CATCH_INFO( msg ) (void)(0)
127136
#define CATCH_UNSCOPED_INFO( msg ) (void)(0)
128137
#define CATCH_WARN( msg ) (void)(0)
129138
#define CATCH_CAPTURE( ... ) (void)(0)
139+
#define CATCH_UNSCOPED_CAPTURE( ... ) (void)(0)
130140

131141
#elif !defined(CATCH_CONFIG_PREFIX_MESSAGES) && !defined(CATCH_CONFIG_DISABLE)
132142

133143
#define INFO( msg ) INTERNAL_CATCH_INFO( "INFO", msg )
134144
#define UNSCOPED_INFO( msg ) INTERNAL_CATCH_UNSCOPED_INFO( "UNSCOPED_INFO", msg )
135145
#define WARN( msg ) INTERNAL_CATCH_MSG( "WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg )
136146
#define CAPTURE( ... ) INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CAPTURE", __VA_ARGS__ )
147+
#define UNSCOPED_CAPTURE( ... ) INTERNAL_CATCH_UNSCOPED_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "UNSCOPED_CAPTURE", __VA_ARGS__ )
148+
137149

138150
#elif !defined(CATCH_CONFIG_PREFIX_MESSAGES) && defined(CATCH_CONFIG_DISABLE)
139151

140152
#define INFO( msg ) (void)(0)
141153
#define UNSCOPED_INFO( msg ) (void)(0)
142154
#define WARN( msg ) (void)(0)
143155
#define CAPTURE( ... ) (void)(0)
156+
#define UNSCOPED_CAPTURE( ... ) (void)(0)
144157

145158
#endif // end of user facing macro declarations
146159

0 commit comments

Comments
 (0)