mirror of
https://github.com/catchorg/Catch2.git
synced 2024-12-22 19:33:29 +01:00
Hold reporter's IConfig instance in the interface
Previously, every base derived from the IStreamingReporter had its own `IConfig const* m_config` member, so this just centralizes the handling thereof. Part of #2061
This commit is contained in:
parent
ba81505168
commit
74f2f4ba5e
@ -48,7 +48,7 @@ namespace Catch {
|
||||
// doesn't compile without a std::move call. However, this causes
|
||||
// a warning on newer platforms. Thus, we have to work around
|
||||
// it a bit and downcast the pointer manually.
|
||||
auto ret = Detail::unique_ptr<IStreamingReporter>(new ListeningReporter);
|
||||
auto ret = Detail::unique_ptr<IStreamingReporter>(new ListeningReporter(config));
|
||||
auto& multi = static_cast<ListeningReporter&>(*ret);
|
||||
auto const& listeners = Catch::getRegistryHub().getReporterRegistry().getListeners();
|
||||
for (auto const& listener : listeners) {
|
||||
|
@ -176,7 +176,12 @@ namespace Catch {
|
||||
protected:
|
||||
//! Derived classes can set up their preferences here
|
||||
ReporterPreferences m_preferences;
|
||||
//! The test run's config as filled in from CLI and defaults
|
||||
IConfig const* m_config;
|
||||
|
||||
public:
|
||||
IStreamingReporter( IConfig const* config ): m_config( config ) {}
|
||||
|
||||
virtual ~IStreamingReporter() = default;
|
||||
|
||||
// Implementing class must also provide the following static methods:
|
||||
|
@ -46,7 +46,8 @@ namespace Catch {
|
||||
using TestRunNode = Node<TestRunStats, TestGroupNode>;
|
||||
|
||||
CumulativeReporterBase( ReporterConfig const& _config ):
|
||||
m_config( _config.fullConfig() ), stream( _config.stream() ) {}
|
||||
IStreamingReporter( _config.fullConfig() ),
|
||||
stream( _config.stream() ) {}
|
||||
~CumulativeReporterBase() override;
|
||||
|
||||
void testRunStarting( TestRunInfo const& ) override {}
|
||||
@ -68,7 +69,6 @@ namespace Catch {
|
||||
|
||||
void skipTest(TestCaseInfo const&) override {}
|
||||
|
||||
IConfig const* m_config;
|
||||
std::ostream& stream;
|
||||
// Note: We rely on pointer identity being stable, which is why
|
||||
// which is why we store around pointers rather than values.
|
||||
|
@ -20,11 +20,9 @@ namespace Catch {
|
||||
* member functions it actually cares about.
|
||||
*/
|
||||
class EventListenerBase : public IStreamingReporter {
|
||||
IConfig const* m_config;
|
||||
|
||||
public:
|
||||
EventListenerBase( ReporterConfig const& config ):
|
||||
m_config( config.fullConfig() ) {}
|
||||
IStreamingReporter( config.fullConfig() ) {}
|
||||
|
||||
void assertionStarting( AssertionInfo const& assertionInfo ) override;
|
||||
bool assertionEnded( AssertionStats const& assertionStats ) override;
|
||||
|
@ -11,11 +11,6 @@
|
||||
|
||||
namespace Catch {
|
||||
|
||||
ListeningReporter::ListeningReporter() {
|
||||
// We will assume that listeners will always want all assertions
|
||||
m_preferences.shouldReportAllAssertions = true;
|
||||
}
|
||||
|
||||
void ListeningReporter::addListener( IStreamingReporterPtr&& listener ) {
|
||||
m_listeners.push_back( std::move( listener ) );
|
||||
}
|
||||
|
@ -18,7 +18,12 @@ namespace Catch {
|
||||
IStreamingReporterPtr m_reporter = nullptr;
|
||||
|
||||
public:
|
||||
ListeningReporter();
|
||||
ListeningReporter( IConfig const* config ):
|
||||
IStreamingReporter( config ) {
|
||||
// We will assume that listeners will always want all assertions
|
||||
m_preferences.shouldReportAllAssertions = true;
|
||||
}
|
||||
|
||||
|
||||
void addListener( IStreamingReporterPtr&& listener );
|
||||
void addReporter( IStreamingReporterPtr&& reporter );
|
||||
|
@ -36,8 +36,8 @@ namespace Catch {
|
||||
struct StreamingReporterBase : IStreamingReporter {
|
||||
|
||||
StreamingReporterBase( ReporterConfig const& _config ):
|
||||
m_config( _config.fullConfig() ), stream( _config.stream() ) {
|
||||
}
|
||||
IStreamingReporter( _config.fullConfig() ),
|
||||
stream( _config.stream() ) {}
|
||||
|
||||
|
||||
~StreamingReporterBase() override;
|
||||
@ -71,7 +71,6 @@ namespace Catch {
|
||||
// It can optionally be overridden in the derived class.
|
||||
}
|
||||
|
||||
IConfig const* m_config;
|
||||
std::ostream& stream;
|
||||
|
||||
LazyStat<TestRunInfo> currentTestRunInfo;
|
||||
|
Loading…
Reference in New Issue
Block a user