diff options
| author | Martin Hořeňovský | 2026-08-01 16:52:08 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2026-08-07 20:57:42 +0200 |
| commit | a0eba50e9d56c743aff1de7a50d02a6e01e73cdc (patch) | |
| tree | fd87a006c59acd9295ec3c2856e29ee6d31ba30e /src/catch2/internal | |
| parent | 8b08d4d79514f45f7e4ce2a607ac9c94e920d1bb (diff) | |
| download | catch3-a0eba50e9d56c743aff1de7a50d02a6e01e73cdc.tar.gz | |
Make verbosity per-reporter
Diffstat (limited to 'src/catch2/internal')
| -rw-r--r-- | src/catch2/internal/catch_reporter_spec_parser.cpp | 23 | ||||
| -rw-r--r-- | src/catch2/internal/catch_reporter_spec_parser.hpp | 7 |
2 files changed, 29 insertions, 1 deletions
diff --git a/src/catch2/internal/catch_reporter_spec_parser.cpp b/src/catch2/internal/catch_reporter_spec_parser.cpp index 2b08758a..3347c082 100644 --- a/src/catch2/internal/catch_reporter_spec_parser.cpp +++ b/src/catch2/internal/catch_reporter_spec_parser.cpp @@ -93,6 +93,18 @@ namespace Catch { return {}; } } + + Optional<Verbosity> stringToVerbosity( StringRef verbosity ) { + if (verbosity == "quiet") { return Verbosity::Quiet; + } else if ( verbosity == "normal" ) { + return Verbosity::Normal; + } else if ( verbosity == "high" ) { + return Verbosity::High; + } else { + return {}; + } + } + } // namespace Detail @@ -100,6 +112,7 @@ namespace Catch { return lhs.m_name == rhs.m_name && lhs.m_outputFileName == rhs.m_outputFileName && lhs.m_colourMode == rhs.m_colourMode && + lhs.m_verbosity == rhs.m_verbosity && lhs.m_customOptions == rhs.m_customOptions; } @@ -111,6 +124,7 @@ namespace Catch { std::map<std::string, std::string> kvPairs; Optional<std::string> outputFileName; Optional<ColourMode> colourMode; + Optional<Verbosity> verbosity; // First part is always reporter name, so we skip it for ( size_t i = 1; i < parts.size(); ++i ) { @@ -148,6 +162,12 @@ namespace Catch { if ( !colourMode ) { return {}; } + } else if ( key == "verbosity" ) { + // Duplicated key + if ( verbosity ) { return {}; } + verbosity = Detail::stringToVerbosity( value ); + // Parsing failed + if ( !verbosity ) { return {}; } } else { // Unrecognized option return {}; @@ -157,6 +177,7 @@ namespace Catch { return ReporterSpec{ CATCH_MOVE( parts[0] ), CATCH_MOVE( outputFileName ), CATCH_MOVE( colourMode ), + CATCH_MOVE( verbosity), CATCH_MOVE( kvPairs ) }; } @@ -164,10 +185,12 @@ ReporterSpec::ReporterSpec( std::string name, Optional<std::string> outputFileName, Optional<ColourMode> colourMode, + Optional<Verbosity> verbosity, std::map<std::string, std::string> customOptions ): m_name( CATCH_MOVE( name ) ), m_outputFileName( CATCH_MOVE( outputFileName ) ), m_colourMode( CATCH_MOVE( colourMode ) ), + m_verbosity( CATCH_MOVE( verbosity ) ), m_customOptions( CATCH_MOVE( customOptions ) ) {} } // namespace Catch diff --git a/src/catch2/internal/catch_reporter_spec_parser.hpp b/src/catch2/internal/catch_reporter_spec_parser.hpp index 9f447ee2..41102c2c 100644 --- a/src/catch2/internal/catch_reporter_spec_parser.hpp +++ b/src/catch2/internal/catch_reporter_spec_parser.hpp @@ -25,6 +25,7 @@ namespace Catch { std::vector<std::string> splitReporterSpec( StringRef reporterSpec ); Optional<ColourMode> stringToColourMode( StringRef colourMode ); + Optional<Verbosity> stringToVerbosity( StringRef verbosity ); } /** @@ -39,6 +40,7 @@ namespace Catch { std::string m_name; Optional<std::string> m_outputFileName; Optional<ColourMode> m_colourMode; + Optional<Verbosity> m_verbosity; std::map<std::string, std::string> m_customOptions; friend bool operator==( ReporterSpec const& lhs, @@ -53,6 +55,7 @@ namespace Catch { std::string name, Optional<std::string> outputFileName, Optional<ColourMode> colourMode, + Optional<Verbosity> verbosity, std::map<std::string, std::string> customOptions ); std::string const& name() const { return m_name; } @@ -63,13 +66,15 @@ namespace Catch { Optional<ColourMode> const& colourMode() const { return m_colourMode; } + Optional<Verbosity> const& verbosity() const { return m_verbosity; } + std::map<std::string, std::string> const& customOptions() const { return m_customOptions; } }; /** - * Parses provided reporter spec string into + * Parses provided reporter spec string into actual `ReporterSpec` * * Returns empty optional on errors, e.g. * * field that is not first and not a key+value pair |