Horizon
Classes | Public Types | Public Member Functions | Protected Attributes | List of all members
Catch::CumulativeReporterBase Class Referenceabstract

Utility base for reporters that need to handle all results at once. More...

#include <catch_amalgamated.hpp>

Inheritance diagram for Catch::CumulativeReporterBase:
Catch::ReporterBase Catch::IEventListener Catch::JunitReporter Catch::SonarQubeReporter

Classes

struct  Node
 
struct  SectionNode
 

Public Types

using TestCaseNode = Node< TestCaseStats, SectionNode >
 
using TestRunNode = Node< TestRunStats, TestCaseNode >
 

Public Member Functions

void benchmarkPreparing (StringRef) override
 Called when user-code is being probed before the actual benchmark runs.
 
void benchmarkStarting (BenchmarkInfo const &) override
 Called after probe but before the user-code is being benchmarked.
 
void benchmarkEnded (BenchmarkStats<> const &benchmarkStats) override
 Called with the benchmark results if benchmark successfully finishes.
 
void benchmarkFailed (StringRef) override
 Called if running the benchmarks fails for any reason.
 
void noMatchingTestCases (StringRef) override
 Called when no test cases match provided test spec.
 
void reportInvalidTestSpec (StringRef) override
 Called for all invalid test specs from the cli.
 
void fatalErrorEncountered (StringRef) override
 Called if a fatal error (signal/structured exception) occured.
 
void testRunStarting (TestRunInfo const &) override
 Called once in a testing run before tests are started. More...
 
void testCaseStarting (TestCaseInfo const &) override
 Called once for each TEST_CASE, no matter how many times it is entered.
 
void testCasePartialStarting (TestCaseInfo const &, uint64_t) override
 Called every time a TEST_CASE is entered, including repeats (due to sections)
 
void sectionStarting (SectionInfo const &sectionInfo) override
 Called when a SECTION is being entered. Not called for skipped sections.
 
void assertionStarting (AssertionInfo const &) override
 Called before assertion success/failure is evaluated.
 
void assertionEnded (AssertionStats const &assertionStats) override
 Called after assertion was fully evaluated.
 
void sectionEnded (SectionStats const &sectionStats) override
 Called after a SECTION has finished running.
 
void testCasePartialEnded (TestCaseStats const &, uint64_t) override
 Called every time a TEST_CASE is entered, including repeats (due to sections)
 
void testCaseEnded (TestCaseStats const &testCaseStats) override
 Called once for each TEST_CASE, no matter how many times it is entered.
 
void testRunEnded (TestRunStats const &testRunStats) override
 Called once after all tests in a testing run are finished. More...
 
virtual void testRunEndedCumulative ()=0
 Customization point: called after last test finishes (testRunEnded has been handled)
 
void skipTest (TestCaseInfo const &) override
 Called with test cases that are skipped due to the test run aborting.
 
 ReporterBase (ReporterConfig &&config)
 
- Public Member Functions inherited from Catch::ReporterBase
 ReporterBase (ReporterConfig &&config)
 
void listReporters (std::vector< ReporterDescription > const &descriptions) override
 Provides a simple default listing of reporters. More...
 
void listListeners (std::vector< ListenerDescription > const &descriptions) override
 Provides a simple default listing of listeners. More...
 
void listTests (std::vector< TestCaseHandle > const &tests) override
 Provides a simple default listing of tests. More...
 
void listTags (std::vector< TagInfo > const &tags) override
 Provides a simple default listing of tags. More...
 
- Public Member Functions inherited from Catch::IEventListener
 IEventListener (IConfig const *config)
 
ReporterPreferences const & getPreferences () const
 

Protected Attributes

bool m_shouldStoreSuccesfulAssertions = true
 Should the cumulative base store the assertion expansion for succesful assertions?
 
bool m_shouldStoreFailedAssertions = true
 Should the cumulative base store the assertion expansion for failed assertions?
 
Detail::unique_ptr< TestRunNodem_testRun
 The root node of the test run tree.
 
- Protected Attributes inherited from Catch::ReporterBase
Detail::unique_ptr< IStreamm_wrapped_stream
 The stream wrapper as passed to us by outside code.
 
std::ostream & m_stream
 Cached output stream from m_wrapped_stream to reduce number of indirect calls needed to write output.
 
Detail::unique_ptr< ColourImplm_colour
 Colour implementation this reporter was configured for.
 
std::map< std::string, std::string > m_customOptions
 The custom reporter options user passed down to the reporter.
 
- Protected Attributes inherited from Catch::IEventListener
ReporterPreferences m_preferences
 Derived classes can set up their preferences here.
 
IConfig const * m_config
 The test run's config as filled in from CLI and defaults.
 

Detailed Description

Utility base for reporters that need to handle all results at once.

It stores tree of all test cases, sections and assertions, and after the test run is finished, calls into testRunEndedCumulative to pass the control to the deriving class.

If you are deriving from this class and override any testing related member functions, you should first call into the base's implementation to avoid breaking the tree construction.

Due to the way this base functions, it has to expand assertions up-front, even if they are later unused (e.g. because the deriving reporter does not report successful assertions, or because the deriving reporter does not use assertion expansion at all). Derived classes can use two customization points, m_shouldStoreSuccesfulAssertions and m_shouldStoreFailedAssertions, to disable the expansion and gain extra performance. Accessing the assertion expansions if it wasn't stored is UB.

Member Function Documentation

◆ testRunEnded()

void Catch::CumulativeReporterBase::testRunEnded ( TestRunStats const &  testRunStats)
overridevirtual

Called once after all tests in a testing run are finished.

Not called if tests weren't run (e.g. only listings happened)

Implements Catch::IEventListener.

◆ testRunStarting()

void Catch::CumulativeReporterBase::testRunStarting ( TestRunInfo const &  testRunInfo)
inlineoverridevirtual

Called once in a testing run before tests are started.

Not called if tests won't be run (e.g. only listing will happen)

Implements Catch::IEventListener.

Reimplemented in Catch::SonarQubeReporter, and Catch::JunitReporter.


The documentation for this class was generated from the following files: