Store singular TestRunNode in CumulativeReporterBase

There can never be more than one, so there is no reason to provide
genericity over multiple nodes.
This commit is contained in:
Martin Hořeňovský 2021-09-07 21:17:24 +02:00
parent e5938007f7
commit 290c1b60e6
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A
4 changed files with 9 additions and 13 deletions

View File

@ -100,8 +100,9 @@ namespace Catch {
void CumulativeReporterBase::testRunEnded( TestRunStats const& testRunStats ) { void CumulativeReporterBase::testRunEnded( TestRunStats const& testRunStats ) {
m_testRuns.emplace_back( testRunStats ); assert(!m_testRun && "CumulativeReporterBase assumes there can only be one test run");
m_testRuns.back().children.swap( m_testCases ); m_testRun = Detail::make_unique<TestRunNode>( testRunStats );
m_testRun->children.swap( m_testCases );
testRunEndedCumulative(); testRunEndedCumulative();
} }

View File

@ -73,10 +73,11 @@ namespace Catch {
std::ostream& stream; std::ostream& stream;
// Note: We rely on pointer identity being stable, which is why // Note: We rely on pointer identity being stable, which is why
// which is why we store around pointers rather than values. // we store pointers to the nodes rather than the values.
std::vector<Detail::unique_ptr<TestCaseNode>> m_testCases; std::vector<Detail::unique_ptr<TestCaseNode>> m_testCases;
// We need lazy construction here. We should probably refactor it
std::vector<TestRunNode> m_testRuns; // later, after the events are redone.
Detail::unique_ptr<TestRunNode> m_testRun;
Detail::unique_ptr<SectionNode> m_rootSection; Detail::unique_ptr<SectionNode> m_rootSection;
SectionNode* m_deepestSection = nullptr; SectionNode* m_deepestSection = nullptr;

View File

@ -99,10 +99,7 @@ namespace Catch {
void JunitReporter::testRunEndedCumulative() { void JunitReporter::testRunEndedCumulative() {
const auto suiteTime = suiteTimer.getElapsedSeconds(); const auto suiteTime = suiteTimer.getElapsedSeconds();
// HACK: There can only be one testRunNode? This needs to be writeRun( *m_testRun, suiteTime );
// refactored after the group nodes are excised.
assert(m_testRuns.size() == 1);
writeRun( m_testRuns.back(), suiteTime );
xml.endElement(); xml.endElement();
} }

View File

@ -35,10 +35,7 @@ namespace Catch {
void testRunStarting( TestRunInfo const& testRunInfo ) override; void testRunStarting( TestRunInfo const& testRunInfo ) override;
void testRunEndedCumulative() override { void testRunEndedCumulative() override {
// HACK: There can only be one testRunNode? This needs to be writeRun( *m_testRun );
// refactored after the group nodes are excised.
assert( m_testRuns.size() == 1 );
writeRun( m_testRuns.back() );
xml.endElement(); xml.endElement();
} }