diff --git a/src/catch2/catch_session.cpp b/src/catch2/catch_session.cpp index e85e0672..66dd7186 100644 --- a/src/catch2/catch_session.cpp +++ b/src/catch2/catch_session.cpp @@ -61,10 +61,11 @@ namespace Catch { class TestGroup { public: - explicit TestGroup(IStreamingReporterPtr&& reporter, std::shared_ptr const& config) - : m_config{config} - , m_context{config, std::move(reporter)} - { + explicit TestGroup(IStreamingReporterPtr&& reporter, std::shared_ptr const& config): + m_reporter(reporter.get()), + m_config{config}, + m_context{config, std::move(reporter)} { + auto const& allTestCases = getAllTestCasesSorted(*m_config); m_matches = m_config->testSpec().matchesByFilter(allTestCases, *m_config); auto const& invalidArgs = m_config->testSpec().getInvalidArgs(); @@ -87,19 +88,19 @@ namespace Catch { if (!m_context.aborting()) totals += m_context.runTest(*testCase); else - m_context.reporter().skipTest(testCase->getTestCaseInfo()); + m_reporter->skipTest(testCase->getTestCaseInfo()); } for (auto const& match : m_matches) { if (match.tests.empty()) { - m_context.reporter().noMatchingTestCases(match.name); + m_reporter->noMatchingTestCases(match.name); totals.error = -1; } } if (!invalidArgs.empty()) { for (auto const& invalidArg: invalidArgs) - m_context.reporter().reportInvalidArguments(invalidArg); + m_reporter->reportInvalidArguments(invalidArg); } m_context.testGroupEnded(m_config->name(), totals, 1, 1); @@ -109,6 +110,7 @@ namespace Catch { private: using Tests = std::set; + IStreamingReporter* m_reporter; std::shared_ptr m_config; RunContext m_context; Tests m_tests; diff --git a/src/catch2/internal/catch_run_context.cpp b/src/catch2/internal/catch_run_context.cpp index c97621d2..379eddcc 100644 --- a/src/catch2/internal/catch_run_context.cpp +++ b/src/catch2/internal/catch_run_context.cpp @@ -136,9 +136,6 @@ namespace Catch { return deltaTotals; } - IStreamingReporter& RunContext::reporter() const { - return *m_reporter; - } void RunContext::assertionEnded(AssertionResult const & result) { if (result.getResultType() == ResultWas::Ok) { diff --git a/src/catch2/internal/catch_run_context.hpp b/src/catch2/internal/catch_run_context.hpp index cb2322d6..622a083b 100644 --- a/src/catch2/internal/catch_run_context.hpp +++ b/src/catch2/internal/catch_run_context.hpp @@ -45,8 +45,6 @@ namespace Catch { Totals runTest(TestCaseHandle const& testCase); - IStreamingReporter& reporter() const; - public: // IResultCapture // Assertion handlers