From 8b1b7cd66e8bc92e4056d201d8e1d88ce480a2cc Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Mon, 3 Aug 2015 07:40:52 +0100 Subject: [PATCH] dev build 11 --- README.md | 2 +- include/internal/catch_version.hpp | 2 +- single_include/catch.hpp | 155 +++++++++++++---------------- 3 files changed, 73 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 4a9df385..3fc52b0c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![catch logo](catch-logo-small.png) -*v1.2.1-develop.10* +*v1.2.1-develop.11* Build status (on Travis CI) [![Build Status](https://travis-ci.org/philsquared/Catch.png)](https://travis-ci.org/philsquared/Catch) diff --git a/include/internal/catch_version.hpp b/include/internal/catch_version.hpp index f4272a88..ca18ef0d 100644 --- a/include/internal/catch_version.hpp +++ b/include/internal/catch_version.hpp @@ -37,7 +37,7 @@ namespace Catch { return os; } - Version libraryVersion( 1, 2, 1, "develop", 10 ); + Version libraryVersion( 1, 2, 1, "develop", 11 ); } diff --git a/single_include/catch.hpp b/single_include/catch.hpp index ccfdde11..ac4bb515 100644 --- a/single_include/catch.hpp +++ b/single_include/catch.hpp @@ -1,6 +1,6 @@ /* - * Catch v1.2.1-develop.10 - * Generated: 2015-07-24 08:13:33.830879 + * Catch v1.2.1-develop.11 + * Generated: 2015-08-03 07:40:22.369337 * ---------------------------------------------------------- * This file has been merged from multiple headers. Please don't edit it directly * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. @@ -131,10 +131,13 @@ // GCC #ifdef __GNUC__ -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) ) +#if __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) # define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR #endif +// - otherwise more recent versions define __cplusplus >= 201103L +// and will get picked up below + #endif // __GNUC__ //////////////////////////////////////////////////////////////////////////////// @@ -451,8 +454,7 @@ namespace Catch { return *this; } void swap( Ptr& other ) { std::swap( m_p, other.m_p ); } - T* get() { return m_p; } - const T* get() const{ return m_p; } + T* get() const{ return m_p; } T& operator*() const { return *m_p; } T* operator->() const { return m_p; } bool operator !() const { return m_p == CATCH_NULL; } @@ -5645,89 +5647,76 @@ namespace Catch { namespace Catch { - class Runner { + Ptr makeReporter( Ptr const& config ) { + std::string reporterName = config->getReporterName().empty() + ? "console" + : config->getReporterName(); - public: - Runner( Ptr const& config ) - : m_config( config ) - { - openStream(); - makeReporter(); + Ptr reporter = getRegistryHub().getReporterRegistry().create( reporterName, config.get() ); + if( !reporter ) { + std::ostringstream oss; + oss << "No reporter registered with name: '" << reporterName << "'"; + throw std::domain_error( oss.str() ); } + return reporter; + } - Totals runTests() { - - RunContext context( m_config.get(), m_reporter ); - - Totals totals; - - context.testGroupStarting( "all tests", 1, 1 ); // deprecated? - - TestSpec testSpec = m_config->testSpec(); - if( !testSpec.hasFilters() ) - testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "~[.]" ).testSpec(); // All not hidden tests - - std::vector testCases; - getRegistryHub().getTestCaseRegistry().getFilteredTests( testSpec, *m_config, testCases ); - - int testsRunForGroup = 0; - for( std::vector::const_iterator it = testCases.begin(), itEnd = testCases.end(); - it != itEnd; - ++it ) { - testsRunForGroup++; - if( m_testsAlreadyRun.find( *it ) == m_testsAlreadyRun.end() ) { - - if( context.aborting() ) - break; - - totals += context.runTest( *it ); - m_testsAlreadyRun.insert( *it ); - } - } - std::vector skippedTestCases; - getRegistryHub().getTestCaseRegistry().getFilteredTests( testSpec, *m_config, skippedTestCases, true ); - - for( std::vector::const_iterator it = skippedTestCases.begin(), itEnd = skippedTestCases.end(); - it != itEnd; - ++it ) - m_reporter->skipTest( *it ); - - context.testGroupEnded( "all tests", totals, 1, 1 ); - return totals; - } - - private: - void openStream() { - // Open output file, if specified - if( !m_config->getFilename().empty() ) { - m_ofs.open( m_config->getFilename().c_str() ); - if( m_ofs.fail() ) { - std::ostringstream oss; - oss << "Unable to open file: '" << m_config->getFilename() << "'"; - throw std::domain_error( oss.str() ); - } - m_config->setStreamBuf( m_ofs.rdbuf() ); - } - } - void makeReporter() { - std::string reporterName = m_config->getReporterName().empty() - ? "console" - : m_config->getReporterName(); - - m_reporter = getRegistryHub().getReporterRegistry().create( reporterName, m_config.get() ); - if( !m_reporter ) { + void openStreamInto( Ptr const& config, std::ofstream& ofs ) { + // Open output file, if specified + if( !config->getFilename().empty() ) { + ofs.open( config->getFilename().c_str() ); + if( ofs.fail() ) { std::ostringstream oss; - oss << "No reporter registered with name: '" << reporterName << "'"; + oss << "Unable to open file: '" << config->getFilename() << "'"; throw std::domain_error( oss.str() ); } + config->setStreamBuf( ofs.rdbuf() ); } + } - private: - Ptr m_config; - std::ofstream m_ofs; - Ptr m_reporter; - std::set m_testsAlreadyRun; - }; + Totals runTests( Ptr const& config ) { + + std::ofstream ofs; + openStreamInto( config, ofs ); + Ptr reporter = makeReporter( config ); + + RunContext context( config.get(), reporter ); + + Totals totals; + + context.testGroupStarting( config->name(), 1, 1 ); + + TestSpec testSpec = config->testSpec(); + if( !testSpec.hasFilters() ) + testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "~[.]" ).testSpec(); // All not hidden tests + + std::vector testCases; + getRegistryHub().getTestCaseRegistry().getFilteredTests( testSpec, *config, testCases ); + + std::set testsAlreadyRun; + for( std::vector::const_iterator it = testCases.begin(), itEnd = testCases.end(); + it != itEnd; + ++it ) { + if( testsAlreadyRun.find( *it ) == testsAlreadyRun.end() ) { + + if( context.aborting() ) + break; + + totals += context.runTest( *it ); + testsAlreadyRun.insert( *it ); + } + } + std::vector skippedTestCases; + getRegistryHub().getTestCaseRegistry().getFilteredTests( testSpec, *config, skippedTestCases, true ); + + for( std::vector::const_iterator it = skippedTestCases.begin(), itEnd = skippedTestCases.end(); + it != itEnd; + ++it ) + reporter->skipTest( *it ); + + context.testGroupEnded( config->name(), totals, 1, 1 ); + return totals; + } void applyFilenamesAsTags() { std::vector const& tests = getRegistryHub().getTestCaseRegistry().getAllTests(); @@ -5824,13 +5813,11 @@ namespace Catch { seedRng( *m_config ); - Runner runner( m_config ); - // Handle list request if( Option listed = list( config() ) ) return static_cast( *listed ); - return static_cast( runner.runTests().assertions.failed ); + return static_cast( runTests( m_config ).assertions.failed ); } catch( std::exception& ex ) { Catch::cerr() << ex.what() << std::endl; @@ -6942,7 +6929,7 @@ namespace Catch { return os; } - Version libraryVersion( 1, 2, 1, "develop", 10 ); + Version libraryVersion( 1, 2, 1, "develop", 11 ); }