Add support for multiple parallel reporters

This requires a bunch of different changes across the reporter
subsystem.

* We need to handle multiple reporters and their differing
  preferences in `ListeningReporter`, e.g. what to do when
  we mix reporters that capture and don't capture stdout.
* We need to change how the reporter is given output and
  how we parse reporter's output destination from CLI.
* Approval tests need to handle multireporter option
This commit is contained in:
Martin Jeřábek authored and Martin Hořeňovský committed 2022-01-01 14:02:23 +01:00
1 parent 6b55f5d780
commit ccd67b293d
33 files changed
+51234 -224

No files matched your search

@@ -36,11 +36,11 @@ namespace Catch {
ReporterRegistry::~ReporterRegistry() = default;
IStreamingReporterPtr ReporterRegistry::create( std::string const& name, IConfig const* config ) const {
IStreamingReporterPtr ReporterRegistry::create( std::string const& name, ReporterConfig const& config ) const {
auto it = m_factories.find( name );
if( it == m_factories.end() )
return nullptr;
return it->second->create( ReporterConfig( config ) );
return it->second->create( config );
}
void ReporterRegistry::registerReporter( std::string const& name, IReporterFactoryPtr factory ) {