Call listeners before calling reporters

Catch2's documentation promises that listeners are called _before_
reporters, but because of the previous implementation, they were
called _after_ reporters. This commit fixes that.

Closes #1234
This commit is contained in:
Martin Hořeňovský 2018-04-07 11:42:24 +02:00
parent 414dcae34a
commit f00257e374
8 changed files with 157 additions and 143 deletions

View file

@ -6,7 +6,7 @@
*/
#include "catch_interfaces_reporter.h"
#include "../reporters/catch_reporter_multi.h"
#include "../reporters/catch_reporter_listening.h"
namespace Catch {
@ -111,25 +111,4 @@ namespace Catch {
IReporterFactory::~IReporterFactory() = default;
IReporterRegistry::~IReporterRegistry() = default;
void addReporter( IStreamingReporterPtr& existingReporter, IStreamingReporterPtr&& additionalReporter ) {
if( !existingReporter ) {
existingReporter = std::move( additionalReporter );
return;
}
MultipleReporters* multi = nullptr;
if( existingReporter->isMulti() ) {
multi = static_cast<MultipleReporters*>( existingReporter.get() );
}
else {
auto newMulti = std::unique_ptr<MultipleReporters>( new MultipleReporters );
newMulti->add( std::move( existingReporter ) );
multi = newMulti.get();
existingReporter = std::move( newMulti );
}
multi->add( std::move( additionalReporter ) );
}
} // end namespace Catch