From a90a88adcdd9930443e7ba3419729000c54a009e Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Mon, 19 Nov 2012 19:59:10 +0000 Subject: [PATCH] Junit reporter uses filename for suite name if no explicit groups --- README | 2 +- include/catch_runner.hpp | 8 +------ include/internal/catch_commandline.hpp | 9 ++++++- include/internal/catch_version.hpp | 2 +- include/reporters/catch_reporter_junit.hpp | 2 +- projects/SelfTest/TestMain.cpp | 4 ++-- projects/SelfTest/catch_self_test.hpp | 2 +- single_include/catch.hpp | 28 ++++++++++++---------- 8 files changed, 31 insertions(+), 26 deletions(-) diff --git a/README b/README index 6eacf7db..475362fd 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -CATCH v0.9 build 4 (integration branch) +CATCH v0.9 build 5 (integration branch) --------------------------------------------- CATCH is an automated test framework for C, C++ and Objective-C. diff --git a/include/catch_runner.hpp b/include/catch_runner.hpp index b1684020..d8311968 100644 --- a/include/catch_runner.hpp +++ b/include/catch_runner.hpp @@ -199,12 +199,6 @@ namespace Catch { } inline void showHelp( const CommandParser& parser ) { - std::string exeName = parser.exeName(); - std::string::size_type pos = exeName.find_last_of( "/\\" ); - if( pos != std::string::npos ) { - exeName = exeName.substr( pos+1 ); - } - AllOptions options; Options::HelpOptionParser helpOpt; bool displayedSpecificOption = false; @@ -226,7 +220,7 @@ namespace Catch { if( libraryVersion.BranchName != "master" ) std::cout << " (" << libraryVersion.BranchName << " branch)"; - std::cout << "\n\n" << exeName << " is a CATCH host application. Options are as follows:\n\n"; + std::cout << "\n\n" << parser.exeName() << " is a CATCH host application. Options are as follows:\n\n"; showUsage( std::cout ); } } diff --git a/include/internal/catch_commandline.hpp b/include/internal/catch_commandline.hpp index 4df98531..cd774059 100644 --- a/include/internal/catch_commandline.hpp +++ b/include/internal/catch_commandline.hpp @@ -70,7 +70,11 @@ namespace Catch { CommandParser( int argc, char const * const * argv ) : m_argc( static_cast( argc ) ), m_argv( argv ) {} std::string exeName() const { - return m_argv[0]; + std::string exeName = m_argv[0]; + std::string::size_type pos = exeName.find_last_of( "/\\" ); + if( pos != std::string::npos ) + exeName = exeName.substr( pos+1 ); + return exeName; } Command find( const std::string& arg1, const std::string& arg2, const std::string& arg3 ) const { return find( arg1 ) + find( arg2 ) + find( arg3 ); @@ -644,6 +648,9 @@ namespace Catch { } void parseIntoConfig( const CommandParser& parser, ConfigData& config ) { + config.name = parser.exeName(); + if( endsWith( config.name, ".exe" ) ) + config.name = config.name.substr( 0, config.name.size()-4 ); for( const_iterator it = m_parsers.begin(); it != m_parsers.end(); ++it ) (*it)->parseIntoConfig( parser, config ); } diff --git a/include/internal/catch_version.hpp b/include/internal/catch_version.hpp index 8e6ee42f..4bfe44c8 100644 --- a/include/internal/catch_version.hpp +++ b/include/internal/catch_version.hpp @@ -13,7 +13,7 @@ namespace Catch { // These numbers are maintained by a script - Version libraryVersion = { 0, 9, 4, "integration" }; + Version libraryVersion = { 0, 9, 5, "integration" }; } #endif // TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED diff --git a/include/reporters/catch_reporter_junit.hpp b/include/reporters/catch_reporter_junit.hpp index d9b1a47a..e72b7981 100644 --- a/include/reporters/catch_reporter_junit.hpp +++ b/include/reporters/catch_reporter_junit.hpp @@ -81,7 +81,7 @@ namespace Catch { virtual void StartGroup( const std::string& groupName ) { if( groupName.empty() ) - m_statsForSuites.push_back( Stats( "all tests" ) ); + m_statsForSuites.push_back( Stats( m_config.name ) ); else m_statsForSuites.push_back( Stats( groupName ) ); m_currentStats = &m_statsForSuites.back(); diff --git a/projects/SelfTest/TestMain.cpp b/projects/SelfTest/TestMain.cpp index 9677e752..90116c61 100644 --- a/projects/SelfTest/TestMain.cpp +++ b/projects/SelfTest/TestMain.cpp @@ -44,8 +44,8 @@ TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results" SECTION( "selftest/test counts/failing tests", "Number of 'failing' tests is fixed" ) { Totals totals = runner.runMatching( "./failing/*" ); - CHECK( totals.assertions.passed == 0 ); - CHECK( totals.assertions.failed == 72 ); + CHECK( totals.assertions.passed == 1 ); + CHECK( totals.assertions.failed == 73 ); } } } diff --git a/projects/SelfTest/catch_self_test.hpp b/projects/SelfTest/catch_self_test.hpp index f31a8e99..12ad282e 100644 --- a/projects/SelfTest/catch_self_test.hpp +++ b/projects/SelfTest/catch_self_test.hpp @@ -170,7 +170,7 @@ namespace Catch { } break; case Expected::ToFail: - if( totals.assertions.passed > 0 ) { + if( totals.assertions.failed == 0 ) { INFO( runner.getOutput() ); FAIL( "Expected test case '" << testCase.getName() diff --git a/single_include/catch.hpp b/single_include/catch.hpp index 355ac1eb..ec51c728 100644 --- a/single_include/catch.hpp +++ b/single_include/catch.hpp @@ -1,6 +1,6 @@ /* - * CATCH v0.9 build 4 (integration branch) - * Generated: 2012-11-17 10:48:52.075284 + * CATCH v0.9 build 5 (integration branch) + * Generated: 2012-11-19 19:58:11.700412 * ---------------------------------------------------------- * This file has been merged from multiple headers. Please don't edit it directly * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. @@ -3029,7 +3029,11 @@ namespace Catch { CommandParser( int argc, char const * const * argv ) : m_argc( static_cast( argc ) ), m_argv( argv ) {} std::string exeName() const { - return m_argv[0]; + std::string exeName = m_argv[0]; + std::string::size_type pos = exeName.find_last_of( "/\\" ); + if( pos != std::string::npos ) + exeName = exeName.substr( pos+1 ); + return exeName; } Command find( const std::string& arg1, const std::string& arg2, const std::string& arg3 ) const { return find( arg1 ) + find( arg2 ) + find( arg3 ); @@ -3601,6 +3605,9 @@ namespace Catch { } void parseIntoConfig( const CommandParser& parser, ConfigData& config ) { + config.name = parser.exeName(); + if( endsWith( config.name, ".exe" ) ) + config.name = config.name.substr( 0, config.name.size()-4 ); for( const_iterator it = m_parsers.begin(); it != m_parsers.end(); ++it ) (*it)->parseIntoConfig( parser, config ); } @@ -4027,6 +4034,9 @@ namespace Catch { m_assertionResults.push_back( result ); else m_reporter->Result( result ); + + // Reset AssertionInfo + m_lastAssertionInfo = AssertionInfo( "", m_lastAssertionInfo.lineInfo, "{Unknown expression after this line}" , m_lastAssertionInfo.resultDisposition ); } virtual bool sectionStarted ( @@ -4362,12 +4372,6 @@ namespace Catch { } inline void showHelp( const CommandParser& parser ) { - std::string exeName = parser.exeName(); - std::string::size_type pos = exeName.find_last_of( "/\\" ); - if( pos != std::string::npos ) { - exeName = exeName.substr( pos+1 ); - } - AllOptions options; Options::HelpOptionParser helpOpt; bool displayedSpecificOption = false; @@ -4389,7 +4393,7 @@ namespace Catch { if( libraryVersion.BranchName != "master" ) std::cout << " (" << libraryVersion.BranchName << " branch)"; - std::cout << "\n\n" << exeName << " is a CATCH host application. Options are as follows:\n\n"; + std::cout << "\n\n" << parser.exeName() << " is a CATCH host application. Options are as follows:\n\n"; showUsage( std::cout ); } } @@ -5375,7 +5379,7 @@ namespace Catch { namespace Catch { // These numbers are maintained by a script - Version libraryVersion = { 0, 9, 4, "integration" }; + Version libraryVersion = { 0, 9, 5, "integration" }; } // #included from: ../reporters/catch_reporter_basic.hpp @@ -6149,7 +6153,7 @@ namespace Catch { virtual void StartGroup( const std::string& groupName ) { if( groupName.empty() ) - m_statsForSuites.push_back( Stats( "all tests" ) ); + m_statsForSuites.push_back( Stats( m_config.name ) ); else m_statsForSuites.push_back( Stats( groupName ) ); m_currentStats = &m_statsForSuites.back();