Event listeners no longer take reporter config in constructor

This also required splitting out Listener factory from
the reporter factory hierarchy. In return, the listener
factories only need to take in `IConfig const*`, which
opens up further refactorings down the road in the colour
selection and implementation.
This commit is contained in:
Martin Hořeňovský
2022-03-14 15:04:42 +01:00
parent 18c58667d7
commit 4acc520f76
15 changed files with 36 additions and 24 deletions

View File

@@ -25,7 +25,7 @@
namespace {
class NonCapturingListener : public Catch::EventListenerBase {
public:
NonCapturingListener( Catch::ReporterConfig const& config ):
NonCapturingListener( Catch::IConfig const* config ):
EventListenerBase( config ) {
m_preferences.shouldRedirectStdOut = false;
std::cerr << "X24 - NonCapturingListener initialized.\n";

View File

@@ -25,7 +25,7 @@
namespace {
class CapturingListener : public Catch::EventListenerBase {
public:
CapturingListener( Catch::ReporterConfig const& config ):
CapturingListener( Catch::IConfig const* config ):
EventListenerBase( config ) {
m_preferences.shouldRedirectStdOut = true;
std::cerr << "CapturingListener initialized\n";

View File

@@ -30,7 +30,7 @@ namespace {
class TestListener : public Catch::EventListenerBase {
public:
TestListener( Catch::ReporterConfig const& config ):
TestListener( Catch::IConfig const* config ):
EventListenerBase( config ) {
std::cout << "X28 - TestListener constructed.\n";
}

View File

@@ -143,7 +143,7 @@ namespace {
public:
MockListener( std::string witness,
std::vector<std::string>& recorder,
Catch::ReporterConfig const& config ):
Catch::IConfig const* config ):
EventListenerBase( config ),
m_witness( witness ),
m_recorder( recorder )
@@ -187,10 +187,10 @@ TEST_CASE("Multireporter calls reporters and listeners in correct order",
std::vector<std::string> records;
multiReporter.addReporter( Catch::Detail::make_unique<MockReporter>(
"Goodbye", records, rep_config ) );
multiReporter.addListener( Catch::Detail::make_unique<MockListener>(
"Hello", records, rep_config ) );
multiReporter.addListener( Catch::Detail::make_unique<MockListener>(
"world", records, rep_config ) );
multiReporter.addListener(
Catch::Detail::make_unique<MockListener>( "Hello", records, &config ) );
multiReporter.addListener(
Catch::Detail::make_unique<MockListener>( "world", records, &config ) );
multiReporter.addReporter( Catch::Detail::make_unique<MockReporter>(
"world", records, rep_config ) );
multiReporter.testRunStarting( { "" } );
@@ -206,7 +206,7 @@ namespace {
public:
PreferenceListener( bool redirectStdout,
bool reportAllAssertions,
Catch::ReporterConfig const& config ):
Catch::IConfig const* config ):
EventListenerBase( config ) {
m_preferences.shouldRedirectStdOut = redirectStdout;
m_preferences.shouldReportAllAssertions = reportAllAssertions;
@@ -242,19 +242,19 @@ TEST_CASE("Multireporter updates ReporterPreferences properly",
SECTION( "Adding listeners" ) {
multiReporter.addListener(
Catch::Detail::make_unique<PreferenceListener>(
true, false, rep_config ) );
true, false, &config ) );
REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true );
REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false );
multiReporter.addListener(
Catch::Detail::make_unique<PreferenceListener>(
false, true, rep_config ) );
false, true, &config ) );
REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true );
REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true);
multiReporter.addListener(
Catch::Detail::make_unique<PreferenceListener>(
false, false, rep_config ) );
false, false, &config ) );
REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true );
REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true );
}

View File

@@ -48,7 +48,7 @@ class ValidatingTestListener : public Catch::EventListenerBase {
};
public:
ValidatingTestListener(Catch::ReporterConfig const& config) :
ValidatingTestListener(Catch::IConfig const* config) :
EventListenerBase(config) {
m_preferences.shouldReportAllAssertions = true;
}