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 ) {
m_testRuns.emplace_back( testRunStats );
m_testRuns.back().children.swap( m_testCases );
assert(!m_testRun && "CumulativeReporterBase assumes there can only be one test run");
m_testRun = Detail::make_unique<TestRunNode>( testRunStats );
m_testRun->children.swap( m_testCases );
testRunEndedCumulative();
}

View File

@ -73,10 +73,11 @@ namespace Catch {
std::ostream& stream;
// 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<TestRunNode> m_testRuns;
// We need lazy construction here. We should probably refactor it
// later, after the events are redone.
Detail::unique_ptr<TestRunNode> m_testRun;
Detail::unique_ptr<SectionNode> m_rootSection;
SectionNode* m_deepestSection = nullptr;

View File

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

View File

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