mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-26 15:26:11 +01:00
Fixed lazy reporting for nested sections
This commit is contained in:
parent
7fe330f078
commit
088d700315
@ -54,9 +54,6 @@ TEST_CASE( "./mixed/Misc/Sections/nested2", "nested SECTION tests" )
|
|||||||
|
|
||||||
SECTION( "s1", "doesn't equal" )
|
SECTION( "s1", "doesn't equal" )
|
||||||
{
|
{
|
||||||
REQUIRE( a != b );
|
|
||||||
REQUIRE( b != a );
|
|
||||||
|
|
||||||
SECTION( "s2", "equal" )
|
SECTION( "s2", "equal" )
|
||||||
{
|
{
|
||||||
REQUIRE( a == b );
|
REQUIRE( a == b );
|
||||||
@ -68,7 +65,7 @@ TEST_CASE( "./mixed/Misc/Sections/nested2", "nested SECTION tests" )
|
|||||||
}
|
}
|
||||||
SECTION( "s4", "less than" )
|
SECTION( "s4", "less than" )
|
||||||
{
|
{
|
||||||
REQUIRE( b < a );
|
REQUIRE( a < b );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results"
|
|||||||
|
|
||||||
runner.runMatching( "./succeeding/*" );
|
runner.runMatching( "./succeeding/*" );
|
||||||
INFO( runner.getOutput() );
|
INFO( runner.getOutput() );
|
||||||
CHECK( runner.getSuccessCount() == 197 );
|
CHECK( runner.getSuccessCount() == 199 );
|
||||||
CHECK( runner.getFailureCount() == 0 );
|
CHECK( runner.getFailureCount() == 0 );
|
||||||
|
|
||||||
runner.runMatching( "./failing/*" );
|
runner.runMatching( "./failing/*" );
|
||||||
@ -34,7 +34,7 @@ TEST_CASE( "meta/Misc/Sections", "looped tests" )
|
|||||||
Catch::EmbeddedRunner runner;
|
Catch::EmbeddedRunner runner;
|
||||||
|
|
||||||
runner.runMatching( "./mixed/Misc/Sections/nested2" );
|
runner.runMatching( "./mixed/Misc/Sections/nested2" );
|
||||||
CHECK( runner.getSuccessCount() == 9 );
|
CHECK( runner.getSuccessCount() == 2 );
|
||||||
CHECK( runner.getFailureCount() == 2 );
|
CHECK( runner.getFailureCount() == 1 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,7 @@ namespace Catch
|
|||||||
const std::string /*description*/
|
const std::string /*description*/
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
m_sectionSpan = sectionName;
|
m_sectionSpans.push_back( SpanInfo( sectionName ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -153,13 +153,14 @@ namespace Catch
|
|||||||
std::size_t failed
|
std::size_t failed
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if( m_sectionSpan.emitted && !m_sectionSpan.name.empty() )
|
SpanInfo& sectionSpan = m_sectionSpans.back();
|
||||||
|
if( sectionSpan.emitted && !sectionSpan.name.empty() )
|
||||||
{
|
{
|
||||||
m_config.stream() << "[End of section: '" << sectionName << "'. ";
|
m_config.stream() << "[End of section: '" << sectionName << "'. ";
|
||||||
ReportCounts( succeeded, failed );
|
ReportCounts( succeeded, failed );
|
||||||
m_config.stream() << "]\n" << std::endl;
|
m_config.stream() << "]\n" << std::endl;
|
||||||
m_sectionSpan = SpanInfo();
|
|
||||||
}
|
}
|
||||||
|
m_sectionSpans.pop_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -260,15 +261,28 @@ namespace Catch
|
|||||||
m_testSpan.emitted = true;
|
m_testSpan.emitted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !m_sectionSpan.emitted && !m_sectionSpan.name.empty() )
|
if( !m_sectionSpans.empty() )
|
||||||
|
{
|
||||||
|
SpanInfo& sectionSpan = m_sectionSpans.back();
|
||||||
|
if( !sectionSpan.emitted && !sectionSpan.name.empty() )
|
||||||
{
|
{
|
||||||
if( m_firstSectionInTestCase )
|
if( m_firstSectionInTestCase )
|
||||||
{
|
{
|
||||||
m_config.stream() << "\n";
|
m_config.stream() << "\n";
|
||||||
m_firstSectionInTestCase = false;
|
m_firstSectionInTestCase = false;
|
||||||
}
|
}
|
||||||
m_config.stream() << "[Started section: '" << m_sectionSpan.name << "']" << std::endl;
|
std::vector<SpanInfo>::iterator it = m_sectionSpans.begin();
|
||||||
m_sectionSpan.emitted = true;
|
std::vector<SpanInfo>::iterator itEnd = m_sectionSpans.end();
|
||||||
|
for(; it != itEnd; ++it )
|
||||||
|
{
|
||||||
|
SpanInfo& prevSpan = *it;
|
||||||
|
if( !prevSpan.emitted && !prevSpan.name.empty() )
|
||||||
|
{
|
||||||
|
m_config.stream() << "[Started section: '" << prevSpan.name << "']" << std::endl;
|
||||||
|
prevSpan.emitted = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,8 +292,8 @@ namespace Catch
|
|||||||
|
|
||||||
SpanInfo m_testingSpan;
|
SpanInfo m_testingSpan;
|
||||||
SpanInfo m_groupSpan;
|
SpanInfo m_groupSpan;
|
||||||
SpanInfo m_sectionSpan;
|
|
||||||
SpanInfo m_testSpan;
|
SpanInfo m_testSpan;
|
||||||
|
std::vector<SpanInfo> m_sectionSpans;
|
||||||
};
|
};
|
||||||
|
|
||||||
INTERNAL_CATCH_REGISTER_REPORTER( "basic", BasicReporter )
|
INTERNAL_CATCH_REGISTER_REPORTER( "basic", BasicReporter )
|
||||||
|
Loading…
Reference in New Issue
Block a user