mirror of
https://github.com/catchorg/Catch2.git
synced 2025-08-01 12:55:40 +02:00
Check that reporter supports requested verbosity
This commit is contained in:
@@ -49,12 +49,18 @@ namespace Catch {
|
||||
stream( _config.stream() )
|
||||
{
|
||||
m_reporterPrefs.shouldRedirectStdOut = false;
|
||||
CATCH_ENFORCE( getSupportedVerbosities().count( m_config->verbosity() ), "Verbosity level not supported by this reporter" );
|
||||
}
|
||||
|
||||
virtual ReporterPreferences getPreferences() const override {
|
||||
return m_reporterPrefs;
|
||||
}
|
||||
|
||||
virtual std::set<Verbosity> const& getSupportedVerbosities() const override {
|
||||
static std::set<Verbosity> supported{ Verbosity::Normal };
|
||||
return supported;
|
||||
}
|
||||
|
||||
virtual ~StreamingReporterBase() override;
|
||||
|
||||
virtual void noMatchingTestCases( std::string const& ) override {}
|
||||
@@ -155,6 +161,7 @@ namespace Catch {
|
||||
stream( _config.stream() )
|
||||
{
|
||||
m_reporterPrefs.shouldRedirectStdOut = false;
|
||||
CATCH_ENFORCE( getSupportedVerbosities().count( m_config->verbosity() ), "Verbosity level not supported by this reporter" );
|
||||
}
|
||||
~CumulativeReporterBase();
|
||||
|
||||
@@ -162,6 +169,11 @@ namespace Catch {
|
||||
return m_reporterPrefs;
|
||||
}
|
||||
|
||||
virtual std::set<Verbosity> const& getSupportedVerbosities() const override {
|
||||
static std::set<Verbosity> supported{ Verbosity::Normal };
|
||||
return supported;
|
||||
}
|
||||
|
||||
virtual void testRunStarting( TestRunInfo const& ) override {}
|
||||
virtual void testGroupStarting( GroupInfo const& ) override {}
|
||||
|
||||
|
@@ -15,9 +15,23 @@ namespace Catch {
|
||||
class MultipleReporters : public IStreamingReporter {
|
||||
typedef std::vector<IStreamingReporterPtr> Reporters;
|
||||
Reporters m_reporters;
|
||||
std::set<Verbosity> m_verbosities;
|
||||
|
||||
public:
|
||||
void add( IStreamingReporterPtr&& reporter ) {
|
||||
if( m_reporters.empty() ) {
|
||||
m_verbosities = reporter->getSupportedVerbosities();
|
||||
}
|
||||
else {
|
||||
for( auto it = m_verbosities.cbegin(); it != m_verbosities.cend(); ) {
|
||||
if( reporter->getSupportedVerbosities().count( *it ) == 0 ) {
|
||||
it = m_verbosities.erase(it);
|
||||
}
|
||||
else {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
}
|
||||
m_reporters.push_back( std::move( reporter ) );
|
||||
}
|
||||
|
||||
@@ -27,6 +41,10 @@ public: // IStreamingReporter
|
||||
return m_reporters[0]->getPreferences();
|
||||
}
|
||||
|
||||
virtual std::set<Verbosity> const& getSupportedVerbosities() const override {
|
||||
return m_verbosities;
|
||||
}
|
||||
|
||||
virtual void noMatchingTestCases( std::string const& spec ) override {
|
||||
for( auto const& reporter : m_reporters )
|
||||
reporter->noMatchingTestCases( spec );
|
||||
|
Reference in New Issue
Block a user