diff --git a/Test/MessageTests.cpp b/Test/MessageTests.cpp index 372a5489..1e8e6be8 100644 --- a/Test/MessageTests.cpp +++ b/Test/MessageTests.cpp @@ -21,20 +21,28 @@ TEST_CASE( "succeeding/message", "INFO and WARN do not abort tests" ) TEST_CASE( "failing/message/info/1", "INFO gets logged on failure" ) { INFO( "this message should be logged" ); + INFO( "so should this" ); int a = 2; REQUIRE( a == 1 ); } TEST_CASE( "failing/message/info/2", "INFO gets logged on failure" ) { - INFO( "this message should not be logged" ); - int a = 2; - REQUIRE( a == 2 ); - INFO( "this message should be logged" ); - INFO( "so should this" ); + int a = 2; + CHECK( a == 2 ); + + INFO( "this message should be logged, too" ); - REQUIRE( a == 1 ); + CHECK( a == 1 ); + + INFO( "and this, but later" ); + + CHECK( a == 0 ); + + INFO( "but not this" ); + + CHECK( a == 2 ); } TEST_CASE( "failing/message/fail", "FAIL aborts the test" ) diff --git a/internal/catch_runner_impl.hpp b/internal/catch_runner_impl.hpp index e3675367..ce2d929e 100644 --- a/internal/catch_runner_impl.hpp +++ b/internal/catch_runner_impl.hpp @@ -141,7 +141,7 @@ namespace Catch ResultsCapture::acceptMessage( "unknown exception" ); ResultsCapture::acceptResult( ResultWas::ThrewException ); } - + m_info.clear(); m_reporter->EndTestCase( testInfo, redirectedCout, redirectedCerr ); ResultsCapture::setListener( prevListener ); } @@ -160,26 +160,24 @@ namespace Catch virtual void testEnded( const ResultInfo& result ) { if( result.getResultType() == ResultWas::Ok ) - m_successes++; - else if( !result.ok() ) - m_failures++; - - if( !result.ok() ) { + m_successes++; + } + else if( !result.ok() ) + { + m_failures++; + std::vector::const_iterator it = m_info.begin(); std::vector::const_iterator itEnd = m_info.end(); for(; it != itEnd; ++it ) m_reporter->Result( *it ); - } - if( result.getResultType() == ResultWas::Info ) - { - m_info.push_back( result ); - } - else - { m_info.clear(); - m_reporter->Result( result ); } + + if( result.getResultType() == ResultWas::Info ) + m_info.push_back( result ); + else + m_reporter->Result( result ); } virtual bool sectionStarted( const std::string& name, const std::string& description, std::size_t& successes, std::size_t& failures )