From b323fc7e6c57caa535d65cae31e6018822ed9e3c Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Sun, 4 Nov 2012 21:39:16 +0000 Subject: [PATCH] Fixed line/no regression for SECTIONs Unexpected exceptions within a section now get the SECTION's line no. again (instead of TEST_CASE line/no) --- include/internal/catch_runner_impl.hpp | 9 ++------- projects/SelfTest/ExceptionTests.cpp | 2 +- projects/SelfTest/TestMain.cpp | 2 +- projects/SelfTest/catch_self_test.cpp | 2 ++ .../CatchSelfTest.xcodeproj/project.pbxproj | 6 +----- 5 files changed, 7 insertions(+), 14 deletions(-) diff --git a/include/internal/catch_runner_impl.hpp b/include/internal/catch_runner_impl.hpp index 98fb8fb9..e581b909 100644 --- a/include/internal/catch_runner_impl.hpp +++ b/include/internal/catch_runner_impl.hpp @@ -174,13 +174,11 @@ namespace Catch { oss << name << "@" << lineInfo; - m_assertionInfoStack.push_back( m_lastAssertionInfo ); - m_lastAssertionInfo = AssertionInfo( "SECTION", lineInfo ); - - if( !m_runningTest->addSection( oss.str() ) ) return false; + m_lastAssertionInfo.lineInfo = lineInfo; + m_reporter->StartSection( name, description ); assertions = m_totals.assertions; @@ -198,8 +196,6 @@ namespace Catch { } m_runningTest->endSection( name ); m_reporter->EndSection( name, assertions ); - m_lastAssertionInfo = m_assertionInfoStack.back(); - m_assertionInfoStack.pop_back(); } virtual void pushScopedInfo( ScopedInfo* scopedInfo ) { @@ -296,7 +292,6 @@ namespace Catch { IResultCapture* m_prevResultCapture; const IConfig* m_prevConfig; AssertionInfo m_lastAssertionInfo; - std::vector m_assertionInfoStack; }; } // end namespace Catch diff --git a/projects/SelfTest/ExceptionTests.cpp b/projects/SelfTest/ExceptionTests.cpp index bf02e2dd..73354cbc 100644 --- a/projects/SelfTest/ExceptionTests.cpp +++ b/projects/SelfTest/ExceptionTests.cpp @@ -151,7 +151,7 @@ TEST_CASE( "./succeeding/exceptions/error messages", "The error messages produce INFO( runner.getLog() ); // CHECK( runner.getLog().find( "Unexpected exception" ) != std::string::npos ); // Mock reporter doesn't say this CHECK_THAT( runner.getLog(), Contains( "Exception from section" ) ); -// CHECK( runner.getLog().find( CATCH_GET_LINE_INFO( "the section2" ) ) != std::string::npos ); // Mock reporter doesn't say this + CHECK_THAT( runner.getLog(), Contains( CATCH_GET_LINE_INFO( "the section2" ) ) ); } } diff --git a/projects/SelfTest/TestMain.cpp b/projects/SelfTest/TestMain.cpp index 12287799..128ece7c 100644 --- a/projects/SelfTest/TestMain.cpp +++ b/projects/SelfTest/TestMain.cpp @@ -37,7 +37,7 @@ TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results" SECTION( "selftest/test counts/succeeding tests", "Number of 'succeeding' tests is fixed" ) { Totals totals = runner.runMatching( "./succeeding/*" ); - CHECK( totals.assertions.passed == 288 ); + CHECK( totals.assertions.passed == 289 ); CHECK( totals.assertions.failed == 0 ); } diff --git a/projects/SelfTest/catch_self_test.cpp b/projects/SelfTest/catch_self_test.cpp index bca9f284..244cd822 100644 --- a/projects/SelfTest/catch_self_test.cpp +++ b/projects/SelfTest/catch_self_test.cpp @@ -34,6 +34,8 @@ namespace Catch{ void MockReporter::Result( const AssertionResult& assertionResult ) { if( assertionResult.getResultType() == ResultWas::Ok ) return; + + m_log << assertionResult.getSourceInfo() << " "; switch( assertionResult.getResultType() ) { case ResultWas::Info: diff --git a/projects/XCode4/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj b/projects/XCode4/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj index 7667e515..3878491a 100644 --- a/projects/XCode4/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj +++ b/projects/XCode4/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj @@ -551,11 +551,7 @@ buildSettings = { CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = NO; - GCC_PREPROCESSOR_DEFINITIONS = CATCH_CONFIG_USE_ANSI_COLOUR_CODES; - "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ( - CATCH_CONFIG_USE_ANSI_COLOUR_CODES, - "DEBUG=1", - ); + GCC_PREPROCESSOR_DEFINITIONS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; WARNING_CFLAGS = ( "-Weverything",