From 8d44f2dbb2820ca3596cb0e2c049562f3f2ad285 Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Wed, 13 Nov 2013 08:10:45 +0000 Subject: [PATCH] build 13 --- README.md | 2 +- include/internal/catch_version.hpp | 2 +- single_include/catch.hpp | 150 +++++++++++------------------ 3 files changed, 56 insertions(+), 98 deletions(-) diff --git a/README.md b/README.md index 7ca7994b..3579e112 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![catch logo](catch-logo-small.png) -*v1.0 build 12 (master branch)* +*v1.0 build 13 (master branch)* 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 68912715..89b4e04f 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( 1, 0, 12, "master" ); + Version libraryVersion( 1, 0, 13, "master" ); } #endif // TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED diff --git a/single_include/catch.hpp b/single_include/catch.hpp index dedb9363..2fc6b728 100644 --- a/single_include/catch.hpp +++ b/single_include/catch.hpp @@ -1,6 +1,6 @@ /* - * CATCH v1.0 build 12 (master branch) - * Generated: 2013-11-09 07:46:33.549497 + * CATCH v1.0 build 13 (master branch) + * Generated: 2013-11-13 08:10:05.836093 * ---------------------------------------------------------- * This file has been merged from multiple headers. Please don't edit it directly * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. @@ -4574,76 +4574,29 @@ namespace Catch { std::cout << "All available test cases:\n"; else std::cout << "Matching test cases:\n"; - std::vector const& allTests = getRegistryHub().getTestCaseRegistry().getAllTests(); - std::vector::const_iterator it = allTests.begin(), itEnd = allTests.end(); - - // First pass - get max tags - std::size_t maxTagLen = 0; - std::size_t maxNameLen = 0; - for(; it != itEnd; ++it ) { - if( matchesFilters( config.filters(), *it ) ) { - maxTagLen = (std::max)( it->getTestCaseInfo().tagsAsString.size(), maxTagLen ); - maxNameLen = (std::max)( it->getTestCaseInfo().name.size(), maxNameLen ); - } - } - - // Try to fit everything in. If not shrink tag column first, down to 30 - // then shrink name column until it all fits (strings will be wrapped within column) - while( maxTagLen + maxNameLen > CATCH_CONFIG_CONSOLE_WIDTH-5 ) { - if( maxTagLen > 30 ) - --maxTagLen; - else - --maxNameLen; - } std::size_t matchedTests = 0; - for( it = allTests.begin(); it != itEnd; ++it ) { + TextAttributes nameAttr, tagsAttr; + nameAttr.setInitialIndent( 2 ).setIndent( 4 ); + tagsAttr.setIndent( 6 ); + + std::vector const& allTests = getRegistryHub().getTestCaseRegistry().getAllTests(); + for( std::vector::const_iterator it = allTests.begin(), itEnd = allTests.end(); + it != itEnd; + ++it ) if( matchesFilters( config.filters(), *it ) ) { matchedTests++; - Text nameWrapper( it->getTestCaseInfo().name, - TextAttributes() - .setWidth( maxNameLen+2 ) - .setInitialIndent(2) - .setIndent(4) ); + TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); + Colour::Code colour = testCaseInfo.isHidden + ? Colour::SecondaryText + : Colour::None; + Colour colourGuard( colour ); - Text tagsWrapper( it->getTestCaseInfo().tagsAsString, - TextAttributes() - .setWidth( maxTagLen ) - .setInitialIndent(0) - .setIndent( 2 ) ); - - for( std::size_t i = 0; i < (std::max)( nameWrapper.size(), tagsWrapper.size() ); ++i ) { - Colour::Code colour = Colour::None; - if( it->getTestCaseInfo().isHidden ) - colour = Colour::SecondaryText; - std::string nameCol; - if( i < nameWrapper.size() ) { - nameCol = nameWrapper[i]; - } - else { - nameCol = " ..."; - colour = Colour::SecondaryText; - } - - { - Colour colourGuard( colour ); - std::cout << nameCol; - } - if( i < tagsWrapper.size() && !tagsWrapper[i].empty() ) { - size_t padLen( maxNameLen > nameCol.size() ? maxNameLen - nameCol.size() : 0 ); - if( i == 0 ) { - Colour colourGuard( Colour::SecondaryText ); - std::cout << " " << std::string( padLen, '.' ) << " "; - } - else { - std::cout << std::string( padLen, ' ' ) << " "; - } - std::cout << tagsWrapper[i]; - } - std::cout << "\n"; - } + std::cout << Text( testCaseInfo.name, nameAttr ) << std::endl; + if( !testCaseInfo.tags.empty() ) + std::cout << Text( testCaseInfo.tagsAsString, tagsAttr ) << std::endl; } - } + if( config.filters().empty() ) std::cout << pluralise( matchedTests, "test case" ) << "\n" << std::endl; else @@ -4656,21 +4609,20 @@ namespace Catch { std::cout << "All available tags:\n"; else std::cout << "Matching tags:\n"; - std::vector const& allTests = getRegistryHub().getTestCaseRegistry().getAllTests(); - std::vector::const_iterator it = allTests.begin(), itEnd = allTests.end(); std::map tagCounts; - std::size_t maxTagLen = 0; - - for(; it != itEnd; ++it ) { + std::vector const& allTests = getRegistryHub().getTestCaseRegistry().getAllTests(); + for( std::vector::const_iterator it = allTests.begin(), + itEnd = allTests.end(); + it != itEnd; + ++it ) { if( matchesFilters( config.filters(), *it ) ) { for( std::set::const_iterator tagIt = it->getTestCaseInfo().tags.begin(), tagItEnd = it->getTestCaseInfo().tags.end(); tagIt != tagItEnd; ++tagIt ) { std::string tagName = *tagIt; - maxTagLen = (std::max)( maxTagLen, tagName.size() ); std::map::iterator countIt = tagCounts.find( tagName ); if( countIt == tagCounts.end() ) tagCounts.insert( std::make_pair( tagName, 1 ) ); @@ -4679,26 +4631,18 @@ namespace Catch { } } } - maxTagLen +=4; - if( maxTagLen > CATCH_CONFIG_CONSOLE_WIDTH-10 ) - maxTagLen = CATCH_CONFIG_CONSOLE_WIDTH-10; - for( std::map::const_iterator countIt = tagCounts.begin(), countItEnd = tagCounts.end(); + for( std::map::const_iterator countIt = tagCounts.begin(), + countItEnd = tagCounts.end(); countIt != countItEnd; ++countIt ) { + std::ostringstream oss; + oss << " " << countIt->second << " "; Text wrapper( "[" + countIt->first + "]", TextAttributes() - .setIndent(2) - .setWidth( maxTagLen ) ); - std::cout << wrapper; - std::size_t dots = 2; - if( maxTagLen > wrapper.last().size() ) - dots += maxTagLen - wrapper.last().size(); - { - Colour colourGuard( Colour::SecondaryText ); - std::cout << std::string( dots, '.' ); - } - std::cout << countIt->second - << "\n"; + .setInitialIndent( 0 ) + .setIndent( oss.str().size() ) + .setWidth( CATCH_CONFIG_CONSOLE_WIDTH-10 ) ); + std::cout << oss.str() << wrapper << "\n"; } std::cout << pluralise( tagCounts.size(), "tag" ) << "\n" << std::endl; return tagCounts.size(); @@ -6373,7 +6317,7 @@ namespace Catch { namespace Catch { // These numbers are maintained by a script - Version libraryVersion( 1, 0, 12, "master" ); + Version libraryVersion( 1, 0, 13, "master" ); } // #included from: catch_text.hpp @@ -7296,13 +7240,18 @@ namespace Catch { virtual bool assertionEnded( AssertionStats const& _assertionStats ) { AssertionResult const& result = _assertionStats.assertionResult; + bool printInfoMessages = true; + // Drop out if result was successful and we're not printing those - if( !m_config->includeSuccessfulResults() && result.isOk() ) - return false; + if( !m_config->includeSuccessfulResults() && result.isOk() ) { + if( result.getResultType() != ResultWas::Warning ) + return false; + printInfoMessages = false; + } lazyPrint(); - AssertionPrinter printer( stream, _assertionStats ); + AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); printer.print(); stream << std::endl; return true; @@ -7360,13 +7309,14 @@ namespace Catch { class AssertionPrinter { void operator= ( AssertionPrinter const& ); public: - AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats ) + AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages ) : stream( _stream ), stats( _stats ), result( _stats.assertionResult ), colour( Colour::None ), message( result.getMessage() ), - messages( _stats.infoMessages ) + messages( _stats.infoMessages ), + printInfoMessages( _printInfoMessages ) { switch( result.getResultType() ) { case ResultWas::Ok: @@ -7469,7 +7419,9 @@ namespace Catch { for( std::vector::const_iterator it = messages.begin(), itEnd = messages.end(); it != itEnd; ++it ) { - stream << Text( it->message, TextAttributes().setIndent(2) ) << "\n"; + // If this assertion is a warning ignore any INFO messages + if( printInfoMessages || it->type != ResultWas::Info ) + stream << Text( it->message, TextAttributes().setIndent(2) ) << "\n"; } } void printSourceInfo() const { @@ -7485,6 +7437,7 @@ namespace Catch { std::string messageLabel; std::string message; std::vector messages; + bool printInfoMessages; }; void lazyPrint() { @@ -7570,9 +7523,14 @@ namespace Catch { } void printTotals( const Totals& totals ) { - if( totals.assertions.total() == 0 ) { + if( totals.testCases.total() == 0 ) { stream << "No tests ran"; } + else if( totals.assertions.total() == 0 ) { + Colour colour( Colour::Yellow ); + printCounts( "test case", totals.testCases ); + stream << " (no assertions)"; + } else if( totals.assertions.failed ) { Colour colour( Colour::ResultError ); printCounts( "test case", totals.testCases );