INFO() now works correctly

This commit is contained in:
Phil Nash 2010-12-27 22:05:13 +00:00
parent a36b8d0779
commit 89c464709e
5 changed files with 42 additions and 7 deletions

View File

@ -14,11 +14,30 @@
TEST_CASE( "succeeding/message", "INFO and WARN do not abort tests" )
{
INFO( "this is a " << "message" ); // This should output the message but continue
WARN( "this is a " << "warning" ); // This should output the message but continue
INFO( "this is a " << "message" ); // This should output the message if a failure occurs
WARN( "this is a " << "warning" ); // This should always output the message but then continue
}
TEST_CASE( "failing/message", "FAIL aborts the test" )
TEST_CASE( "failing/message/info/1", "INFO gets logged on failure" )
{
INFO( "this message should be logged" );
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" );
REQUIRE( a == 1 );
}
TEST_CASE( "failing/message/fail", "FAIL aborts the test" )
{
FAIL( "This is a " << "failure" ); // This should output the message and abort
}

View File

@ -110,7 +110,7 @@ namespace Catch
///////////////////////////////////////////////////////////////////////////
virtual void Result( const ResultInfo& resultInfo )
{
if( !m_config.includeSuccessfulResults() && resultInfo.ok() )
if( !m_config.includeSuccessfulResults() && resultInfo.getResultType() == ResultWas::Ok )
return;
if( !resultInfo.getFilename().empty() )

View File

@ -114,7 +114,7 @@ namespace Catch
///////////////////////////////////////////////////////////////////////////
virtual void Result( const Catch::ResultInfo& resultInfo )
{
if( !resultInfo.ok() || m_config.includeSuccessfulResults() )
if( resultInfo.getResultType() != ResultWas::Ok || m_config.includeSuccessfulResults() )
{
TestCaseStats& testCaseStats = m_currentStats->testCaseStats.back();
TestStats stats;

View File

@ -93,7 +93,7 @@ namespace Catch
///////////////////////////////////////////////////////////////////////////
virtual void Result( const Catch::ResultInfo& resultInfo )
{
if( !m_config.includeSuccessfulResults() && resultInfo.ok() )
if( !m_config.includeSuccessfulResults() && resultInfo.getResultType() == ResultWas::Ok )
return;
if( resultInfo.hasExpression() )

View File

@ -164,7 +164,22 @@ namespace Catch
else if( !result.ok() )
m_failures++;
m_reporter->Result( result );
if( !result.ok() )
{
std::vector<ResultInfo>::const_iterator it = m_info.begin();
std::vector<ResultInfo>::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 );
}
}
virtual bool sectionStarted( const std::string& name, const std::string& description, std::size_t& successes, std::size_t& failures )
@ -202,6 +217,7 @@ namespace Catch
std::size_t m_failures;
ITestReporter* m_reporter;
std::vector<ScopedInfo*> m_scopedInfos;
std::vector<ResultInfo> m_info;
};
}