mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01: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
	 Baruch Burstein
					Baruch Burstein