Skip to content

Commit

Permalink
Make benchmark* and fatalError reporter events pure virtual
Browse files Browse the repository at this point in the history
  • Loading branch information
horenmar committed Sep 15, 2021
1 parent f314fa1 commit 785436c
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/catch2/interfaces/catch_interfaces_reporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,6 @@ namespace Catch {
aborting( _aborting )
{}

void IStreamingReporter::fatalErrorEncountered( StringRef ) {}
IStreamingReporter::~IStreamingReporter() = default;

} // end namespace Catch
13 changes: 6 additions & 7 deletions src/catch2/interfaces/catch_interfaces_reporter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ namespace Catch {
public:
IStreamingReporter( IConfig const* config ): m_config( config ) {}

virtual ~IStreamingReporter() = default;
virtual ~IStreamingReporter(); // = default;

// Implementing class must also provide the following static methods:
// static std::string getDescription();
Expand All @@ -182,10 +182,10 @@ namespace Catch {
virtual void testCasePartialStarting( TestCaseInfo const& testInfo, uint64_t partNumber ) = 0;
virtual void sectionStarting( SectionInfo const& sectionInfo ) = 0;

virtual void benchmarkPreparing( StringRef ) {}
virtual void benchmarkStarting( BenchmarkInfo const& ) {}
virtual void benchmarkEnded( BenchmarkStats<> const& ) {}
virtual void benchmarkFailed( StringRef ) {}
virtual void benchmarkPreparing( StringRef benchmarkName ) = 0;
virtual void benchmarkStarting( BenchmarkInfo const& benchmarkInfo ) = 0;
virtual void benchmarkEnded( BenchmarkStats<> const& benchmarkStats ) = 0;
virtual void benchmarkFailed( StringRef benchmarkName ) = 0;

virtual void assertionStarting( AssertionInfo const& assertionInfo ) = 0;

Expand All @@ -200,8 +200,7 @@ namespace Catch {

virtual void skipTest( TestCaseInfo const& testInfo ) = 0;

// Default empty implementation provided
virtual void fatalErrorEncountered( StringRef name );
virtual void fatalErrorEncountered( StringRef error ) = 0;

//! Writes out information about provided reporters using reporter-specific format
virtual void listReporters(std::vector<ReporterDescription> const& descriptions) = 0;
Expand Down
8 changes: 8 additions & 0 deletions src/catch2/reporters/catch_reporter_combined_tu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,14 @@ namespace Catch {
#include <catch2/reporters/catch_reporter_event_listener.hpp>

namespace Catch {

void EventListenerBase::fatalErrorEncountered( StringRef ) {}

void EventListenerBase::benchmarkPreparing( StringRef ) {}
void EventListenerBase::benchmarkStarting( BenchmarkInfo const& ) {}
void EventListenerBase::benchmarkEnded( BenchmarkStats<> const& ) {}
void EventListenerBase::benchmarkFailed( StringRef ) {}

void EventListenerBase::assertionStarting( AssertionInfo const& ) {}

void EventListenerBase::assertionEnded( AssertionStats const& ) {}
Expand Down
5 changes: 5 additions & 0 deletions src/catch2/reporters/catch_reporter_cumulative_base.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,14 @@ namespace Catch {
stream( _config.stream() ) {}
~CumulativeReporterBase() override;

void benchmarkPreparing( StringRef ) override {}
void benchmarkStarting( BenchmarkInfo const& ) override {}
void benchmarkEnded( BenchmarkStats<> const& ) override {}
void benchmarkFailed( StringRef ) override {}

void noMatchingTestCases( StringRef ) override {}
void reportInvalidArguments( StringRef ) override {}
void fatalErrorEncountered( StringRef /*error*/ ) override {}


void testRunStarting( TestRunInfo const& ) override {}
Expand Down
8 changes: 7 additions & 1 deletion src/catch2/reporters/catch_reporter_event_listener.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace Catch {
/**
* Base class identifying listeners.
*
* Provides default implementation for all IStreamingReporter member
* Provides empty default implementation for all IStreamingReporter member
* functions, so that listeners implementations can pick which
* member functions it actually cares about.
*/
Expand All @@ -25,6 +25,12 @@ namespace Catch {
IStreamingReporter( config.fullConfig() ) {}

void reportInvalidArguments( StringRef unmatchedSpec ) override;
void fatalErrorEncountered( StringRef error ) override;

void benchmarkPreparing( StringRef name ) override;
void benchmarkStarting( BenchmarkInfo const& benchmarkInfo ) override;
void benchmarkEnded( BenchmarkStats<> const& benchmarkStats ) override;
void benchmarkFailed( StringRef error ) override;

void assertionStarting( AssertionInfo const& assertionInfo ) override;
void assertionEnded( AssertionStats const& assertionStats ) override;
Expand Down
7 changes: 7 additions & 0 deletions src/catch2/reporters/catch_reporter_listening.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@ namespace Catch {
m_reporter->noMatchingTestCases( unmatchedSpec );
}

void ListeningReporter::fatalErrorEncountered( StringRef error ) {
for ( auto& listener : m_listeners ) {
listener->fatalErrorEncountered( error );
}
m_reporter->fatalErrorEncountered( error );
}

void ListeningReporter::reportInvalidArguments( StringRef arg ) {
for ( auto& listener : m_listeners ) {
listener->reportInvalidArguments( arg );
Expand Down
2 changes: 1 addition & 1 deletion src/catch2/reporters/catch_reporter_listening.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ namespace Catch {
public: // IStreamingReporter

void noMatchingTestCases( StringRef unmatchedSpec ) override;

void fatalErrorEncountered( StringRef error ) override;
void reportInvalidArguments( StringRef arg ) override;

void benchmarkPreparing( StringRef name ) override;
Expand Down
6 changes: 6 additions & 0 deletions src/catch2/reporters/catch_reporter_streaming_base.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ namespace Catch {

~StreamingReporterBase() override;

void benchmarkPreparing( StringRef ) override {}
void benchmarkStarting( BenchmarkInfo const& ) override {}
void benchmarkEnded( BenchmarkStats<> const& ) override {}
void benchmarkFailed( StringRef ) override {}

void fatalErrorEncountered( StringRef /*error*/ ) override {}
void noMatchingTestCases( StringRef /*unmatchedSpec*/ ) override {}
void reportInvalidArguments( StringRef /*invalidArgument*/ ) override {}

Expand Down

0 comments on commit 785436c

Please sign in to comment.