diff --git a/LICENSE_1_0.txt b/LICENSE_1_0.txt index 1dad8e93..36b7cd93 100644 --- a/LICENSE_1_0.txt +++ b/LICENSE_1_0.txt @@ -1,23 +1,23 @@ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 5efeaddd..4d5f7507 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![catch logo](catch-logo-small.png) -*v1.0 build 11 (master branch)* +*v1.0 build 14 (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/docs/build-systems.md b/docs/build-systems.md new file mode 100644 index 00000000..a0aed10a --- /dev/null +++ b/docs/build-systems.md @@ -0,0 +1,36 @@ +# Integration with build systems + +## CMake + +You can use the following CMake script to automatically fetch Catch from github and configure it as an external project: + +```CMake +cmake_minimum_required(VERSION 2.8.8) +project(catch_builder CXX) +include(ExternalProject) + +ExternalProject_Add( + catch + PREFIX ${CMAKE_BINARY_DIR}/catch + GIT_REPOSITORY https://github.com/philsquared/Catch.git + TIMEOUT 10 + UPDATE_COMMAND ${GIT_EXECUTABLE} pull + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + LOG_DOWNLOAD ON + ) + +# Expose required variable (CATCH_INCLUDE_DIR) to parent scope +ExternalProject_Get_Property(catch source_dir) +set(CATCH_INCLUDE_DIR ${source_dir}/include CACHE INTERNAL "Path to include folder for Catch") +``` + +If you put it in, e.g., `${PROJECT_SRC_DIR}/${EXT_PROJECTS_DIR}/catch/`, you can use it in your project by adding the following to your root CMake file: + +```CMake +# Includes Catch in the project: +add_subdirectory(${EXT_PROJECTS_DIR}/catch) +include_directories(${CATCH_INCLUDE_DIR} ${COMMON_INCLUDES}) +enable_testing(true) # Enables unit-testing. +``` \ No newline at end of file diff --git a/docs/command-line.md b/docs/command-line.md index b94dc86f..915286c8 100644 --- a/docs/command-line.md +++ b/docs/command-line.md @@ -21,7 +21,7 @@ Note that options are described according to the following pattern: Test cases, wildcarded test cases, tags and tag expressions are all passed directly as arguments. Tags are distinguished by being enclosed in square brackets. -If no test specs are supplied then all test cases, except "hidden" tests (tagged ```[hide]``` or, in the legacy case, prefixed by `'./'`) are run +If no test specs are supplied then all test cases, except "hidden" tests (tagged ```[hide]```, ```[.]``` or, in the legacy case, prefixed by `'./'`) are run. Specs must be enclosed in quotes if they contain spaces. If they do not contain spaces the quotes are optional. diff --git a/docs/test-cases-and-sections.md b/docs/test-cases-and-sections.md index 4fc3f6f8..863d5faf 100644 --- a/docs/test-cases-and-sections.md +++ b/docs/test-cases-and-sections.md @@ -15,7 +15,22 @@ For examples see the [Tutorial](tutorial.md) ## Tags --{placeholder for documentation of tags}- +Tags allow an arbitrary number of additional strings to be associated with a test case. Test cases can be selected (for running, or just for listing) by tag - or even by an expression that combines several tags. At their most basic level they provide a simple way to group several related tests together. + +As an example - given the following test cases: + + TEST_CASE( "A", "[widget]" ) { /* ... */ } + TEST_CASE( "B", "[widget]" ) { /* ... */ } + TEST_CASE( "C", "[gadget]" ) { /* ... */ } + TEST_CASE( "D", "[widget][gadget]" ) { /* ... */ } + +The tag expression, ```"[widget]"``` selects A, B & D. ```"[gadget]"``` selects C & D. ```"[widget][gadget]"``` selects just D and ```"[widget],[gadget]"``` selects all four test cases. + +For more detail on command line selection see [the command line docs](command-line.md#specifying-which-tests-to-run) + +A special tag name, ```[hide]``` causes test cases to be skipped from the default list (ie when no test cases have been explicitly selected through tag expressions or name wildcards). ```[.]``` is an alias for ```[hide]```. + +Tag names are not case sensitive. ## BDD-style test cases diff --git a/docs/tutorial.md b/docs/tutorial.md index 12f838d9..2d75dab0 100644 --- a/docs/tutorial.md +++ b/docs/tutorial.md @@ -87,11 +87,11 @@ Of course there are still more issues to do deal with. For example we'll hit pro Although this was a simple test it's been enough to demonstrate a few things about how Catch is used. Let's take moment to consider those before we move on. 1. All we did was ```#define``` one identifier and ```#include``` one header and we got everything - even an implementation of ```main()``` that will [respond to command line arguments](command-line.md). You can only use that ```#define``` in one implementation file, for (hopefully) obvious reasons. Once you have more than one file with unit tests in you'll just ```#include "catch.hpp"``` and go. Usually it's a good idea to have a dedicated implementation file that just has ```#define CATCH_CONFIG_MAIN``` and ```#include "catch.hpp"```. You can also provide your own implementation of main and drive Catch yourself (see [Supplying-your-own-main()](own-main.md). -2. We introduce test cases with the TEST_CASE macro. This macro takes one or two arguments - a free form test name and, optionally, one or more tags (for more see Test cases and Sections, below. The test name must be unique. You can run sets of tests by specifying a wildcarded test name or a tag expression. See the [command line docs](command-line.md) for more information on running tests. +2. We introduce test cases with the TEST_CASE macro. This macro takes one or two arguments - a free form test name and, optionally, one or more tags (for more see Test cases and Sections, below. The test name must be unique. You can run sets of tests by specifying a wildcarded test name or a tag expression. See the [command line docs](command-line.md) for more information on running tests. 3. The name and tags arguments are just strings. We haven't had to declare a function or method - or explicitly register the test case anywhere. Behind the scenes a function with a generated name is defined for you, and automatically registered using static registry classes. By abstracting the function name away we can name our tests without the constraints of identifier names. 4. We write our individual test assertions using the REQUIRE macro. Rather than a separate macro for each type of condition we express the condition naturally using C/C++ syntax. Behind the scenes a simple set of expression templates captures the left-hand-side and right-hand-side of the expression so we can display the values in our test report. As we'll see later there _are_ other assertion macros - but because of this technique the number of them is drastically reduced. - + ## Test cases and sections Most test frameworks have a class-based fixture mechanism. That is, test cases map to methods on a class and common setup and teardown can be performed in ```setup()``` and ```teardown()``` methods (or constructor/ destructor in languages, like C++, that support deterministic destruction). @@ -140,7 +140,82 @@ This works because the ```SECTION``` macro contains an if statement that calls b So far so good - this is already an improvement on the setup/ teardown approach because now we see our setup code inline and we can use the stack. --{placeholder for documentation on nested sections}- +The power of sections really shows, however, when we need to execute a sequence of, checked, operations. Continuing the vector example we might want to verify that after reserving a larger capacity, if we reserve smaller capacity (but still larger than the current size) then the capacity is not, in fact, changed. We can do that, naturally, like so: + + SECTION( "reserving bigger changes capacity but not size" ) { + v.reserve( 10 ); + + REQUIRE( v.size() == 5 ); + REQUIRE( v.capacity() >= 10 ); + + SECTION( "reserving smaller again does not change capacity" ) { + v.reserve( 7 ); + + REQUIRE( v.capacity() >= 10 ); + } + } + +Sections can be nested to an arbitrary depth (limited only by your stack size). Each leaf section (i.e. a section that contains no nested sections) will be executed exactly once, on a separate path of execution from any other leaf section (so no leaf section can interfere with another). Obviously a failure in a parent section will prevent nested sections from running - but that's the idea. + +## BDD-Style + +If you name your test cases and sections appropriately you can achieve a BDD-style specification structure. This became such a useful way of working that first class support has been added to Catch. Scenarios can be specified using ```SCENARIO```, ```GIVEN```, ```WHEN``` and ```THEN``` macros, which map on to ```TEST_CASE```s and ```SECTION```s, respectively (for more details see [Test cases and sections](test-cases-and-sections.md)). + +The vector example can be adjusted to use these macros like so: + +```c++ +SCENARIO( "vectors can be sized and resized", "[vector]" ) { + + GIVEN( "A vector with some items" ) { + std::vector v( 5 ); + + REQUIRE( v.size() == 5 ); + REQUIRE( v.capacity() >= 5 ); + + WHEN( "the size is increased" ) { + v.resize( 10 ); + + THEN( "the size and capacity change" ) { + REQUIRE( v.size() == 10 ); + REQUIRE( v.capacity() >= 10 ); + } + } + WHEN( "the size is reduced" ) { + v.resize( 0 ); + + THEN( "the size changes but not capacity" ) { + REQUIRE( v.size() == 0 ); + REQUIRE( v.capacity() >= 5 ); + } + } + WHEN( "more capacity is reserved" ) { + v.reserve( 10 ); + + THEN( "the capacity changes but not the size" ) { + REQUIRE( v.size() == 5 ); + REQUIRE( v.capacity() >= 10 ); + } + } + WHEN( "less capacity is reserved" ) { + v.reserve( 0 ); + + THEN( "neither size nor capacity are changed" ) { + REQUIRE( v.size() == 5 ); + REQUIRE( v.capacity() >= 5 ); + } + } + } +} +``` + +A nice consequence of this is that when these tests are run the test names are reported like this: + +``` +Scenario: vectors can be sized and resized + Given: A vector with some items + When: more capacity is reserved + Then: the capacity changes but not the size +``` ## Next steps For more specific information see the [Reference pages](reference-index.md) diff --git a/include/internal/catch_commandline.hpp b/include/internal/catch_commandline.hpp index 3b32f2b2..5b80761f 100644 --- a/include/internal/catch_commandline.hpp +++ b/include/internal/catch_commandline.hpp @@ -12,6 +12,8 @@ #include "catch_common.h" #include "clara.h" +#include + namespace Catch { inline void abortAfterFirst( ConfigData& config ) { config.abortAfter = 1; } @@ -38,7 +40,18 @@ namespace Catch { ? ShowDurations::Always : ShowDurations::Never; } - + inline void loadTestNamesFromFile( ConfigData& config, std::string const& _filename ) { + std::ifstream f( _filename.c_str() ); + if( !f.is_open() ) + throw std::domain_error( "Unable to load input file: " + _filename ); + + std::string line; + while( std::getline( f, line ) ) { + line = trim(line); + if( !line.empty() && !startsWith( line, "#" ) ) + addTestOrTags( config, line ); + } + } inline Clara::CommandLine makeCommandLineParser() { @@ -53,19 +66,15 @@ namespace Catch { .longOpt( "help" ); cli.bind( &ConfigData::listTests ) - .describe( "list all (or matching) test cases" ) + .describe( "list all/matching test cases" ) .shortOpt( "l") .longOpt( "list-tests" ); cli.bind( &ConfigData::listTags ) - .describe( "list all (or matching) tags" ) + .describe( "list all/matching tags" ) .shortOpt( "t") .longOpt( "list-tags" ); - cli.bind( &ConfigData::listReporters ) - .describe( "list all reporters" ) - .longOpt( "list-reporters" ); - cli.bind( &ConfigData::showSuccessfulTests ) .describe( "include successful tests in output" ) .shortOpt( "s") @@ -88,7 +97,7 @@ namespace Catch { .hint( "filename" ); cli.bind( &ConfigData::reporterName ) - .describe( "reporter to use - defaults to console" ) + .describe( "reporter to use (defaults to console)" ) .shortOpt( "r") .longOpt( "reporter" ) // .hint( "name[:filename]" ); @@ -133,6 +142,22 @@ namespace Catch { .longOpt( "durations" ) .hint( "yes/no" ); + cli.bind( &loadTestNamesFromFile ) + .describe( "load test names to run from a file" ) + .shortOpt( "f") + .longOpt( "input-file" ) + .hint( "filename" ); + + // Less common commands which don't have a short form + cli.bind( &ConfigData::listTestNamesOnly ) + .describe( "list all/matching test cases names only" ) + .longOpt( "list-test-names-only" ); + + cli.bind( &ConfigData::listReporters ) + .describe( "list all reporters" ) + .longOpt( "list-reporters" ); + + return cli; } diff --git a/include/internal/catch_config.hpp b/include/internal/catch_config.hpp index f561b260..51b5913a 100644 --- a/include/internal/catch_config.hpp +++ b/include/internal/catch_config.hpp @@ -30,6 +30,7 @@ namespace Catch { : listTests( false ), listTags( false ), listReporters( false ), + listTestNamesOnly( false ), showSuccessfulTests( false ), shouldDebugBreak( false ), noThrow( false ), @@ -43,6 +44,7 @@ namespace Catch { bool listTests; bool listTags; bool listReporters; + bool listTestNamesOnly; bool showSuccessfulTests; bool shouldDebugBreak; @@ -112,6 +114,7 @@ namespace Catch { } bool listTests() const { return m_data.listTests; } + bool listTestNamesOnly() const { return m_data.listTestNamesOnly; } bool listTags() const { return m_data.listTags; } bool listReporters() const { return m_data.listReporters; } diff --git a/include/internal/catch_console_colour_impl.hpp b/include/internal/catch_console_colour_impl.hpp index 0183f785..b20762f3 100644 --- a/include/internal/catch_console_colour_impl.hpp +++ b/include/internal/catch_console_colour_impl.hpp @@ -117,7 +117,7 @@ namespace { }; inline bool shouldUseColourForPlatform() { - return isatty( fileno(stdout) ); + return isatty(STDOUT_FILENO); } PosixColourImpl platformColourImpl; diff --git a/include/internal/catch_list.hpp b/include/internal/catch_list.hpp index 45807edd..70d7668c 100644 --- a/include/internal/catch_list.hpp +++ b/include/internal/catch_list.hpp @@ -30,76 +30,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 @@ -107,26 +60,39 @@ namespace Catch { return matchedTests; } + inline std::size_t listTestsNamesOnly( Config const& config ) { + std::size_t matchedTests = 0; + 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++; + TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); + std::cout << testCaseInfo.name << std::endl; + } + return matchedTests; + } + inline std::size_t listTags( Config const& config ) { if( config.filters().empty() ) 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 ) ); @@ -135,26 +101,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(); @@ -187,6 +145,8 @@ namespace Catch { Option listedCount; if( config.listTests() ) listedCount = listedCount.valueOr(0) + listTests( config ); + if( config.listTestNamesOnly() ) + listedCount = listedCount.valueOr(0) + listTestsNamesOnly( config ); if( config.listTags() ) listedCount = listedCount.valueOr(0) + listTags( config ); if( config.listReporters() ) diff --git a/include/internal/catch_test_case_info.hpp b/include/internal/catch_test_case_info.hpp index 3a279602..59fc39f4 100644 --- a/include/internal/catch_test_case_info.hpp +++ b/include/internal/catch_test_case_info.hpp @@ -22,7 +22,7 @@ namespace Catch { SourceLineInfo const& _lineInfo ) { std::string desc = _descOrTags; - bool isHidden( startsWith( _name, "./" ) ); + bool isHidden( startsWith( _name, "./" ) ); // Legacy support std::set tags; TagExtracter( tags ).parse( desc ); if( tags.find( "hide" ) != tags.end() || tags.find( "." ) != tags.end() ) diff --git a/include/internal/catch_test_case_registry_impl.hpp b/include/internal/catch_test_case_registry_impl.hpp index 41714bc8..af1ee29f 100644 --- a/include/internal/catch_test_case_registry_impl.hpp +++ b/include/internal/catch_test_case_registry_impl.hpp @@ -42,8 +42,8 @@ namespace Catch { else { TestCase const& prev = *m_functions.find( testCase ); std::cerr << "error: TEST_CASE( \"" << name << "\" ) already defined.\n" - << "\tFirst seen at " << SourceLineInfo( prev.getTestCaseInfo().lineInfo ) << "\n" - << "\tRedefined at " << SourceLineInfo( testCase.getTestCaseInfo().lineInfo ) << std::endl; + << "\tFirst seen at " << prev.getTestCaseInfo().lineInfo << "\n" + << "\tRedefined at " << testCase.getTestCaseInfo().lineInfo << std::endl; exit(1); } } diff --git a/include/internal/catch_version.hpp b/include/internal/catch_version.hpp index 4b021717..466a9a43 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, 11, "master" ); + Version libraryVersion( 1, 0, 14, "master" ); } #endif // TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED diff --git a/include/internal/clara.h b/include/internal/clara.h index fa58da79..b25778fc 100644 --- a/include/internal/clara.h +++ b/include/internal/clara.h @@ -155,6 +155,10 @@ namespace Clara { void (*function)( C& ); }; +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4702) +#endif template struct BoundBinaryFunction : IArgFunction{ BoundBinaryFunction( void (*_function)( C&, T ) ) : function( _function ) {} @@ -172,6 +176,9 @@ namespace Clara { virtual IArgFunction* clone() const { return new BoundBinaryFunction( *this ); } void (*function)( C&, T ); }; +#ifdef _MSC_VER +# pragma warning(pop) +#endif template BoundArgFunction makeBoundField( M C::* _member ) { @@ -305,6 +312,13 @@ namespace Clara { int position; }; + // NOTE: std::auto_ptr is deprecated in c++11/c++0x +#if defined(__cplusplus) && __cplusplus > 199711L + typedef std::unique_ptr ArgAutoPtr; +#else + typedef std::auto_ptr ArgAutoPtr; +#endif + class ArgBinder { public: template @@ -329,7 +343,7 @@ namespace Clara { else if( m_arg.isAnyPositional() ) { if( m_cl->m_arg.get() ) throw std::logic_error( "Only one unpositional argument can be added" ); - m_cl->m_arg = std::auto_ptr( new Arg( m_arg ) ); + m_cl->m_arg = ArgAutoPtr( new Arg( m_arg ) ); } else m_cl->m_options.push_back( m_arg ); @@ -373,7 +387,7 @@ namespace Clara { m_highestSpecifiedArgPosition( other.m_highestSpecifiedArgPosition ) { if( other.m_arg.get() ) - m_arg = std::auto_ptr( new Arg( *other.m_arg ) ); + m_arg = ArgAutoPtr( new Arg( *other.m_arg ) ); } template @@ -543,7 +557,7 @@ namespace Clara { Detail::BoundArgFunction m_boundProcessName; std::vector m_options; std::map m_positionalArgs; - std::auto_ptr m_arg; + ArgAutoPtr m_arg; int m_highestSpecifiedArgPosition; }; diff --git a/include/reporters/catch_reporter_console.hpp b/include/reporters/catch_reporter_console.hpp index 816f4214..17b07a7f 100644 --- a/include/reporters/catch_reporter_console.hpp +++ b/include/reporters/catch_reporter_console.hpp @@ -41,13 +41,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; @@ -105,13 +110,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: @@ -214,7 +220,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 { @@ -230,6 +238,7 @@ namespace Catch { std::string messageLabel; std::string message; std::vector messages; + bool printInfoMessages; }; void lazyPrint() { @@ -315,9 +324,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 ); diff --git a/projects/CMake/CMakeLists.txt b/projects/CMake/CMakeLists.txt index dc1c8357..f796f157 100644 --- a/projects/CMake/CMakeLists.txt +++ b/projects/CMake/CMakeLists.txt @@ -122,8 +122,6 @@ CheckFileList(CATCH_SINGLE_INCLUDE "single_include") set(TEST_SOURCES "${SELF_TEST_DIR}/ApproxTests.cpp" "${SELF_TEST_DIR}/BDDTests.cpp" - "${SELF_TEST_DIR}/catch_self_test.cpp" - "${SELF_TEST_DIR}/catch_self_test.hpp" "${SELF_TEST_DIR}/ClassTests.cpp" "${SELF_TEST_DIR}/CmdLineTests.cpp" "${SELF_TEST_DIR}/ConditionTests.cpp" diff --git a/projects/SelfTest/ApproxTests.cpp b/projects/SelfTest/ApproxTests.cpp index acf96c99..1df76155 100644 --- a/projects/SelfTest/ApproxTests.cpp +++ b/projects/SelfTest/ApproxTests.cpp @@ -11,8 +11,8 @@ /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./succeeding/Approx/simple", - "Some simple comparisons between doubles" + "Some simple comparisons between doubles", + "[Approx]" ) { double d = 1.23; @@ -29,8 +29,8 @@ TEST_CASE /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./succeeding/Approx/epsilon", - "Approximate comparisons with different epsilons" + "Approximate comparisons with different epsilons", + "[Approx]" ) { double d = 1.23; @@ -42,8 +42,8 @@ TEST_CASE /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./succeeding/Approx/float", - "Approximate comparisons with floats" + "Approximate comparisons with floats", + "[Approx]" ) { REQUIRE( 1.23f == Approx( 1.23f ) ); @@ -53,8 +53,8 @@ TEST_CASE /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./succeeding/Approx/int", - "Approximate comparisons with ints" + "Approximate comparisons with ints", + "[Approx]" ) { REQUIRE( 1 == Approx( 1 ) ); @@ -64,8 +64,8 @@ TEST_CASE /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./succeeding/Approx/mixed", - "Approximate comparisons with mixed numeric types" + "Approximate comparisons with mixed numeric types", + "[Approx]" ) { const double dZero = 0; @@ -82,8 +82,8 @@ TEST_CASE /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./succeeding/Approx/custom", - "Use a custom approx" + "Use a custom approx", + "[Approx][custom]" ) { double d = 1.23; diff --git a/projects/SelfTest/Baselines/console.std.approved.txt b/projects/SelfTest/Baselines/console.std.approved.txt index feb08934..54bee3e5 100644 --- a/projects/SelfTest/Baselines/console.std.approved.txt +++ b/projects/SelfTest/Baselines/console.std.approved.txt @@ -4,7 +4,7 @@ CatchSelfTest is a host application. Run with -? for options ------------------------------------------------------------------------------- -./failing/TestClass/failingCase +A METHOD_AS_TEST_CASE based test run that fails ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -15,7 +15,7 @@ with expansion: "hello" == "world" ------------------------------------------------------------------------------- -./failing/Fixture/failingCase +A TEST_CASE_METHOD based test run that fails ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -26,7 +26,7 @@ with expansion: 1 == 2 ------------------------------------------------------------------------------- -./failing/conditions/equality +Equality checks that should fail] ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -97,7 +97,7 @@ with expansion: 1.3 == Approx( 1.301 ) ------------------------------------------------------------------------------- -./failing/conditions/inequality +Inequality checks that should fails ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -128,7 +128,7 @@ with expansion: 5 != 5 ------------------------------------------------------------------------------- -./failing/conditions/ordered +Ordering comparison checks that should fail ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -229,7 +229,7 @@ with expansion: "hello" <= "a" ------------------------------------------------------------------------------- -./failing/conditions/not +'Not' checks that should fail ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -269,7 +269,7 @@ with expansion: !(1 == 1) ------------------------------------------------------------------------------- -./failing/exceptions/explicit +Expected exceptions that don't throw or unexpected exceptions fail the test ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -289,7 +289,7 @@ due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- -./failing/exceptions/implicit +When unchecked exceptions are thrown directly they are always failures ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -299,7 +299,7 @@ due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- -./failing/exceptions/implicit/2 +An unchecked exception reports the line of the last assertion ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -310,7 +310,7 @@ due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- -./failing/exceptions/implicit/3 +When unchecked exceptions are thrown from sections they are always failures section name ------------------------------------------------------------------------------- ExceptionTests.cpp: @@ -321,7 +321,7 @@ due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- -./failing/exceptions/implicit/4 +When unchecked exceptions are thrown from functions they are always failures ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -332,7 +332,7 @@ due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- -./failing/exceptions/custom +Unexpected custom exceptions can be translated ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -342,7 +342,7 @@ due to unexpected exception with message: custom exception ------------------------------------------------------------------------------- -./failing/exceptions/custom/nothrow +Custom exceptions can be translated when testing for nothrow ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -353,7 +353,7 @@ due to unexpected exception with message: custom exception - not std ------------------------------------------------------------------------------- -./failing/exceptions/custom/throw +Custom exceptions can be translated when testing for throwing as something else ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -364,7 +364,7 @@ due to unexpected exception with message: custom exception - not std ------------------------------------------------------------------------------- -./failing/exceptions/custom/double +Unexpected exceptions can be translated ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -374,7 +374,17 @@ due to unexpected exception with message: 3.14 ------------------------------------------------------------------------------- -./failing/message/info/1 +INFO and WARN do not abort tests +------------------------------------------------------------------------------- +MessageTests.cpp: +............................................................................... + +MessageTests.cpp:: +warning: + this is a warning + +------------------------------------------------------------------------------- +INFO gets logged on failure ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -388,7 +398,7 @@ with messages: so should this ------------------------------------------------------------------------------- -./mixed/message/info/2 +INFO gets logged on failure, even if captured before successful assertions ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -409,7 +419,7 @@ with message: and this, but later ------------------------------------------------------------------------------- -./failing/message/fail +FAIL aborts the test ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -419,7 +429,7 @@ explicitly with message: This is a failure ------------------------------------------------------------------------------- -./failing/message/sections +Output from all sections is reported one ------------------------------------------------------------------------------- MessageTests.cpp: @@ -430,7 +440,7 @@ explicitly with message: Message from section one ------------------------------------------------------------------------------- -./failing/message/sections +Output from all sections is reported two ------------------------------------------------------------------------------- MessageTests.cpp: @@ -443,7 +453,7 @@ explicitly with message: Message from section one Message from section two ------------------------------------------------------------------------------- -./mixed/message/scoped +SCOPED_INFO is reset for each loop ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -467,7 +477,19 @@ explicitly with message: Previous info should not be seen ------------------------------------------------------------------------------- -./mixed/Misc/Sections/nested2 +sends information to INFO +------------------------------------------------------------------------------- +MessageTests.cpp: +............................................................................... + +MessageTests.cpp:: FAILED: + REQUIRE( false ) +with messages: + hi + i := 7 + +------------------------------------------------------------------------------- +more nested SECTION tests s1 s2 ------------------------------------------------------------------------------- @@ -480,7 +502,7 @@ with expansion: 1 == 2 ------------------------------------------------------------------------------- -./mixed/Misc/Sections/loops +looped SECTION tests s1 ------------------------------------------------------------------------------- MiscTests.cpp: @@ -492,7 +514,7 @@ with expansion: 0 > 1 ------------------------------------------------------------------------------- -./mixed/Misc/loops +looped tests ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -542,19 +564,7 @@ with message: Some information An error ------------------------------------------------------------------------------- -./failing/info -------------------------------------------------------------------------------- -MiscTests.cpp: -............................................................................... - -MiscTests.cpp:: FAILED: - REQUIRE( false ) -with messages: - hi - i := 7 - -------------------------------------------------------------------------------- -./failing/checkedif +checkedIf, failing ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -570,7 +580,7 @@ with expansion: false ------------------------------------------------------------------------------- -./failing/checkedelse +checkedElse, failing ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -586,7 +596,7 @@ with expansion: false ------------------------------------------------------------------------------- -./manual/onechar +send a single char to INFO ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -597,7 +607,7 @@ with message: 3 ------------------------------------------------------------------------------- -./failing/matchers/Contains +Contains string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -608,7 +618,7 @@ with expansion: "this string contains 'abc' as a substring" contains: "not there" ------------------------------------------------------------------------------- -./failing/matchers/StartsWith +StartsWith string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -619,7 +629,7 @@ with expansion: "this string contains 'abc' as a substring" starts with: "string" ------------------------------------------------------------------------------- -./failing/matchers/EndsWith +EndsWith string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -630,7 +640,7 @@ with expansion: "this string contains 'abc' as a substring" ends with: "this" ------------------------------------------------------------------------------- -./failing/matchers/Equals +Equals string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -641,7 +651,17 @@ with expansion: "this string contains 'abc' as a substring" equals: "something else" ------------------------------------------------------------------------------- -./failing/CatchSectionInfiniteLoop +Nice descriptive name +------------------------------------------------------------------------------- +MiscTests.cpp: +............................................................................... + +MiscTests.cpp:: +warning: + This one ran + +------------------------------------------------------------------------------- +A couple of nested sections followed by a failure ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -651,7 +671,7 @@ explicitly with message: to infinity and beyond ------------------------------------------------------------------------------- -./failing/CatchSectionInfiniteLoop +A couple of nested sections followed by a failure ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -661,7 +681,7 @@ explicitly with message: to infinity and beyond ------------------------------------------------------------------------------- -./failing/CatchSectionInfiniteLoop +A couple of nested sections followed by a failure ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -670,18 +690,32 @@ MiscTests.cpp:: FAILED: explicitly with message: to infinity and beyond -Message from section one -Message from section two -Some information -An error -Message from section one -Message from section two -Some information -An error hello hello ------------------------------------------------------------------------------- -./failing/Tricky/non streamable type +Where the is more to the expression after the RHS[failing] +------------------------------------------------------------------------------- +TrickyTests.cpp: +............................................................................... + +TrickyTests.cpp:: +warning: + Uncomment the code in this test to check that it gives a sensible compiler + error + +------------------------------------------------------------------------------- +Where the LHS is not a simple value[failing] +------------------------------------------------------------------------------- +TrickyTests.cpp: +............................................................................... + +TrickyTests.cpp:: +warning: + Uncomment the code in this test to check that it gives a sensible compiler + error + +------------------------------------------------------------------------------- +A failing expression with a non streamable type is still captured[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -697,7 +731,7 @@ with expansion: {?} == {?} ------------------------------------------------------------------------------- -./failing/string literals +string literals of different sizes can be compared[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -708,5 +742,5 @@ with expansion: "first" == "second" =============================================================================== -122 test cases - 35 failed (753 assertions - 90 failed) +120 test cases - 35 failed (673 assertions - 90 failed) diff --git a/projects/SelfTest/Baselines/console.sw.approved.txt b/projects/SelfTest/Baselines/console.sw.approved.txt index c85230c3..7c39bd07 100644 --- a/projects/SelfTest/Baselines/console.sw.approved.txt +++ b/projects/SelfTest/Baselines/console.sw.approved.txt @@ -4,7 +4,7 @@ CatchSelfTest is a host application. Run with -? for options ------------------------------------------------------------------------------- -./succeeding/Approx/simple +Some simple comparisons between doubles ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -46,7 +46,7 @@ with expansion: Approx( 1.23 ) != 1.24 ------------------------------------------------------------------------------- -./succeeding/Approx/epsilon +Approximate comparisons with different epsilons ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -64,7 +64,7 @@ with expansion: 1.23 == Approx( 1.231 ) ------------------------------------------------------------------------------- -./succeeding/Approx/float +Approximate comparisons with floats ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -82,7 +82,7 @@ with expansion: 0 == Approx( 0 ) ------------------------------------------------------------------------------- -./succeeding/Approx/int +Approximate comparisons with ints ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -96,7 +96,7 @@ PASSED: REQUIRE( 0 == Approx( 0 ) ) ------------------------------------------------------------------------------- -./succeeding/Approx/mixed +Approximate comparisons with mixed numeric types ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -132,7 +132,7 @@ with expansion: 1.234 == Approx( 1.234 ) ------------------------------------------------------------------------------- -./succeeding/Approx/custom +Use a custom approx ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -204,7 +204,7 @@ with expansion: 3.1428571429 != Approx( 3.141 ) ------------------------------------------------------------------------------- -./succeeding/TestClass/succeedingCase +A METHOD_AS_TEST_CASE based test run that succeeds ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -216,7 +216,7 @@ with expansion: "hello" == "hello" ------------------------------------------------------------------------------- -./failing/TestClass/failingCase +A METHOD_AS_TEST_CASE based test run that fails ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -227,7 +227,7 @@ with expansion: "hello" == "world" ------------------------------------------------------------------------------- -./succeeding/Fixture/succeedingCase +A TEST_CASE_METHOD based test run that succeeds ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -239,7 +239,7 @@ with expansion: 1 == 1 ------------------------------------------------------------------------------- -./failing/Fixture/failingCase +A TEST_CASE_METHOD based test run that fails ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -250,7 +250,7 @@ with expansion: 1 == 2 ------------------------------------------------------------------------------- -./succeeding/conditions/equality +Equality checks that should succeed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -298,7 +298,7 @@ with expansion: 1.3 == Approx( 1.3 ) ------------------------------------------------------------------------------- -./failing/conditions/equality +Equality checks that should fail] ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -369,7 +369,7 @@ with expansion: 1.3 == Approx( 1.301 ) ------------------------------------------------------------------------------- -./succeeding/conditions/inequality +Inequality checks that should succeed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -441,7 +441,7 @@ with expansion: 5 != 6 ------------------------------------------------------------------------------- -./failing/conditions/inequality +Inequality checks that should fails ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -472,7 +472,7 @@ with expansion: 5 != 5 ------------------------------------------------------------------------------- -./succeeding/conditions/ordered +Ordering comparison checks that should succeed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -580,7 +580,7 @@ with expansion: "hello" > "a" ------------------------------------------------------------------------------- -./failing/conditions/ordered +Ordering comparison checks that should fail ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -681,7 +681,7 @@ with expansion: "hello" <= "a" ------------------------------------------------------------------------------- -./succeeding/conditions/int literals +Comparisons with int literals don't warn when mixing signed/ unsigned ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -765,7 +765,7 @@ with expansion: 0x > 4 ------------------------------------------------------------------------------- -./succeeding/conditions//long_to_unsigned_x +comparisons between int variables ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -795,7 +795,7 @@ with expansion: 1 == 1 ------------------------------------------------------------------------------- -./succeeding/conditions/const ints to int literal +comparisons between const int variables ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -825,7 +825,8 @@ with expansion: 1 == 1 ------------------------------------------------------------------------------- -./succeeding/conditions/negative ints +Comparisons between unsigned ints and negative signed ints match c++ standard +behaviour ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -867,7 +868,7 @@ with expansion: -2147483648 > 2 ------------------------------------------------------------------------------- -./succeeding/conditions/computed ints +Comparisons between ints where one side is computed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -879,7 +880,7 @@ with expansion: 54 == 54 ------------------------------------------------------------------------------- -./succeeding/conditions/ptr +Pointers can be compared to null ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -933,7 +934,7 @@ with expansion: 0 != 0x ------------------------------------------------------------------------------- -./succeeding/conditions/not +'Not' checks that should succeed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -981,7 +982,7 @@ with expansion: !(1 == 2) ------------------------------------------------------------------------------- -./failing/conditions/not +'Not' checks that should fail ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -1021,7 +1022,7 @@ with expansion: !(1 == 1) ------------------------------------------------------------------------------- -./succeeding/exceptions/explicit +When checked exceptions are thrown they can be expected or unexpected ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1039,7 +1040,7 @@ PASSED: REQUIRE_THROWS( thisThrows() ) ------------------------------------------------------------------------------- -./failing/exceptions/explicit +Expected exceptions that don't throw or unexpected exceptions fail the test ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1059,7 +1060,7 @@ due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- -./failing/exceptions/implicit +When unchecked exceptions are thrown directly they are always failures ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1069,7 +1070,7 @@ due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- -./failing/exceptions/implicit/2 +An unchecked exception reports the line of the last assertion ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1084,7 +1085,7 @@ due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- -./failing/exceptions/implicit/3 +When unchecked exceptions are thrown from sections they are always failures section name ------------------------------------------------------------------------------- ExceptionTests.cpp: @@ -1095,7 +1096,7 @@ due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- -./failing/exceptions/implicit/4 +When unchecked exceptions are thrown from functions they are always failures ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1106,16 +1107,16 @@ due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- -./succeeding/exceptions/implicit +When unchecked exceptions are thrown, but caught, they do not affect the test ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... -No assertions in test case './succeeding/exceptions/implicit' +No assertions in test case 'When unchecked exceptions are thrown, but caught, they do not affect the test' ------------------------------------------------------------------------------- -./failing/exceptions/custom +Unexpected custom exceptions can be translated ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1125,7 +1126,7 @@ due to unexpected exception with message: custom exception ------------------------------------------------------------------------------- -./failing/exceptions/custom/nothrow +Custom exceptions can be translated when testing for nothrow ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1136,7 +1137,7 @@ due to unexpected exception with message: custom exception - not std ------------------------------------------------------------------------------- -./failing/exceptions/custom/throw +Custom exceptions can be translated when testing for throwing as something else ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1147,7 +1148,7 @@ due to unexpected exception with message: custom exception - not std ------------------------------------------------------------------------------- -./failing/exceptions/custom/double +Unexpected exceptions can be translated ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1157,7 +1158,7 @@ due to unexpected exception with message: 3.14 ------------------------------------------------------------------------------- -./succeeding/exceptions/notimplemented +NotImplemented exception ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... @@ -1167,7 +1168,7 @@ PASSED: REQUIRE_THROWS( thisFunctionNotImplemented( 7 ) ) ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1185,7 +1186,7 @@ with expansion: 200 == 200 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1203,7 +1204,7 @@ with expansion: 200 == 200 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1221,7 +1222,7 @@ with expansion: 200 == 200 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1239,7 +1240,7 @@ with expansion: 200 == 200 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1257,7 +1258,7 @@ with expansion: 200 == 200 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1275,7 +1276,7 @@ with expansion: 200 == 200 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1293,7 +1294,7 @@ with expansion: 200 == 200 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1311,7 +1312,7 @@ with expansion: 200 == 200 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1329,7 +1330,7 @@ with expansion: 200 == 200 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1347,7 +1348,7 @@ with expansion: 202 == 202 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1365,7 +1366,7 @@ with expansion: 202 == 202 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1383,7 +1384,7 @@ with expansion: 202 == 202 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1401,7 +1402,7 @@ with expansion: 202 == 202 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1419,7 +1420,7 @@ with expansion: 202 == 202 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1437,7 +1438,7 @@ with expansion: 202 == 202 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1455,7 +1456,7 @@ with expansion: 202 == 202 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1473,7 +1474,7 @@ with expansion: 202 == 202 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1491,7 +1492,7 @@ with expansion: 202 == 202 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1509,7 +1510,7 @@ with expansion: 204 == 204 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1527,7 +1528,7 @@ with expansion: 204 == 204 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1545,7 +1546,7 @@ with expansion: 204 == 204 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1563,7 +1564,7 @@ with expansion: 204 == 204 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1581,7 +1582,7 @@ with expansion: 204 == 204 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1599,7 +1600,7 @@ with expansion: 204 == 204 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1617,7 +1618,7 @@ with expansion: 204 == 204 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1635,7 +1636,7 @@ with expansion: 204 == 204 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1653,7 +1654,7 @@ with expansion: 204 == 204 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1671,7 +1672,7 @@ with expansion: 206 == 206 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1689,7 +1690,7 @@ with expansion: 206 == 206 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1707,7 +1708,7 @@ with expansion: 206 == 206 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1725,7 +1726,7 @@ with expansion: 206 == 206 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1743,7 +1744,7 @@ with expansion: 206 == 206 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1761,7 +1762,7 @@ with expansion: 206 == 206 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1779,7 +1780,7 @@ with expansion: 206 == 206 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1797,7 +1798,7 @@ with expansion: 206 == 206 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1815,7 +1816,7 @@ with expansion: 206 == 206 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1833,7 +1834,7 @@ with expansion: 208 == 208 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1851,7 +1852,7 @@ with expansion: 208 == 208 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1869,7 +1870,7 @@ with expansion: 208 == 208 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1887,7 +1888,7 @@ with expansion: 208 == 208 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1905,7 +1906,7 @@ with expansion: 208 == 208 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1923,7 +1924,7 @@ with expansion: 208 == 208 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1941,7 +1942,7 @@ with expansion: 208 == 208 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1959,7 +1960,7 @@ with expansion: 208 == 208 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1977,7 +1978,7 @@ with expansion: 208 == 208 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -1995,7 +1996,7 @@ with expansion: 210 == 210 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2013,7 +2014,7 @@ with expansion: 210 == 210 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2031,7 +2032,7 @@ with expansion: 210 == 210 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2049,7 +2050,7 @@ with expansion: 210 == 210 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2067,7 +2068,7 @@ with expansion: 210 == 210 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2085,7 +2086,7 @@ with expansion: 210 == 210 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2103,7 +2104,7 @@ with expansion: 210 == 210 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2121,7 +2122,7 @@ with expansion: 210 == 210 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2139,7 +2140,7 @@ with expansion: 210 == 210 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2157,7 +2158,7 @@ with expansion: 212 == 212 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2175,7 +2176,7 @@ with expansion: 212 == 212 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2193,7 +2194,7 @@ with expansion: 212 == 212 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2211,7 +2212,7 @@ with expansion: 212 == 212 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2229,7 +2230,7 @@ with expansion: 212 == 212 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2247,7 +2248,7 @@ with expansion: 212 == 212 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2265,7 +2266,7 @@ with expansion: 212 == 212 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2283,7 +2284,7 @@ with expansion: 212 == 212 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2301,7 +2302,7 @@ with expansion: 212 == 212 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2319,7 +2320,7 @@ with expansion: 214 == 214 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2337,7 +2338,7 @@ with expansion: 214 == 214 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2355,7 +2356,7 @@ with expansion: 214 == 214 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2373,7 +2374,7 @@ with expansion: 214 == 214 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2391,7 +2392,7 @@ with expansion: 214 == 214 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2409,7 +2410,7 @@ with expansion: 214 == 214 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2427,7 +2428,7 @@ with expansion: 214 == 214 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2445,7 +2446,7 @@ with expansion: 214 == 214 ------------------------------------------------------------------------------- -./succeeding/generators/1 +Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2463,7 +2464,7 @@ with expansion: 214 == 214 ------------------------------------------------------------------------------- -./succeeding/generators/2 +Generator over a range of pairs ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2475,7 +2476,7 @@ with expansion: 0 == 0 ------------------------------------------------------------------------------- -./succeeding/generators/2 +Generator over a range of pairs ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... @@ -2487,7 +2488,7 @@ with expansion: 2 == 2 ------------------------------------------------------------------------------- -./succeeding/message +INFO and WARN do not abort tests ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -2498,10 +2499,10 @@ warning: this is a warning -No assertions in test case './succeeding/message' +No assertions in test case 'INFO and WARN do not abort tests' ------------------------------------------------------------------------------- -./succeeding/succeed +SUCCEED counts as a test pass ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -2512,7 +2513,7 @@ with message: this is a success ------------------------------------------------------------------------------- -./failing/message/info/1 +INFO gets logged on failure ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -2526,7 +2527,7 @@ with messages: so should this ------------------------------------------------------------------------------- -./mixed/message/info/2 +INFO gets logged on failure, even if captured before successful assertions ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -2562,7 +2563,7 @@ with message: but not this ------------------------------------------------------------------------------- -./failing/message/fail +FAIL aborts the test ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -2572,7 +2573,7 @@ explicitly with message: This is a failure ------------------------------------------------------------------------------- -./failing/message/sections +Output from all sections is reported one ------------------------------------------------------------------------------- MessageTests.cpp: @@ -2583,7 +2584,7 @@ explicitly with message: Message from section one ------------------------------------------------------------------------------- -./failing/message/sections +Output from all sections is reported two ------------------------------------------------------------------------------- MessageTests.cpp: @@ -2595,7 +2596,7 @@ explicitly with message: Message from section one ------------------------------------------------------------------------------- -./succeeding/message/sections/stdout +Standard output from all sections is reported one ------------------------------------------------------------------------------- MessageTests.cpp: @@ -2606,7 +2607,7 @@ No assertions in section 'one' Message from section two ------------------------------------------------------------------------------- -./succeeding/message/sections/stdout +Standard output from all sections is reported two ------------------------------------------------------------------------------- MessageTests.cpp: @@ -2616,7 +2617,7 @@ MessageTests.cpp: No assertions in section 'two' ------------------------------------------------------------------------------- -./mixed/message/scoped +SCOPED_INFO is reset for each loop ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -2720,7 +2721,7 @@ with messages: i := 10 ------------------------------------------------------------------------------- -./succeeding/nofail +The NO_FAIL macro reports a failure but does not fail the test ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... @@ -2730,7 +2731,7 @@ FAILED - but was ok: CHECK_NOFAIL( 1 == 2 ) -No assertions in test case './succeeding/nofail' +No assertions in test case 'The NO_FAIL macro reports a failure but does not fail the test' ------------------------------------------------------------------------------- just info @@ -2752,7 +2753,19 @@ explicitly with message: Previous info should not be seen ------------------------------------------------------------------------------- -./succeeding/Misc/Sections +sends information to INFO +------------------------------------------------------------------------------- +MessageTests.cpp: +............................................................................... + +MessageTests.cpp:: FAILED: + REQUIRE( false ) +with messages: + hi + i := 7 + +------------------------------------------------------------------------------- +random SECTION tests s1 ------------------------------------------------------------------------------- MiscTests.cpp: @@ -2771,7 +2784,7 @@ with expansion: 2 != 1 ------------------------------------------------------------------------------- -./succeeding/Misc/Sections +random SECTION tests s2 ------------------------------------------------------------------------------- MiscTests.cpp: @@ -2784,7 +2797,7 @@ with expansion: 1 != 2 ------------------------------------------------------------------------------- -./succeeding/Misc/Sections/nested +nested SECTION tests s1 ------------------------------------------------------------------------------- MiscTests.cpp: @@ -2803,7 +2816,7 @@ with expansion: 2 != 1 ------------------------------------------------------------------------------- -./succeeding/Misc/Sections/nested +nested SECTION tests s1 ------------------------------------------------------------------------------- MiscTests.cpp: @@ -2822,7 +2835,7 @@ with expansion: 2 != 1 ------------------------------------------------------------------------------- -./succeeding/Misc/Sections/nested +nested SECTION tests s1 s2 ------------------------------------------------------------------------------- @@ -2836,7 +2849,7 @@ with expansion: 1 != 2 ------------------------------------------------------------------------------- -./mixed/Misc/Sections/nested2 +more nested SECTION tests s1 s2 ------------------------------------------------------------------------------- @@ -2849,7 +2862,7 @@ with expansion: 1 == 2 ------------------------------------------------------------------------------- -./mixed/Misc/Sections/nested2 +more nested SECTION tests s1 s3 ------------------------------------------------------------------------------- @@ -2863,7 +2876,7 @@ with expansion: 1 != 2 ------------------------------------------------------------------------------- -./mixed/Misc/Sections/nested2 +more nested SECTION tests s1 s4 ------------------------------------------------------------------------------- @@ -2877,7 +2890,7 @@ with expansion: 1 < 2 ------------------------------------------------------------------------------- -./Sections/nested/a/b +even more nested SECTION tests c d (leaf) ------------------------------------------------------------------------------- @@ -2888,7 +2901,7 @@ MiscTests.cpp: No assertions in section 'd (leaf)' ------------------------------------------------------------------------------- -./Sections/nested/a/b +even more nested SECTION tests c e (leaf) ------------------------------------------------------------------------------- @@ -2899,7 +2912,7 @@ MiscTests.cpp: No assertions in section 'e (leaf)' ------------------------------------------------------------------------------- -./Sections/nested/a/b +even more nested SECTION tests f (leaf) ------------------------------------------------------------------------------- MiscTests.cpp: @@ -2909,7 +2922,7 @@ MiscTests.cpp: No assertions in section 'f (leaf)' ------------------------------------------------------------------------------- -./mixed/Misc/Sections/loops +looped SECTION tests s1 ------------------------------------------------------------------------------- MiscTests.cpp: @@ -2921,7 +2934,7 @@ with expansion: 0 > 1 ------------------------------------------------------------------------------- -./mixed/Misc/loops +looped tests ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -2987,16 +3000,16 @@ with message: Some information An error ------------------------------------------------------------------------------- -./succeeding/Misc/stdout,stderr +Sends stuff to stdout and stderr ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... -No assertions in test case './succeeding/Misc/stdout,stderr' +No assertions in test case 'Sends stuff to stdout and stderr' ------------------------------------------------------------------------------- -./succeeding/Misc/null strings +null strings ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3014,19 +3027,7 @@ with expansion: {null string} == {null string} ------------------------------------------------------------------------------- -./failing/info -------------------------------------------------------------------------------- -MiscTests.cpp: -............................................................................... - -MiscTests.cpp:: FAILED: - REQUIRE( false ) -with messages: - hi - i := 7 - -------------------------------------------------------------------------------- -./succeeding/checkedif +checkedIf ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3044,7 +3045,7 @@ with expansion: true ------------------------------------------------------------------------------- -./failing/checkedif +checkedIf, failing ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3060,7 +3061,7 @@ with expansion: false ------------------------------------------------------------------------------- -./succeeding/checkedelse +checkedElse ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3078,7 +3079,7 @@ with expansion: true ------------------------------------------------------------------------------- -./failing/checkedelse +checkedElse, failing ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3094,7 +3095,7 @@ with expansion: false ------------------------------------------------------------------------------- -./misc/xmlentitycheck +xmlentitycheck embedded xml ------------------------------------------------------------------------------- MiscTests.cpp: @@ -3104,7 +3105,7 @@ MiscTests.cpp: No assertions in section 'embedded xml' ------------------------------------------------------------------------------- -./misc/xmlentitycheck +xmlentitycheck encoded chars ------------------------------------------------------------------------------- MiscTests.cpp: @@ -3114,7 +3115,7 @@ MiscTests.cpp: No assertions in section 'encoded chars' ------------------------------------------------------------------------------- -./manual/onechar +send a single char to INFO ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3125,7 +3126,7 @@ with message: 3 ------------------------------------------------------------------------------- -./succeeding/atomic if +atomic if ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3137,7 +3138,7 @@ with expansion: 0 == 0 ------------------------------------------------------------------------------- -./succeeding/matchers +String matchers ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3167,7 +3168,7 @@ with expansion: "this string contains 'abc' as a substring" ends with: "substring" ------------------------------------------------------------------------------- -./failing/matchers/Contains +Contains string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3178,7 +3179,7 @@ with expansion: "this string contains 'abc' as a substring" contains: "not there" ------------------------------------------------------------------------------- -./failing/matchers/StartsWith +StartsWith string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3189,7 +3190,7 @@ with expansion: "this string contains 'abc' as a substring" starts with: "string" ------------------------------------------------------------------------------- -./failing/matchers/EndsWith +EndsWith string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3200,7 +3201,7 @@ with expansion: "this string contains 'abc' as a substring" ends with: "this" ------------------------------------------------------------------------------- -./failing/matchers/Equals +Equals string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3211,7 +3212,7 @@ with expansion: "this string contains 'abc' as a substring" equals: "something else" ------------------------------------------------------------------------------- -string +Equals string matcher, with NULL ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3223,7 +3224,7 @@ with expansion: "" equals: "" ------------------------------------------------------------------------------- -./succeeding/matchers/AllOf +AllOf matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3236,7 +3237,7 @@ with expansion: contains: "abc" ) ------------------------------------------------------------------------------- -./succeeding/matchers/AnyOf +AnyOf matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3256,7 +3257,7 @@ with expansion: contains: "string" ) ------------------------------------------------------------------------------- -./succeeding/matchers/Equals +Equals ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3305,13 +3306,13 @@ with expansion: 0x == 3628800 ------------------------------------------------------------------------------- -empty +An empty test with no assertions ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... -No assertions in test case 'empty' +No assertions in test case 'An empty test with no assertions' ------------------------------------------------------------------------------- Nice descriptive name @@ -3562,7 +3563,7 @@ with expansion: 5 >= 5 ------------------------------------------------------------------------------- -./failing/CatchSectionInfiniteLoop +A couple of nested sections followed by a failure ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3572,7 +3573,7 @@ explicitly with message: to infinity and beyond ------------------------------------------------------------------------------- -./failing/CatchSectionInfiniteLoop +A couple of nested sections followed by a failure ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3582,7 +3583,7 @@ explicitly with message: to infinity and beyond ------------------------------------------------------------------------------- -./failing/CatchSectionInfiniteLoop +A couple of nested sections followed by a failure Outer Inner ------------------------------------------------------------------------------- @@ -3595,7 +3596,7 @@ with message: that's not flying - that's failing in style ------------------------------------------------------------------------------- -./failing/CatchSectionInfiniteLoop +A couple of nested sections followed by a failure ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... @@ -3604,458 +3605,6 @@ MiscTests.cpp:: FAILED: explicitly with message: to infinity and beyond -------------------------------------------------------------------------------- -selftest/main - selftest/expected result - selftest/expected result/failing tests -------------------------------------------------------------------------------- -TestMain.cpp: -............................................................................... - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests failed, as expected - -------------------------------------------------------------------------------- -selftest/main - selftest/expected result - selftest/expected result/succeeding tests -------------------------------------------------------------------------------- -TestMain.cpp: -............................................................................... - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -Message from section one -Message from section two -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -Some information -An error -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -catch_self_test.hpp:: -PASSED: -with message: - Tests passed, as expected - -Message from section one -Message from section two -Some information -An error -------------------------------------------------------------------------------- -selftest/main - selftest/test counts - selftest/test counts/succeeding tests -------------------------------------------------------------------------------- -TestMain.cpp: -............................................................................... - -TestMain.cpp:: -PASSED: - CHECK( totals.assertions.passed == 298 ) -with expansion: - 298 == 298 - -TestMain.cpp:: -PASSED: - CHECK( totals.assertions.failed == 0 ) -with expansion: - 0 == 0 - -------------------------------------------------------------------------------- -selftest/main - selftest/test counts - selftest/test counts/failing tests -------------------------------------------------------------------------------- -TestMain.cpp: -............................................................................... - -TestMain.cpp:: -PASSED: - CHECK( totals.assertions.passed == 2 ) -with expansion: - 2 == 2 - -TestMain.cpp:: -PASSED: - CHECK( totals.assertions.failed == 77 ) -with expansion: - 77 == 77 - -------------------------------------------------------------------------------- -meta/Misc/Sections -------------------------------------------------------------------------------- -TestMain.cpp: -............................................................................... - -TestMain.cpp:: -PASSED: - CHECK( totals.assertions.passed == 2 ) -with expansion: - 2 == 2 - -TestMain.cpp:: -PASSED: - CHECK( totals.assertions.failed == 1 ) -with expansion: - 1 == 1 - ------------------------------------------------------------------------------- Process can be configured on command line default - no arguments @@ -6414,7 +5963,7 @@ with expansion: ... message truncated due to excessive size ------------------------------------------------------------------------------- -./succeeding/Tricky/std::pair +Parsing a std::pair ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6426,7 +5975,7 @@ with expansion: std::pair( 1, 2 ) == std::pair( 1, 2 ) ------------------------------------------------------------------------------- -./inprogress/failing/Tricky/trailing expression +Where the is more to the expression after the RHS[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6437,10 +5986,10 @@ warning: error -No assertions in test case './inprogress/failing/Tricky/trailing expression' +No assertions in test case 'Where the is more to the expression after the RHS[failing]' ------------------------------------------------------------------------------- -./inprogress/failing/Tricky/compound lhs +Where the LHS is not a simple value[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6451,10 +6000,10 @@ warning: error -No assertions in test case './inprogress/failing/Tricky/compound lhs' +No assertions in test case 'Where the LHS is not a simple value[failing]' ------------------------------------------------------------------------------- -./failing/Tricky/non streamable type +A failing expression with a non streamable type is still captured[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6470,7 +6019,7 @@ with expansion: {?} == {?} ------------------------------------------------------------------------------- -./failing/string literals +string literals of different sizes can be compared[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6481,7 +6030,7 @@ with expansion: "first" == "second" ------------------------------------------------------------------------------- -./succeeding/side-effects +An expression with side-effects should only be evaluated once ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6499,7 +6048,7 @@ with expansion: 8 == 8 ------------------------------------------------------------------------------- -./succeeding/koenig +Operators at different namespace levels not hijacked by Koenig lookup ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6511,7 +6060,7 @@ with expansion: 0x == {?} ------------------------------------------------------------------------------- -./succeeding/non-const== +Demonstrate that a non-const == is not used ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6523,7 +6072,7 @@ with expansion: {?} == 1 ------------------------------------------------------------------------------- -./succeeding/enum/bits +Test enum bit values ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6535,7 +6084,7 @@ with expansion: 0x == 3221225472 ------------------------------------------------------------------------------- -./succeeding/boolean member +boolean member ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -6547,7 +6096,7 @@ with expansion: 0x != 0 ------------------------------------------------------------------------------- -./succeeding/unimplemented static bool +(unimplemented) static bools can be evaluated compare to true ------------------------------------------------------------------------------- TrickyTests.cpp: @@ -6566,7 +6115,7 @@ with expansion: true == true ------------------------------------------------------------------------------- -./succeeding/unimplemented static bool +(unimplemented) static bools can be evaluated compare to false ------------------------------------------------------------------------------- TrickyTests.cpp: @@ -6585,7 +6134,7 @@ with expansion: false == false ------------------------------------------------------------------------------- -./succeeding/unimplemented static bool +(unimplemented) static bools can be evaluated negation ------------------------------------------------------------------------------- TrickyTests.cpp: @@ -6598,7 +6147,7 @@ with expansion: true ------------------------------------------------------------------------------- -./succeeding/unimplemented static bool +(unimplemented) static bools can be evaluated double negation ------------------------------------------------------------------------------- TrickyTests.cpp: @@ -6611,7 +6160,7 @@ with expansion: true ------------------------------------------------------------------------------- -./succeeding/unimplemented static bool +(unimplemented) static bools can be evaluated direct ------------------------------------------------------------------------------- TrickyTests.cpp: @@ -6630,7 +6179,7 @@ with expansion: !false ------------------------------------------------------------------------------- -./succeeding/SafeBool +Objects that evaluated in boolean contexts can be checked ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... @@ -7574,5 +7123,5 @@ with expansion: true =============================================================================== -122 test cases - 50 failed (772 assertions - 109 failed) +120 test cases - 50 failed (692 assertions - 109 failed) diff --git a/projects/SelfTest/Baselines/console.swa4.approved.txt b/projects/SelfTest/Baselines/console.swa4.approved.txt index aa5e2493..65a96d7d 100644 --- a/projects/SelfTest/Baselines/console.swa4.approved.txt +++ b/projects/SelfTest/Baselines/console.swa4.approved.txt @@ -4,7 +4,7 @@ CatchSelfTest is a host application. Run with -? for options ------------------------------------------------------------------------------- -./succeeding/Approx/simple +Some simple comparisons between doubles ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -46,7 +46,7 @@ with expansion: Approx( 1.23 ) != 1.24 ------------------------------------------------------------------------------- -./succeeding/Approx/epsilon +Approximate comparisons with different epsilons ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -64,7 +64,7 @@ with expansion: 1.23 == Approx( 1.231 ) ------------------------------------------------------------------------------- -./succeeding/Approx/float +Approximate comparisons with floats ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -82,7 +82,7 @@ with expansion: 0 == Approx( 0 ) ------------------------------------------------------------------------------- -./succeeding/Approx/int +Approximate comparisons with ints ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -96,7 +96,7 @@ PASSED: REQUIRE( 0 == Approx( 0 ) ) ------------------------------------------------------------------------------- -./succeeding/Approx/mixed +Approximate comparisons with mixed numeric types ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -132,7 +132,7 @@ with expansion: 1.234 == Approx( 1.234 ) ------------------------------------------------------------------------------- -./succeeding/Approx/custom +Use a custom approx ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... @@ -204,7 +204,7 @@ with expansion: 3.1428571429 != Approx( 3.141 ) ------------------------------------------------------------------------------- -./succeeding/TestClass/succeedingCase +A METHOD_AS_TEST_CASE based test run that succeeds ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -216,7 +216,7 @@ with expansion: "hello" == "hello" ------------------------------------------------------------------------------- -./failing/TestClass/failingCase +A METHOD_AS_TEST_CASE based test run that fails ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -227,7 +227,7 @@ with expansion: "hello" == "world" ------------------------------------------------------------------------------- -./succeeding/Fixture/succeedingCase +A TEST_CASE_METHOD based test run that succeeds ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -239,7 +239,7 @@ with expansion: 1 == 1 ------------------------------------------------------------------------------- -./failing/Fixture/failingCase +A TEST_CASE_METHOD based test run that fails ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... @@ -250,7 +250,7 @@ with expansion: 1 == 2 ------------------------------------------------------------------------------- -./succeeding/conditions/equality +Equality checks that should succeed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... @@ -298,7 +298,7 @@ with expansion: 1.3 == Approx( 1.3 ) ------------------------------------------------------------------------------- -./failing/conditions/equality +Equality checks that should fail] ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... diff --git a/projects/SelfTest/Baselines/junit.sw.approved.txt b/projects/SelfTest/Baselines/junit.sw.approved.txt index b292d258..0bb7c778 100644 --- a/projects/SelfTest/Baselines/junit.sw.approved.txt +++ b/projects/SelfTest/Baselines/junit.sw.approved.txt @@ -1,26 +1,26 @@ - - - - - - - + + + + + + + - - + + ClassTests.cpp: - - + + ClassTests.cpp: - - + + ConditionTests.cpp: @@ -61,8 +61,8 @@ ConditionTests.cpp: ConditionTests.cpp: - - + + ConditionTests.cpp: @@ -79,8 +79,8 @@ ConditionTests.cpp: ConditionTests.cpp: - - + + ConditionTests.cpp: @@ -139,14 +139,14 @@ ConditionTests.cpp: ConditionTests.cpp: - - - - - - - - + + + + + + + + ConditionTests.cpp: @@ -172,8 +172,8 @@ ConditionTests.cpp: ConditionTests.cpp: - - + + expected exception ExceptionTests.cpp: @@ -186,67 +186,67 @@ expected exception ExceptionTests.cpp: - + unexpected exception ExceptionTests.cpp: - + unexpected exception ExceptionTests.cpp: - + unexpected exception ExceptionTests.cpp: - + expected exception ExceptionTests.cpp: - + custom exception ExceptionTests.cpp: - + custom exception - not std ExceptionTests.cpp: - + custom exception - not std ExceptionTests.cpp: - + 3.14 ExceptionTests.cpp: - - - - - - + + + + + + this message should be logged so should this MessageTests.cpp: - + this message should be logged MessageTests.cpp: @@ -256,61 +256,68 @@ and this, but later MessageTests.cpp: - + This is a failure MessageTests.cpp: - + Message from section one MessageTests.cpp: - + Message from section two MessageTests.cpp: - + Message from section one Message from section two - + current counter 10 i := 10 MessageTests.cpp: - + Previous info should not be seen MessageTests.cpp: - - - - - + + +hi +i := 7 +MessageTests.cpp: + + + + + + + MiscTests.cpp: - - - + + + MiscTests.cpp: - + Testing if fib[0] (1) is even MiscTests.cpp: @@ -336,7 +343,7 @@ Testing if fib[7] (21) is even MiscTests.cpp: - + Some information @@ -344,16 +351,9 @@ Some information An error - - - -hi -i := 7 -MiscTests.cpp: - - - - + + + MiscTests.cpp: @@ -361,8 +361,8 @@ MiscTests.cpp: MiscTests.cpp: - - + + MiscTests.cpp: @@ -370,38 +370,38 @@ MiscTests.cpp: MiscTests.cpp: - + 3 MiscTests.cpp: - - - + + + MiscTests.cpp: - + MiscTests.cpp: - + MiscTests.cpp: - + MiscTests.cpp: - - - - + + + + @@ -410,7 +410,7 @@ MiscTests.cpp: - + to infinity and beyond MiscTests.cpp: @@ -424,25 +424,7 @@ to infinity and beyond MiscTests.cpp: - - - - - - -Message from section one -Message from section two -Some information -Message from section one -Message from section two -Some information - - -An error -An error - - - + @@ -493,10 +475,10 @@ hello - - - - + + + + TrickyTests.cpp: @@ -504,22 +486,22 @@ TrickyTests.cpp: TrickyTests.cpp: - + TrickyTests.cpp: - - - - - - - - - - - + + + + + + + + + + + @@ -563,18 +545,10 @@ TrickyTests.cpp: Message from section one Message from section two Some information -Message from section one -Message from section two -Some information -Message from section one -Message from section two -Some information hello hello -An error -An error An error diff --git a/projects/SelfTest/Baselines/xml.sw.approved.txt b/projects/SelfTest/Baselines/xml.sw.approved.txt index 2a2c41de..ded8c1f2 100644 --- a/projects/SelfTest/Baselines/xml.sw.approved.txt +++ b/projects/SelfTest/Baselines/xml.sw.approved.txt @@ -1,6 +1,6 @@ - + d == Approx( 1.23 ) @@ -51,7 +51,7 @@ - + d != Approx( 1.231 ) @@ -70,7 +70,7 @@ - + 1.23f == Approx( 1.23f ) @@ -89,7 +89,7 @@ - + 1 == Approx( 1 ) @@ -108,7 +108,7 @@ - + 1.0f == Approx( 1 ) @@ -151,7 +151,7 @@ - + d == approx( 1.23 ) @@ -237,7 +237,7 @@ - + s == "hello" @@ -248,7 +248,7 @@ - + s == "world" @@ -259,7 +259,7 @@ - + m_a == 1 @@ -270,7 +270,7 @@ - + m_a == 2 @@ -281,7 +281,7 @@ - + data.int_seven == 7 @@ -340,7 +340,7 @@ - + data.int_seven == 6 @@ -447,7 +447,7 @@ - + data.int_seven != 6 @@ -538,7 +538,7 @@ - + data.int_seven != 7 @@ -581,7 +581,7 @@ - + data.int_seven < 8 @@ -720,7 +720,7 @@ - + data.int_seven > 7 @@ -875,7 +875,7 @@ - + i == 1 @@ -982,7 +982,7 @@ - + long_var == unsigned_char_var @@ -1017,7 +1017,7 @@ - + unsigned_char_var == 1 @@ -1052,7 +1052,7 @@ - + ( -1 > 2u ) @@ -1103,7 +1103,7 @@ - + 54 == 6*9 @@ -1114,7 +1114,7 @@ - + p == __null @@ -1181,7 +1181,7 @@ - + false == false @@ -1248,7 +1248,7 @@ - + false != false @@ -1315,7 +1315,7 @@ - + thisThrows() @@ -1342,7 +1342,7 @@ - + thisThrows() @@ -1375,13 +1375,13 @@ - + unexpected exception - + 1 == 1 @@ -1403,7 +1403,7 @@ - +
unexpected exception @@ -1412,7 +1412,7 @@
- + thisThrows() == 0 @@ -1426,16 +1426,16 @@ - + - + custom exception - + throwCustom() @@ -1449,7 +1449,7 @@ - + throwCustom() @@ -1463,13 +1463,13 @@ - + 3.14 - + thisFunctionNotImplemented( 7 ) @@ -1480,7 +1480,7 @@ - + multiply( i, 2 ) == i*2 @@ -2635,7 +2635,7 @@ - + i->first == i->second-1 @@ -2654,7 +2654,7 @@ - + this is a message @@ -2663,10 +2663,10 @@ - + - + this message should be logged @@ -2683,7 +2683,7 @@ - + a == 2 @@ -2724,13 +2724,13 @@ - + This is a failure - +
Message from section one @@ -2745,7 +2745,7 @@
- +
@@ -2754,7 +2754,7 @@
- + i < 10 @@ -2851,7 +2851,7 @@ - + 1 == 2 @@ -2871,7 +2871,24 @@ - + + + hi + + + i := 7 + + + + false + + + false + + + + +
@@ -2904,7 +2921,7 @@
- +
@@ -2956,7 +2973,7 @@
- +
@@ -3004,7 +3021,7 @@
- +
@@ -3025,7 +3042,7 @@
- +
@@ -3039,7 +3056,7 @@
- + Testing if fib[0] (1) is even @@ -3124,10 +3141,10 @@ - + - + makeString( false ) != static_cast<char*>(__null) @@ -3146,24 +3163,7 @@ - - - hi - - - i := 7 - - - - false - - - false - - - - - + flag @@ -3182,7 +3182,7 @@ - + flag @@ -3201,7 +3201,7 @@ - + flag @@ -3220,7 +3220,7 @@ - + flag @@ -3239,7 +3239,7 @@ - +
@@ -3248,7 +3248,7 @@
- + 3 @@ -3262,7 +3262,7 @@ - + x == 0 @@ -3273,7 +3273,7 @@ - + testStringForMatching() Contains( "string" ) @@ -3308,7 +3308,7 @@ - + testStringForMatching() Contains( "not there" ) @@ -3319,7 +3319,7 @@ - + testStringForMatching() StartsWith( "string" ) @@ -3330,7 +3330,7 @@ - + testStringForMatching() EndsWith( "this" ) @@ -3341,7 +3341,7 @@ - + testStringForMatching() Equals( "something else" ) @@ -3352,7 +3352,7 @@ - + "" Equals(__null) @@ -3363,7 +3363,7 @@ - + testStringForMatching() AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) ) @@ -3374,7 +3374,7 @@ - + testStringForMatching() AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) ) @@ -3393,7 +3393,7 @@ - + testStringForMatching() Equals( "this string contains 'abc' as a substring" ) @@ -3447,7 +3447,7 @@ - + @@ -3667,7 +3667,7 @@ - + to infinity and beyond @@ -3688,90 +3688,6 @@ - -
- -
-
-
- -
- -
-
-
- -
- -
-
- -
-
-
- - - totals.assertions.passed == 298 - - - 298 == 298 - - - - - totals.assertions.failed == 0 - - - 0 == 0 - - - -
- -
-
-
- - - totals.assertions.passed == 2 - - - 2 == 2 - - - - - totals.assertions.failed == 77 - - - 77 == 77 - - - -
- -
- -
- - - - totals.assertions.passed == 2 - - - 2 == 2 - - - - - totals.assertions.failed == 1 - - - 1 == 1 - - - -
@@ -6374,7 +6290,7 @@ there" - + (std::pair<int, int>( 1, 2 )) == aNicePair @@ -6385,19 +6301,19 @@ there" - + Uncomment the code in this test to check that it gives a sensible compiler error - + Uncomment the code in this test to check that it gives a sensible compiler error - + &o1 == &o2 @@ -6416,7 +6332,7 @@ there" - + std::string( "first" ) == "second" @@ -6427,7 +6343,7 @@ there" - + i++ == 7 @@ -6446,7 +6362,7 @@ there" - + 0x == o @@ -6457,7 +6373,7 @@ there" - + t == 1u @@ -6468,7 +6384,7 @@ there" - + 0x == bit30and31 @@ -6479,7 +6395,7 @@ there" - + obj.prop != __null @@ -6490,7 +6406,7 @@ there" - +
@@ -6572,7 +6488,7 @@ there"
- + True @@ -7482,7 +7398,7 @@ there"
- +
- +
diff --git a/projects/SelfTest/ClassTests.cpp b/projects/SelfTest/ClassTests.cpp index 573f5aaa..e22f3d24 100644 --- a/projects/SelfTest/ClassTests.cpp +++ b/projects/SelfTest/ClassTests.cpp @@ -31,8 +31,8 @@ namespace } -METHOD_AS_TEST_CASE( TestClass::succeedingCase, "./succeeding/TestClass/succeedingCase", "A method based test run that succeeds [class]" ) -METHOD_AS_TEST_CASE( TestClass::failingCase, "./failing/TestClass/failingCase", "A method based test run that fails [class]" ) +METHOD_AS_TEST_CASE( TestClass::succeedingCase, "A METHOD_AS_TEST_CASE based test run that succeeds", "[class]" ) +METHOD_AS_TEST_CASE( TestClass::failingCase, "A METHOD_AS_TEST_CASE based test run that fails", "[.][class][failing]" ) struct Fixture @@ -42,7 +42,7 @@ struct Fixture int m_a; }; -TEST_CASE_METHOD( Fixture, "./succeeding/Fixture/succeedingCase", "A method based test run that succeeds [class]" ) +TEST_CASE_METHOD( Fixture, "A TEST_CASE_METHOD based test run that succeeds", "[class]" ) { REQUIRE( m_a == 1 ); } @@ -50,7 +50,7 @@ TEST_CASE_METHOD( Fixture, "./succeeding/Fixture/succeedingCase", "A method base // We should be able to write our tests within a different namespace namespace Inner { - TEST_CASE_METHOD( Fixture, "./failing/Fixture/failingCase", "A method based test run that fails [class]" ) + TEST_CASE_METHOD( Fixture, "A TEST_CASE_METHOD based test run that fails", "[.][class][failing]" ) { REQUIRE( m_a == 2 ); } diff --git a/projects/SelfTest/ConditionTests.cpp b/projects/SelfTest/ConditionTests.cpp index b298de1d..a2dabfa1 100644 --- a/projects/SelfTest/ConditionTests.cpp +++ b/projects/SelfTest/ConditionTests.cpp @@ -43,8 +43,7 @@ struct TestDef { // This allows us to see all results, even if an earlier check fails // Equality tests -TEST_CASE( "./succeeding/conditions/equality", - "Equality checks that should succeed" ) +TEST_CASE( "Equality checks that should succeed", "" ) { TestDef td; @@ -63,8 +62,7 @@ TEST_CASE( "./succeeding/conditions/equality", REQUIRE( x == Approx( 1.3 ) ); } -TEST_CASE( "./failing/conditions/equality", - "Equality checks that should fail" ) +TEST_CASE( "Equality checks that should fail]", "[.][failing]" ) { TestData data; @@ -85,8 +83,7 @@ TEST_CASE( "./failing/conditions/equality", CHECK( x == Approx( 1.301 ) ); } -TEST_CASE( "./succeeding/conditions/inequality", - "Inequality checks that should succeed" ) +TEST_CASE( "Inequality checks that should succeed", "" ) { TestData data; @@ -103,8 +100,7 @@ TEST_CASE( "./succeeding/conditions/inequality", REQUIRE( data.str_hello.size() != 6 ); } -TEST_CASE( "./failing/conditions/inequality", - "Inequality checks that should fails" ) +TEST_CASE( "Inequality checks that should fails", "[.][failing]" ) { TestData data; @@ -116,8 +112,7 @@ TEST_CASE( "./failing/conditions/inequality", } // Ordering comparison tests -TEST_CASE( "./succeeding/conditions/ordered", - "Ordering comparison checks that should succeed" ) +TEST_CASE( "Ordering comparison checks that should succeed", "" ) { TestData data; @@ -144,8 +139,7 @@ TEST_CASE( "./succeeding/conditions/ordered", REQUIRE( data.str_hello > "a" ); } -TEST_CASE( "./failing/conditions/ordered", - "Ordering comparison checks that should fail" ) +TEST_CASE( "Ordering comparison checks that should fail", "[.][failing]" ) { TestData data; @@ -175,8 +169,7 @@ TEST_CASE( "./failing/conditions/ordered", } // Comparisons with int literals -TEST_CASE( "./succeeding/conditions/int literals", - "Comparisons with int literals don't warn when mixing signed/ unsigned" ) +TEST_CASE( "Comparisons with int literals don't warn when mixing signed/ unsigned", "" ) { int i = 1; unsigned int ui = 2; @@ -214,8 +207,7 @@ TEST_CASE( "./succeeding/conditions/int literals", #pragma warning(disable:4389) // '==' : signed/unsigned mismatch #endif -TEST_CASE( "./succeeding/conditions//long_to_unsigned_x", - "comparisons between int variables" ) +TEST_CASE( "comparisons between int variables", "" ) { long long_var = 1L; unsigned char unsigned_char_var = 1; @@ -229,8 +221,7 @@ TEST_CASE( "./succeeding/conditions//long_to_unsigned_x", REQUIRE( long_var == unsigned_long_var ); } -TEST_CASE( "./succeeding/conditions/const ints to int literal", - "comparisons between const int variables" ) +TEST_CASE( "comparisons between const int variables", "" ) { const unsigned char unsigned_char_var = 1; const unsigned short unsigned_short_var = 1; @@ -243,8 +234,7 @@ TEST_CASE( "./succeeding/conditions/const ints to int literal", REQUIRE( unsigned_long_var == 1 ); } -TEST_CASE( "./succeeding/conditions/negative ints", - "Comparisons between unsigned ints and negative signed ints match c++ standard behaviour" ) +TEST_CASE( "Comparisons between unsigned ints and negative signed ints match c++ standard behaviour", "" ) { CHECK( ( -1 > 2u ) ); CHECK( -1 > 2u ); @@ -266,8 +256,7 @@ struct Ex T operator * ( const T& ) const { return T(); } }; -TEST_CASE( "./succeeding/conditions/computed ints", - "Comparisons between ints where one side is computed" ) +TEST_CASE( "Comparisons between ints where one side is computed", "" ) { CHECK( 54 == 6*9 ); } @@ -279,8 +268,7 @@ TEST_CASE( "./succeeding/conditions/computed ints", inline const char* returnsConstNull(){ return NULL; } inline char* returnsNull(){ return NULL; } -TEST_CASE( "./succeeding/conditions/ptr", - "Pointers can be compared to null" ) +TEST_CASE( "Pointers can be compared to null", "" ) { TestData* p = NULL; TestData* pNULL = NULL; @@ -312,8 +300,7 @@ TEST_CASE( "./succeeding/conditions/ptr", // is detected and a warning issued. // An alternative form of the macros (CHECK_FALSE and REQUIRE_FALSE) can be used instead to capture // the operand value. -TEST_CASE( "./succeeding/conditions/not", - "'Not' checks that should succeed" ) +TEST_CASE( "'Not' checks that should succeed", "" ) { bool falseValue = false; @@ -329,8 +316,7 @@ TEST_CASE( "./succeeding/conditions/not", REQUIRE_FALSE( 1 == 2 ); } -TEST_CASE( "./failing/conditions/not", - "'Not' checks that should fail" ) +TEST_CASE( "'Not' checks that should fail", "[.][failing]" ) { bool trueValue = true; diff --git a/projects/SelfTest/ExceptionTests.cpp b/projects/SelfTest/ExceptionTests.cpp index 123e8cef..2dac0c15 100644 --- a/projects/SelfTest/ExceptionTests.cpp +++ b/projects/SelfTest/ExceptionTests.cpp @@ -11,8 +11,6 @@ #include #include -#include "catch_self_test.hpp" - namespace { inline int thisThrows() @@ -28,33 +26,33 @@ namespace } } -TEST_CASE( "./succeeding/exceptions/explicit", "When checked exceptions are thrown they can be expected or unexpected" ) +TEST_CASE( "When checked exceptions are thrown they can be expected or unexpected", "" ) { REQUIRE_THROWS_AS( thisThrows(), std::domain_error ); REQUIRE_NOTHROW( thisDoesntThrow() ); REQUIRE_THROWS( thisThrows() ); } -TEST_CASE( "./failing/exceptions/explicit", "When checked exceptions are thrown they can be expected or unexpected" ) +TEST_CASE( "Expected exceptions that don't throw or unexpected exceptions fail the test", "[.][failing]" ) { CHECK_THROWS_AS( thisThrows(), std::string ); CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error ); CHECK_NOTHROW( thisThrows() ); } -TEST_CASE( "./failing/exceptions/implicit", "When unchecked exceptions are thrown they are always failures" ) +TEST_CASE( "When unchecked exceptions are thrown directly they are always failures", "[.][failing]" ) { if( Catch::isTrue( true ) ) throw std::domain_error( "unexpected exception" ); } -TEST_CASE( "./failing/exceptions/implicit/2", "An unchecked exception reports the line of the last assertion" ) +TEST_CASE( "An unchecked exception reports the line of the last assertion", "[.][failing]" ) { CHECK( 1 == 1 ); if( Catch::isTrue( true ) ) throw std::domain_error( "unexpected exception" ); } -TEST_CASE( "./failing/exceptions/implicit/3", "When unchecked exceptions are thrown they are always failures" ) +TEST_CASE( "When unchecked exceptions are thrown from sections they are always failures", "[.][failing]" ) { SECTION( "section name", "" ) { @@ -63,12 +61,12 @@ TEST_CASE( "./failing/exceptions/implicit/3", "When unchecked exceptions are thr } } -TEST_CASE( "./failing/exceptions/implicit/4", "When unchecked exceptions are thrown they are always failures" ) +TEST_CASE( "When unchecked exceptions are thrown from functions they are always failures", "[.][failing]" ) { CHECK( thisThrows() == 0 ); } -TEST_CASE( "./succeeding/exceptions/implicit", "When unchecked exceptions are thrown, but caught, they do not affect the test" ) +TEST_CASE( "When unchecked exceptions are thrown, but caught, they do not affect the test", "" ) { try { @@ -105,7 +103,7 @@ CATCH_TRANSLATE_EXCEPTION( double& ex ) return Catch::toString( ex ); } -TEST_CASE( "./failing/exceptions/custom", "Unexpected custom exceptions can be translated" ) +TEST_CASE("Unexpected custom exceptions can be translated", "[.][failing]" ) { if( Catch::isTrue( true ) ) throw CustomException( "custom exception" ); @@ -116,18 +114,18 @@ inline void throwCustom() { throw CustomException( "custom exception - not std" ); } -TEST_CASE( "./failing/exceptions/custom/nothrow", "Custom exceptions can be translated when testing for nothrow" ) +TEST_CASE( "Custom exceptions can be translated when testing for nothrow", "[.][failing]" ) { REQUIRE_NOTHROW( throwCustom() ); } -TEST_CASE( "./failing/exceptions/custom/throw", "Custom exceptions can be translated when testing for throwing as something else" ) +TEST_CASE( "Custom exceptions can be translated when testing for throwing as something else", "[.][failing]" ) { REQUIRE_THROWS_AS( throwCustom(), std::exception ); } -TEST_CASE( "./failing/exceptions/custom/double", "Unexpected custom exceptions can be translated" ) +TEST_CASE( "Unexpected exceptions can be translated", "[.][failing]" ) { if( Catch::isTrue( true ) ) throw double( 3.14 ); @@ -137,7 +135,7 @@ inline int thisFunctionNotImplemented( int ) { CATCH_NOT_IMPLEMENTED; } -TEST_CASE( "./succeeding/exceptions/notimplemented", "" ) +TEST_CASE( "NotImplemented exception", "" ) { REQUIRE_THROWS( thisFunctionNotImplemented( 7 ) ); } diff --git a/projects/SelfTest/GeneratorTests.cpp b/projects/SelfTest/GeneratorTests.cpp index b21e22dd..a961b698 100644 --- a/projects/SelfTest/GeneratorTests.cpp +++ b/projects/SelfTest/GeneratorTests.cpp @@ -16,7 +16,7 @@ inline int multiply( int a, int b ) return a*b; } -CATCH_TEST_CASE( "./succeeding/generators/1", "Generators over two ranges" ) +CATCH_TEST_CASE( "Generators over two ranges", "[generators]" ) { using namespace Catch::Generators; @@ -29,7 +29,7 @@ CATCH_TEST_CASE( "./succeeding/generators/1", "Generators over two ranges" ) struct IntPair { int first, second; }; -CATCH_TEST_CASE( "./succeeding/generators/2", "Generator over a range of pairs" ) +CATCH_TEST_CASE( "Generator over a range of pairs", "[generators]" ) { using namespace Catch::Generators; diff --git a/projects/SelfTest/MessageTests.cpp b/projects/SelfTest/MessageTests.cpp index 9ba6eaec..e0c44848 100644 --- a/projects/SelfTest/MessageTests.cpp +++ b/projects/SelfTest/MessageTests.cpp @@ -8,17 +8,17 @@ #include "catch.hpp" -TEST_CASE( "./succeeding/message", "INFO and WARN do not abort tests" ) +TEST_CASE( "INFO and WARN do not abort tests", "[messages]" ) { 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( "./succeeding/succeed", "SUCCEED counts as a test pass" ) +TEST_CASE( "SUCCEED counts as a test pass", "[messages]" ) { SUCCEED( "this is a " << "success" ); } -TEST_CASE( "./failing/message/info/1", "INFO gets logged on failure" ) +TEST_CASE( "INFO gets logged on failure", "[failing][messages][.]" ) { INFO( "this message should be logged" ); INFO( "so should this" ); @@ -26,7 +26,7 @@ TEST_CASE( "./failing/message/info/1", "INFO gets logged on failure" ) REQUIRE( a == 1 ); } -TEST_CASE( "./mixed/message/info/2", "INFO gets logged on failure" ) +TEST_CASE( "INFO gets logged on failure, even if captured before successful assertions", "[failing][messages][.]" ) { INFO( "this message may be logged later" ); int a = 2; @@ -45,13 +45,13 @@ TEST_CASE( "./mixed/message/info/2", "INFO gets logged on failure" ) CHECK( a == 2 ); } -TEST_CASE( "./failing/message/fail", "FAIL aborts the test" ) +TEST_CASE( "FAIL aborts the test", "[failing][messages][.]" ) { if( Catch::isTrue( true ) ) FAIL( "This is a " << "failure" ); // This should output the message and abort } -TEST_CASE( "./failing/message/sections", "Output from all sections is reported" ) +TEST_CASE( "Output from all sections is reported", "[failing][messages][.]" ) { SECTION( "one", "" ) { @@ -64,7 +64,7 @@ TEST_CASE( "./failing/message/sections", "Output from all sections is reported" } } -TEST_CASE( "./succeeding/message/sections/stdout", "Output from all sections is reported" ) +TEST_CASE( "Standard output from all sections is reported", "[messages]" ) { SECTION( "one", "" ) { @@ -77,7 +77,7 @@ TEST_CASE( "./succeeding/message/sections/stdout", "Output from all sections is } } -TEST_CASE( "./mixed/message/scoped", "" ) +TEST_CASE( "SCOPED_INFO is reset for each loop", "[messages][failing][.]" ) { for( int i=0; i<100; i++ ) { @@ -87,16 +87,25 @@ TEST_CASE( "./mixed/message/scoped", "" ) } } -TEST_CASE( "./succeeding/nofail", "The NO_FAIL macro reports a failure but does not fail the test" ) +TEST_CASE( "The NO_FAIL macro reports a failure but does not fail the test", "[messages]" ) { CHECK_NOFAIL( 1 == 2 ); } -TEST_CASE( "just info", "[info][isolated info][.]" ) +TEST_CASE( "just info", "[info][isolated info][messages]" ) { INFO( "this should never be seen" ); } -TEST_CASE( "just failure", "[fail][isolated info][.]" ) +TEST_CASE( "just failure", "[fail][isolated info][.][messages]" ) { FAIL( "Previous info should not be seen" ); } + + +TEST_CASE( "sends information to INFO", "[.][failing]" ) +{ + INFO( "hi" ); + int i = 7; + CAPTURE( i ); + REQUIRE( false ); +} diff --git a/projects/SelfTest/MiscTests.cpp b/projects/SelfTest/MiscTests.cpp index ad3b239c..cb93eb55 100644 --- a/projects/SelfTest/MiscTests.cpp +++ b/projects/SelfTest/MiscTests.cpp @@ -7,11 +7,10 @@ */ #include "catch.hpp" -#include "catch_self_test.hpp" #include -TEST_CASE( "./succeeding/Misc/Sections", "random SECTION tests" ) +TEST_CASE( "random SECTION tests", "[.][sections][failing]" ) { int a = 1; int b = 2; @@ -28,7 +27,7 @@ TEST_CASE( "./succeeding/Misc/Sections", "random SECTION tests" ) } } -TEST_CASE( "./succeeding/Misc/Sections/nested", "nested SECTION tests" ) +TEST_CASE( "nested SECTION tests", "[.][sections][failing]" ) { int a = 1; int b = 2; @@ -45,7 +44,7 @@ TEST_CASE( "./succeeding/Misc/Sections/nested", "nested SECTION tests" ) } } -TEST_CASE( "./mixed/Misc/Sections/nested2", "nested SECTION tests" ) +TEST_CASE( "more nested SECTION tests", "[sections][failing][.]" ) { int a = 1; int b = 2; @@ -68,7 +67,7 @@ TEST_CASE( "./mixed/Misc/Sections/nested2", "nested SECTION tests" ) } } -TEST_CASE( "./Sections/nested/a/b", "nested SECTION tests" ) +TEST_CASE( "even more nested SECTION tests", "[sections]" ) { SECTION( "c", "" ) { @@ -86,7 +85,7 @@ TEST_CASE( "./Sections/nested/a/b", "nested SECTION tests" ) } } -TEST_CASE( "./mixed/Misc/Sections/loops", "looped SECTION tests" ) +TEST_CASE( "looped SECTION tests", "[.][failing][sections]" ) { int a = 1; @@ -101,7 +100,7 @@ TEST_CASE( "./mixed/Misc/Sections/loops", "looped SECTION tests" ) } } -TEST_CASE( "./mixed/Misc/loops", "looped tests" ) +TEST_CASE( "looped tests", "[.][failing]" ) { static const int fib[] = { 1, 1, 2, 3, 5, 8, 13, 21 }; @@ -112,7 +111,7 @@ TEST_CASE( "./mixed/Misc/loops", "looped tests" ) } } -TEST_CASE( "./succeeding/Misc/stdout,stderr", "Sends stuff to stdout and stderr" ) +TEST_CASE( "Sends stuff to stdout and stderr", "" ) { std::cout << "Some information" << std::endl; @@ -124,19 +123,12 @@ inline const char* makeString( bool makeNull ) return makeNull ? NULL : "valid string"; } -TEST_CASE( "./succeeding/Misc/null strings", "" ) +TEST_CASE( "null strings", "" ) { REQUIRE( makeString( false ) != static_cast(NULL)); REQUIRE( makeString( true ) == static_cast(NULL)); } -TEST_CASE( "./failing/info", "sends information to INFO" ) -{ - INFO( "hi" ); - int i = 7; - CAPTURE( i ); - REQUIRE( false ); -} inline bool testCheckedIf( bool flag ) { @@ -146,12 +138,12 @@ inline bool testCheckedIf( bool flag ) return false; } -TEST_CASE( "./succeeding/checkedif", "" ) +TEST_CASE( "checkedIf", "" ) { REQUIRE( testCheckedIf( true ) ); } -TEST_CASE( "./failing/checkedif", "" ) +TEST_CASE( "checkedIf, failing", "[failing][.]" ) { REQUIRE( testCheckedIf( false ) ); } @@ -164,17 +156,17 @@ inline bool testCheckedElse( bool flag ) return true; } -TEST_CASE( "./succeeding/checkedelse", "" ) +TEST_CASE( "checkedElse", "" ) { REQUIRE( testCheckedElse( true ) ); } -TEST_CASE( "./failing/checkedelse", "" ) +TEST_CASE( "checkedElse, failing", "[failing][.]" ) { REQUIRE( testCheckedElse( false ) ); } -TEST_CASE( "./misc/xmlentitycheck", "" ) +TEST_CASE( "xmlentitycheck", "" ) { SECTION( "embedded xml", "it should be possible to embed xml characters, such as <, \" or &, or even whole documents within an attribute" ) { @@ -186,13 +178,13 @@ TEST_CASE( "./misc/xmlentitycheck", "" ) } } -TEST_CASE( "./manual/onechar", "send a single char to INFO" ) +TEST_CASE( "send a single char to INFO", "[failing][.]" ) { INFO(3); REQUIRE(false); } -TEST_CASE("./succeeding/atomic if", "") +TEST_CASE( "atomic if", "[failing][0]") { size_t x = 0; @@ -207,7 +199,7 @@ inline const char* testStringForMatching() return "this string contains 'abc' as a substring"; } -TEST_CASE("./succeeding/matchers", "") +TEST_CASE("String matchers", "[matchers]" ) { REQUIRE_THAT( testStringForMatching(), Contains( "string" ) ); CHECK_THAT( testStringForMatching(), Contains( "abc" ) ); @@ -216,40 +208,40 @@ TEST_CASE("./succeeding/matchers", "") CHECK_THAT( testStringForMatching(), EndsWith( "substring" ) ); } -TEST_CASE("./failing/matchers/Contains", "") +TEST_CASE("Contains string matcher", "[.][failing][matchers]") { CHECK_THAT( testStringForMatching(), Contains( "not there" ) ); } -TEST_CASE("./failing/matchers/StartsWith", "") +TEST_CASE("StartsWith string matcher", "[.][failing][matchers]") { CHECK_THAT( testStringForMatching(), StartsWith( "string" ) ); } -TEST_CASE("./failing/matchers/EndsWith", "") +TEST_CASE("EndsWith string matcher", "[.][failing][matchers]") { CHECK_THAT( testStringForMatching(), EndsWith( "this" ) ); } -TEST_CASE("./failing/matchers/Equals", "") +TEST_CASE("Equals string matcher", "[.][failing][matchers]") { CHECK_THAT( testStringForMatching(), Equals( "something else" ) ); } -TEST_CASE("string", "Equals with NULL") +TEST_CASE("Equals string matcher, with NULL", "[matchers]") { REQUIRE_THAT("", Equals(NULL)); } -TEST_CASE("./succeeding/matchers/AllOf", "") +TEST_CASE("AllOf matcher", "[matchers]") { CHECK_THAT( testStringForMatching(), AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) ) ); } -TEST_CASE("./succeeding/matchers/AnyOf", "") +TEST_CASE("AnyOf matcher", "[matchers]") { CHECK_THAT( testStringForMatching(), AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) ) ); CHECK_THAT( testStringForMatching(), AnyOf( Catch::Contains( "not there" ), Catch::Contains( "string" ) ) ); } -TEST_CASE("./succeeding/matchers/Equals", "") +TEST_CASE("Equals", "[matchers]") { CHECK_THAT( testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) ); } @@ -268,7 +260,7 @@ TEST_CASE( "Factorials are computed", "[factorial]" ) { REQUIRE( Factorial(10) == 3628800 ); } -TEST_CASE( "empty", "An empty test with no assertions" ) +TEST_CASE( "An empty test with no assertions", "[empty]" ) { } @@ -333,7 +325,7 @@ TEST_CASE( "vectors can be sized and resized", "[vector]" ) { } // https://github.com/philsquared/Catch/issues/166 -TEST_CASE("./failing/CatchSectionInfiniteLoop", "") +TEST_CASE("A couple of nested sections followed by a failure", "[failing][.]") { SECTION("Outer", "") SECTION("Inner", "") diff --git a/projects/SelfTest/TestMain.cpp b/projects/SelfTest/TestMain.cpp index dc2684ed..1d7211e5 100644 --- a/projects/SelfTest/TestMain.cpp +++ b/projects/SelfTest/TestMain.cpp @@ -5,68 +5,21 @@ * Distributed under the Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */ + +#define CATCH_CONFIG_MAIN +#include "catch.hpp" + #ifdef __clang__ #pragma clang diagnostic ignored "-Wpadded" -#endif - -#include "catch_self_test.hpp" -#include "internal/catch_text.h" -#include "internal/catch_console_colour.hpp" - -TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results" ) { - using namespace Catch; - - /////////////////////////////////////////////////////////////////////////// - SECTION( "selftest/expected result", - "Tests do what they claim" ) { - - SECTION( "selftest/expected result/failing tests", - "Tests in the 'failing' branch fail" ) { - MetaTestRunner::runMatching( "./failing/*", MetaTestRunner::Expected::ToFail, 0, 2 ); - } - - SECTION( "selftest/expected result/succeeding tests", - "Tests in the 'succeeding' branch succeed" ) { - MetaTestRunner::runMatching( "./succeeding/*", MetaTestRunner::Expected::ToSucceed, 1, 2 ); - } - } - - /////////////////////////////////////////////////////////////////////////// - SECTION( "selftest/test counts", - "Number of test cases that run is fixed" ) { - EmbeddedRunner runner; - - SECTION( "selftest/test counts/succeeding tests", - "Number of 'succeeding' tests is fixed" ) { - Totals totals = runner.runMatching( "./succeeding/*", 0, 2 ); - CHECK( totals.assertions.passed == 298 ); - CHECK( totals.assertions.failed == 0 ); - } - - SECTION( "selftest/test counts/failing tests", - "Number of 'failing' tests is fixed" ) { - Totals totals = runner.runMatching( "./failing/*", 1, 2 ); - CHECK( totals.assertions.passed == 2 ); - CHECK( totals.assertions.failed == 77 ); - } - } -} - -TEST_CASE( "meta/Misc/Sections", "looped tests" ) { - Catch::EmbeddedRunner runner; - - Catch::Totals totals = runner.runMatching( "./mixed/Misc/Sections/nested2", 0, 1 ); - CHECK( totals.assertions.passed == 2 ); - CHECK( totals.assertions.failed == 1 ); -} - -#ifdef __clang__ #pragma clang diagnostic ignored "-Wweak-vtables" #endif -#include "../../include/internal/catch_commandline.hpp" -#include "../../include/internal/catch_test_spec.h" -#include "../../include/reporters/catch_reporter_xml.hpp" +#include "internal/catch_text.h" +#include "internal/catch_console_colour.hpp" +#include "internal/catch_commandline.hpp" +#include "internal/catch_test_spec.h" + +#include "reporters/catch_reporter_xml.hpp" template void parseIntoConfig( const char * (&argv)[size], Catch::ConfigData& config ) { diff --git a/projects/SelfTest/TrickyTests.cpp b/projects/SelfTest/TrickyTests.cpp index 27e1b8fd..624ba264 100644 --- a/projects/SelfTest/TrickyTests.cpp +++ b/projects/SelfTest/TrickyTests.cpp @@ -27,8 +27,8 @@ namespace Catch /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./succeeding/Tricky/std::pair", - "Parsing a std::pair" + "Parsing a std::pair", + "[Tricky][std::pair]" ) { std::pair aNicePair( 1, 2 ); @@ -39,8 +39,8 @@ TEST_CASE /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./inprogress/failing/Tricky/trailing expression", - "Where the is more to the expression after the RHS" + "Where the is more to the expression after the RHS[failing]", + "[Tricky][failing][.]" ) { // int a = 1, b = 2; @@ -50,8 +50,8 @@ TEST_CASE /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./inprogress/failing/Tricky/compound lhs", - "Where the LHS is not a simple value" + "Where the LHS is not a simple value[failing]", + "[Tricky][failing][.]" ) { /* @@ -76,8 +76,8 @@ struct Opaque /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./failing/Tricky/non streamable type", - "A failing expression with a non streamable type is still captured" + "A failing expression with a non streamable type is still captured[failing]", + "[Tricky][failing][.]" ) { @@ -92,8 +92,8 @@ TEST_CASE /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./failing/string literals", - "string literals of different sizes can be compared" + "string literals of different sizes can be compared[failing]", + "[Tricky][failing][.]" ) { REQUIRE( std::string( "first" ) == "second" ); @@ -103,8 +103,8 @@ TEST_CASE /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./succeeding/side-effects", - "An expression with side-effects should only be evaluated once" + "An expression with side-effects should only be evaluated once", + "[Tricky]" ) { int i = 7; @@ -151,8 +151,8 @@ inline bool operator==(const B::Y& lhs, const A::X& rhs) /* This, currently, does not compile with LLVM TEST_CASE ( - "./succeeding/koenig", "Operators at different namespace levels not hijacked by Koenig lookup" + "[Tricky]" ) { A::X x; @@ -171,8 +171,8 @@ namespace ObjectWithConversions /////////////////////////////////////////////////////////////////////////////// TEST_CASE ( - "./succeeding/koenig", - "Operators at different namespace levels not hijacked by Koenig lookup" + "Operators at different namespace levels not hijacked by Koenig lookup", + "[Tricky]" ) { Object o; @@ -199,7 +199,7 @@ namespace ObjectWithNonConstEqualityOperator unsigned int m_value; }; - TEST_CASE("./succeeding/non-const==", "Demonstrate that a non-const == is not used") + TEST_CASE("Demonstrate that a non-const == is not used", "[Tricky]" ) { Test t( 1 ); REQUIRE( t == 1u ); @@ -212,7 +212,7 @@ namespace EnumBitFieldTests bit30 = 0x40000000, bit31 = 0x80000000, bit30and31 = 0xc0000000}; - TEST_CASE("./succeeding/enum/bits", "Test enum bit values") + TEST_CASE( "Test enum bit values", "[Tricky]" ) { REQUIRE( 0xc0000000 == bit30and31 ); } @@ -226,7 +226,7 @@ struct Obj int* prop; }; -TEST_CASE("./succeeding/boolean member", "") +TEST_CASE("boolean member", "[Tricky]") { Obj obj; REQUIRE( obj.prop != NULL ); @@ -238,14 +238,14 @@ TEST_CASE("./succeeding/boolean member", "") // struct it is declared in - but when evaluating it in a deduced // context it appears to require the extra definition. // The issue was fixed by adding bool overloads to bypass the -// templates that were deduce it. +// templates that were there to deduce it. template struct is_true { static const bool value = B; }; -TEST_CASE( "./succeeding/unimplemented static bool", "static bools can be evaluated" ) +TEST_CASE( "(unimplemented) static bools can be evaluated", "[Tricky]" ) { SECTION("compare to true","") { @@ -277,11 +277,11 @@ TEST_CASE( "./succeeding/unimplemented static bool", "static bools can be evalua // Uncomment these tests to produce an error at test registration time /* -TEST_CASE( "./sameName", "Tests with the same name are not allowed" ) +TEST_CASE( "Tests with the same name are not allowed", "[Tricky]" ) { } -TEST_CASE( "./sameName", "Tests with the same name are not allowed" ) +TEST_CASE( "Tests with the same name are not allowed", "[Tricky]" ) { } @@ -298,7 +298,7 @@ struct Boolable bool m_value; }; -TEST_CASE( "./succeeding/SafeBool", "Objects that evaluated in boolean contexts can be checked") +TEST_CASE( "Objects that evaluated in boolean contexts can be checked", "[Tricky][SafeBool]" ) { Boolable True( true ); Boolable False( false ); @@ -308,7 +308,7 @@ TEST_CASE( "./succeeding/SafeBool", "Objects that evaluated in boolean contexts CHECK_FALSE( False ); } -TEST_CASE( "Assertions then sections", "" ) +TEST_CASE( "Assertions then sections", "[Tricky]" ) { // This was causing a failure due to the way the console reporter was handling // the current section @@ -335,7 +335,7 @@ struct Awkward operator int() const { return 7; } }; -TEST_CASE( "non streamable - with conv. op", "" ) +TEST_CASE( "non streamable - with conv. op", "[Tricky]" ) { Awkward awkward; std::string s = Catch::toString( awkward ); @@ -346,7 +346,7 @@ inline void foo() {} typedef void (*fooptr_t)(); -TEST_CASE( "Comparing function pointers", "[function pointer]" ) +TEST_CASE( "Comparing function pointers", "[Tricky][function pointer]" ) { // This was giving a warning in VS2010 // #179 @@ -358,7 +358,7 @@ TEST_CASE( "Comparing function pointers", "[function pointer]" ) class ClassName {}; -TEST_CASE( "pointer to class", "" ) +TEST_CASE( "pointer to class", "[Tricky]" ) { ClassName *p = 0; REQUIRE( p == 0 ); @@ -368,7 +368,7 @@ TEST_CASE( "pointer to class", "" ) #include -TEST_CASE( "null_ptr", "" ) +TEST_CASE( "null_ptr", "[Tricky]" ) { std::unique_ptr ptr; REQUIRE(ptr.get() == nullptr); @@ -376,7 +376,7 @@ TEST_CASE( "null_ptr", "" ) #endif -TEST_CASE( "X/level/0/a", "" ) { SUCCEED(""); } -TEST_CASE( "X/level/0/b", "[fizz]" ) { SUCCEED(""); } -TEST_CASE( "X/level/1/a", "" ) { SUCCEED(""); } -TEST_CASE( "X/level/1/b", "" ) { SUCCEED("");} +TEST_CASE( "X/level/0/a", "[Tricky]" ) { SUCCEED(""); } +TEST_CASE( "X/level/0/b", "[Tricky][fizz]" ){ SUCCEED(""); } +TEST_CASE( "X/level/1/a", "[Tricky]" ) { SUCCEED(""); } +TEST_CASE( "X/level/1/b", "[Tricky]" ) { SUCCEED(""); } diff --git a/projects/SelfTest/catch_self_test.cpp b/projects/SelfTest/catch_self_test.cpp deleted file mode 100644 index c5153d68..00000000 --- a/projects/SelfTest/catch_self_test.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Created by Phil on 14/02/2012. - * Copyright 2012 Two Blue Cubes Ltd. All rights reserved. - * - * Distributed under the Boost Software License, Version 1.0. (See accompanying - * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - */ - -#define CATCH_CONFIG_MAIN -#include "catch_self_test.hpp" - -namespace Catch{ - - NullStreamingReporter::~NullStreamingReporter() {} - - Totals EmbeddedRunner::runMatching( const std::string& rawTestSpec, std::size_t groupIndex, std::size_t groupsCount, const std::string& ) { - std::ostringstream oss; - Ptr config = new Config(); - config->setStreamBuf( oss.rdbuf() ); - - Totals totals; - - // Scoped because RunContext doesn't report EndTesting until its destructor - { - RunContext runner( config.get(), m_reporter.get() ); - totals = runner.runMatching( rawTestSpec, groupIndex, groupsCount ); - } - return totals; - } - -} diff --git a/projects/SelfTest/catch_self_test.hpp b/projects/SelfTest/catch_self_test.hpp deleted file mode 100644 index 1629644d..00000000 --- a/projects/SelfTest/catch_self_test.hpp +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Created by Phil on 14/01/2011. - * Copyright 2011 Two Blue Cubes Ltd. All rights reserved. - * - * Distributed under the Boost Software License, Version 1.0. (See accompanying - * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - */ -#ifndef TWOBLUECUBES_CATCH_SELF_TEST_HPP_INCLUDED -#define TWOBLUECUBES_CATCH_SELF_TEST_HPP_INCLUDED - -#include "catch.hpp" - -// Use this external guard here as if we're using the single header version -// this will already be defined -#ifndef TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED -#include "catch_interfaces_registry_hub.h" -#endif - -#include "set" - -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wpadded" -#endif - -namespace Catch { - - class NullStreamingReporter : public SharedImpl { - public: - - virtual ~NullStreamingReporter(); - - static std::string getDescription() { - return "null reporter"; - } - - private: // IStreamingReporter - - virtual ReporterPreferences getPreferences() const { - return ReporterPreferences(); - } - - virtual void noMatchingTestCases( std::string const& ) {} - virtual void testRunStarting( TestRunInfo const& ) {} - virtual void testGroupStarting( GroupInfo const& ) {} - virtual void testCaseStarting( TestCaseInfo const& ) {} - virtual void sectionStarting( SectionInfo const& ) {} - virtual void assertionStarting( AssertionInfo const& ) {} - virtual bool assertionEnded( AssertionStats const& ) { return false; } - virtual void sectionEnded( SectionStats const& ) {} - virtual void testCaseEnded( TestCaseStats const& ) {} - virtual void testGroupEnded( TestGroupStats const& ) {} - virtual void testRunEnded( TestRunStats const& ) {} - }; - - class EmbeddedRunner { - - public: - EmbeddedRunner() : m_reporter( new NullStreamingReporter() ) {} - - Totals runMatching( const std::string& rawTestSpec, - std::size_t groupIndex, - std::size_t groupsCount, - const std::string& reporter = "console" ); - - private: - Ptr m_reporter; - }; - - class MetaTestRunner { - - public: - struct Expected { enum Result { - ToSucceed, - ToFail - }; }; - - MetaTestRunner( Expected::Result expectedResult, std::size_t groupIndex, std::size_t groupsCount ) - : m_expectedResult( expectedResult ), - m_groupIndex( groupIndex ), - m_groupsCount( groupsCount ) - {} - - static void runMatching( const std::string& testSpec, - Expected::Result expectedResult, - std::size_t groupIndex, - std::size_t groupsCount ) { - forEach( getRegistryHub().getTestCaseRegistry().getMatchingTestCases( testSpec ), - MetaTestRunner( expectedResult, groupIndex, groupsCount ) ); - } - - void operator()( const TestCase& testCase ) { - std::string name; - Totals totals; - { - EmbeddedRunner runner; - name = testCase.getTestCaseInfo().name; - totals = runner.runMatching( name, m_groupIndex, m_groupsCount ); - } - switch( m_expectedResult ) { - case Expected::ToSucceed: - if( totals.assertions.failed > 0 ) { - FAIL( "Expected test case '" - << name - << "' to succeed but there was/ were " - << totals.assertions.failed << " failure(s)" ); - } - else { - SUCCEED( "Tests passed, as expected" ); - } - break; - case Expected::ToFail: - if( totals.assertions.failed == 0 ) { - FAIL( "Expected test case '" - << name - << "' to fail but there was/ were " - << totals.assertions.passed << " success(es)" ); - } - else { - SUCCEED( "Tests failed, as expected" ); - } - break; - } - } - - private: - Expected::Result m_expectedResult; - std::size_t m_groupIndex; - std::size_t m_groupsCount; - }; - - - struct LineInfoRegistry { - - static LineInfoRegistry& get() { - static LineInfoRegistry s_instance; - return s_instance; - } - - void registerLineInfo( const std::string& name, - const SourceLineInfo& info ) { - m_registry.insert( std::make_pair( name, info ) ); - } - - const SourceLineInfo* find( const std::string& name ) const { - std::map::const_iterator it = m_registry.find( name ); - return it == m_registry.end() ? NULL : &(it->second); - } - - const std::string infoForName( const std::string& name ) const { - std::map::const_iterator it = m_registry.find( name ); - if( it == m_registry.end() ) - return ""; - std::ostringstream oss; - oss << it->second; - return oss.str(); - } - - std::map m_registry; - }; - - struct LineInfoRegistrar { - LineInfoRegistrar( const char* name, const SourceLineInfo& lineInfo ) { - LineInfoRegistry::get().registerLineInfo( name, lineInfo ); - } - }; - -} - -#ifdef __clang__ -#pragma clang diagnostic pop -#endif - -#define CATCH_REGISTER_LINE_INFO( name ) ::Catch::LineInfoRegistrar INTERNAL_CATCH_UNIQUE_NAME( lineRegistrar )( name, ::Catch::SourceLineInfo( __FILE__, __LINE__ ) ); -#define CATCH_GET_LINE_INFO( name ) ::Catch::LineInfoRegistry::get().infoForName( name ) - -#endif // TWOBLUECUBES_CATCH_SELF_TEST_HPP_INCLUDED diff --git a/projects/VS2008/TestCatch/TestCatch.sln b/projects/VS2008/TestCatch/TestCatch.sln index d6120f4e..bd85bbe2 100644 --- a/projects/VS2008/TestCatch/TestCatch.sln +++ b/projects/VS2008/TestCatch/TestCatch.sln @@ -1,20 +1,20 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCatch", "TestCatch\TestCatch.vcproj", "{A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Debug|Win32.ActiveCfg = Debug|Win32 - {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Debug|Win32.Build.0 = Debug|Win32 - {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Release|Win32.ActiveCfg = Release|Win32 - {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCatch", "TestCatch\TestCatch.vcproj", "{A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Debug|Win32.ActiveCfg = Debug|Win32 + {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Debug|Win32.Build.0 = Debug|Win32 + {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Release|Win32.ActiveCfg = Release|Win32 + {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/projects/VS2008/TestCatch/TestCatch/ReadMe.txt b/projects/VS2008/TestCatch/TestCatch/ReadMe.txt deleted file mode 100644 index 597d267b..00000000 --- a/projects/VS2008/TestCatch/TestCatch/ReadMe.txt +++ /dev/null @@ -1,33 +0,0 @@ -======================================================================== - CONSOLE APPLICATION : TestCatch Project Overview -======================================================================== - -AppWizard has created this TestCatch application for you. - -This file contains a summary of what you will find in each of the files that -make up your TestCatch application. - - -TestCatch.vcproj - This is the main project file for VC++ projects generated using an Application Wizard. - It contains information about the version of Visual C++ that generated the file, and - information about the platforms, configurations, and project features selected with the - Application Wizard. - -TestCatch.cpp - This is the main application source file. - -///////////////////////////////////////////////////////////////////////////// -Other standard files: - -StdAfx.h, StdAfx.cpp - These files are used to build a precompiled header (PCH) file - named TestCatch.pch and a precompiled types file named StdAfx.obj. - -///////////////////////////////////////////////////////////////////////////// -Other notes: - -AppWizard uses "TODO:" comments to indicate parts of the source code you -should add to or customize. - -///////////////////////////////////////////////////////////////////////////// diff --git a/projects/VS2008/TestCatch/TestCatch/TestCatch.cpp b/projects/VS2008/TestCatch/TestCatch/TestCatch.cpp index c2fa801e..8dd2067d 100644 --- a/projects/VS2008/TestCatch/TestCatch/TestCatch.cpp +++ b/projects/VS2008/TestCatch/TestCatch/TestCatch.cpp @@ -1,8 +1,8 @@ -// TestCatch.cpp : Defines the entry point for the console application. -// - -int main(int argc, char* argv[]) -{ - return 0; -} - +// TestCatch.cpp : Defines the entry point for the console application. +// + +int main(int argc, char* argv[]) +{ + return 0; +} + diff --git a/projects/VS2008/TestCatch/TestCatch/TestCatch.vcproj b/projects/VS2008/TestCatch/TestCatch/TestCatch.vcproj index 2a9d091a..d40c925d 100644 --- a/projects/VS2008/TestCatch/TestCatch/TestCatch.vcproj +++ b/projects/VS2008/TestCatch/TestCatch/TestCatch.vcproj @@ -1,406 +1,394 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/VS2008/TestCatch/UpgradeLog.XML b/projects/VS2008/TestCatch/UpgradeLog.XML deleted file mode 100644 index 01fa7156..00000000 --- a/projects/VS2008/TestCatch/UpgradeLog.XML +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport.css b/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport.css deleted file mode 100644 index 3411f632..00000000 --- a/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport.css +++ /dev/null @@ -1,207 +0,0 @@ -BODY -{ - BACKGROUND-COLOR: white; - FONT-FAMILY: "Verdana", sans-serif; - FONT-SIZE: 100%; - MARGIN-LEFT: 0px; - MARGIN-TOP: 0px -} -P -{ - FONT-FAMILY: "Verdana", sans-serif; - FONT-SIZE: 70%; - LINE-HEIGHT: 12pt; - MARGIN-BOTTOM: 0px; - MARGIN-LEFT: 10px; - MARGIN-TOP: 10px -} -.note -{ - BACKGROUND-COLOR: #ffffff; - COLOR: #336699; - FONT-FAMILY: "Verdana", sans-serif; - FONT-SIZE: 100%; - MARGIN-BOTTOM: 0px; - MARGIN-LEFT: 0px; - MARGIN-TOP: 0px; - PADDING-RIGHT: 10px -} -.infotable -{ - BACKGROUND-COLOR: #f0f0e0; - BORDER-BOTTOM: #ffffff 0px solid; - BORDER-COLLAPSE: collapse; - BORDER-LEFT: #ffffff 0px solid; - BORDER-RIGHT: #ffffff 0px solid; - BORDER-TOP: #ffffff 0px solid; - FONT-SIZE: 70%; - MARGIN-LEFT: 10px -} -.issuetable -{ - BACKGROUND-COLOR: #ffffe8; - BORDER-COLLAPSE: collapse; - COLOR: #000000; - FONT-SIZE: 100%; - MARGIN-BOTTOM: 10px; - MARGIN-LEFT: 13px; - MARGIN-TOP: 0px -} -.issuetitle -{ - BACKGROUND-COLOR: #ffffff; - BORDER-BOTTOM: #dcdcdc 1px solid; - BORDER-TOP: #dcdcdc 1px; - COLOR: #003366; - FONT-WEIGHT: normal -} -.header -{ - BACKGROUND-COLOR: #cecf9c; - BORDER-BOTTOM: #ffffff 1px solid; - BORDER-LEFT: #ffffff 1px solid; - BORDER-RIGHT: #ffffff 1px solid; - BORDER-TOP: #ffffff 1px solid; - COLOR: #000000; - FONT-WEIGHT: bold -} -.issuehdr -{ - BACKGROUND-COLOR: #E0EBF5; - BORDER-BOTTOM: #dcdcdc 1px solid; - BORDER-TOP: #dcdcdc 1px solid; - COLOR: #000000; - FONT-WEIGHT: normal -} -.issuenone -{ - BACKGROUND-COLOR: #ffffff; - BORDER-BOTTOM: 0px; - BORDER-LEFT: 0px; - BORDER-RIGHT: 0px; - BORDER-TOP: 0px; - COLOR: #000000; - FONT-WEIGHT: normal -} -.content -{ - BACKGROUND-COLOR: #e7e7ce; - BORDER-BOTTOM: #ffffff 1px solid; - BORDER-LEFT: #ffffff 1px solid; - BORDER-RIGHT: #ffffff 1px solid; - BORDER-TOP: #ffffff 1px solid; - PADDING-LEFT: 3px -} -.issuecontent -{ - BACKGROUND-COLOR: #ffffff; - BORDER-BOTTOM: #dcdcdc 1px solid; - BORDER-TOP: #dcdcdc 1px solid; - PADDING-LEFT: 3px -} -A:link -{ - COLOR: #cc6633; - TEXT-DECORATION: underline -} -A:visited -{ - COLOR: #cc6633; -} -A:active -{ - COLOR: #cc6633; -} -A:hover -{ - COLOR: #cc3300; - TEXT-DECORATION: underline -} -H1 -{ - BACKGROUND-COLOR: #003366; - BORDER-BOTTOM: #336699 6px solid; - COLOR: #ffffff; - FONT-SIZE: 130%; - FONT-WEIGHT: normal; - MARGIN: 0em 0em 0em -20px; - PADDING-BOTTOM: 8px; - PADDING-LEFT: 30px; - PADDING-TOP: 16px -} -H2 -{ - COLOR: #000000; - FONT-SIZE: 80%; - FONT-WEIGHT: bold; - MARGIN-BOTTOM: 3px; - MARGIN-LEFT: 10px; - MARGIN-TOP: 20px; - PADDING-LEFT: 0px -} -H3 -{ - COLOR: #000000; - FONT-SIZE: 80%; - FONT-WEIGHT: bold; - MARGIN-BOTTOM: -5px; - MARGIN-LEFT: 10px; - MARGIN-TOP: 20px -} -H4 -{ - COLOR: #000000; - FONT-SIZE: 70%; - FONT-WEIGHT: bold; - MARGIN-BOTTOM: 0px; - MARGIN-TOP: 15px; - PADDING-BOTTOM: 0px -} -UL -{ - COLOR: #000000; - FONT-SIZE: 70%; - LIST-STYLE: square; - MARGIN-BOTTOM: 0pt; - MARGIN-TOP: 0pt -} -OL -{ - COLOR: #000000; - FONT-SIZE: 70%; - LIST-STYLE: square; - MARGIN-BOTTOM: 0pt; - MARGIN-TOP: 0pt -} -LI -{ - LIST-STYLE: square; - MARGIN-LEFT: 0px -} -.expandable -{ - CURSOR: hand -} -.expanded -{ - color: black -} -.collapsed -{ - DISPLAY: none -} -.foot -{ -BACKGROUND-COLOR: #ffffff; -BORDER-BOTTOM: #cecf9c 1px solid; -BORDER-TOP: #cecf9c 2px solid -} -.settings -{ -MARGIN-LEFT: 25PX; -} -.help -{ -TEXT-ALIGN: right; -margin-right: 10px; -} diff --git a/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport.xslt b/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport.xslt deleted file mode 100644 index 02de9d0e..00000000 --- a/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport.xslt +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- Solution: - Project: - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - src - - - - - - - - - - - - -
FilenameStatusErrorsWarnings
- javascript:document.images[''].click()src - - - - Converted - - - - Converted - -
- - files - - - 1 file - - - Converted:
- Not converted: -
-
-
- - - - : - - - - - - - - - Conversion Report - <xsl:if test="Properties/Property[@Name='LogNumber']"> - <xsl:value-of select="Properties/Property[@Name='LogNumber']/@Value"/> - </xsl:if> - - - - -

Conversion Report -

- -

- Time of Conversion:
-

- - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - -
- Conversion Settings -

- - -
-
diff --git a/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport_Minus.gif b/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport_Minus.gif deleted file mode 100644 index 17751cb2..00000000 Binary files a/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport_Minus.gif and /dev/null differ diff --git a/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport_Plus.gif b/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport_Plus.gif deleted file mode 100644 index f6009ca3..00000000 Binary files a/projects/VS2008/TestCatch/_UpgradeReport_Files/UpgradeReport_Plus.gif and /dev/null differ diff --git a/projects/VS2010/TestCatch/TestCatch.sln b/projects/VS2010/TestCatch/TestCatch.sln index c48e0a59..efb4502b 100644 --- a/projects/VS2010/TestCatch/TestCatch.sln +++ b/projects/VS2010/TestCatch/TestCatch.sln @@ -1,20 +1,20 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCatch", "TestCatch\TestCatch.vcxproj", "{A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Debug|Win32.ActiveCfg = Debug|Win32 - {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Debug|Win32.Build.0 = Debug|Win32 - {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Release|Win32.ActiveCfg = Release|Win32 - {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCatch", "TestCatch\TestCatch.vcxproj", "{A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Debug|Win32.ActiveCfg = Debug|Win32 + {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Debug|Win32.Build.0 = Debug|Win32 + {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Release|Win32.ActiveCfg = Release|Win32 + {A2F23B19-9CF7-4246-AE58-BC65E39C6F7E}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/projects/VS2010/TestCatch/TestCatch/ReadMe.txt b/projects/VS2010/TestCatch/TestCatch/ReadMe.txt deleted file mode 100644 index 597d267b..00000000 --- a/projects/VS2010/TestCatch/TestCatch/ReadMe.txt +++ /dev/null @@ -1,33 +0,0 @@ -======================================================================== - CONSOLE APPLICATION : TestCatch Project Overview -======================================================================== - -AppWizard has created this TestCatch application for you. - -This file contains a summary of what you will find in each of the files that -make up your TestCatch application. - - -TestCatch.vcproj - This is the main project file for VC++ projects generated using an Application Wizard. - It contains information about the version of Visual C++ that generated the file, and - information about the platforms, configurations, and project features selected with the - Application Wizard. - -TestCatch.cpp - This is the main application source file. - -///////////////////////////////////////////////////////////////////////////// -Other standard files: - -StdAfx.h, StdAfx.cpp - These files are used to build a precompiled header (PCH) file - named TestCatch.pch and a precompiled types file named StdAfx.obj. - -///////////////////////////////////////////////////////////////////////////// -Other notes: - -AppWizard uses "TODO:" comments to indicate parts of the source code you -should add to or customize. - -///////////////////////////////////////////////////////////////////////////// diff --git a/projects/VS2010/TestCatch/TestCatch/TestCatch.cpp b/projects/VS2010/TestCatch/TestCatch/TestCatch.cpp deleted file mode 100644 index c2fa801e..00000000 --- a/projects/VS2010/TestCatch/TestCatch/TestCatch.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// TestCatch.cpp : Defines the entry point for the console application. -// - -int main(int argc, char* argv[]) -{ - return 0; -} - diff --git a/projects/VS2010/TestCatch/TestCatch/TestCatch.vcxproj b/projects/VS2010/TestCatch/TestCatch/TestCatch.vcxproj index f140739c..a8f60653 100644 --- a/projects/VS2010/TestCatch/TestCatch/TestCatch.vcxproj +++ b/projects/VS2010/TestCatch/TestCatch/TestCatch.vcxproj @@ -96,7 +96,6 @@ - @@ -135,7 +134,6 @@ - @@ -145,9 +143,6 @@ - - - diff --git a/projects/XCode4/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj b/projects/XCode4/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj index 16b0a4af..30b0b29e 100644 --- a/projects/XCode4/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj +++ b/projects/XCode4/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj @@ -36,7 +36,6 @@ 4AB3D9A01616219100C9A0F8 /* catch_interfaces_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AB3D99F1616219100C9A0F8 /* catch_interfaces_config.cpp */; }; 4AB3D9A2161621B500C9A0F8 /* catch_interfaces_generators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AB3D9A1161621B500C9A0F8 /* catch_interfaces_generators.cpp */; }; 4ACE21CC166CA1B300FB5509 /* catch_option.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4ACE21CA166CA1B300FB5509 /* catch_option.cpp */; }; - 4AE1840B14EE4F230066340D /* catch_self_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AE1840A14EE4F230066340D /* catch_self_test.cpp */; }; 4AEE032016142F910071E950 /* catch_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AEE031F16142F910071E950 /* catch_common.cpp */; }; 4AEE032316142FC70071E950 /* catch_debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AEE032216142FC70071E950 /* catch_debugger.cpp */; }; 4AEE032516142FF10071E950 /* catch_stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AEE032416142FF10071E950 /* catch_stream.cpp */; }; @@ -95,7 +94,6 @@ 4A6D0C20149B3D3B00DB3EAA /* CatchSelfTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CatchSelfTest; sourceTree = BUILT_PRODUCTS_DIR; }; 4A6D0C26149B3D3B00DB3EAA /* CatchSelfTest.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = CatchSelfTest.1; sourceTree = ""; }; 4A6D0C2D149B3D9E00DB3EAA /* ApproxTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ApproxTests.cpp; path = ../../../SelfTest/ApproxTests.cpp; sourceTree = ""; }; - 4A6D0C2E149B3D9E00DB3EAA /* catch_self_test.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; lineEnding = 0; name = catch_self_test.hpp; path = ../../../SelfTest/catch_self_test.hpp; sourceTree = ""; }; 4A6D0C2F149B3D9E00DB3EAA /* ClassTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClassTests.cpp; path = ../../../SelfTest/ClassTests.cpp; sourceTree = ""; }; 4A6D0C30149B3D9E00DB3EAA /* ConditionTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConditionTests.cpp; path = ../../../SelfTest/ConditionTests.cpp; sourceTree = ""; }; 4A6D0C31149B3D9E00DB3EAA /* ExceptionTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExceptionTests.cpp; path = ../../../SelfTest/ExceptionTests.cpp; sourceTree = ""; }; @@ -163,7 +161,6 @@ 4AC91CD0155D8DA600DC5117 /* catch_expression_decomposer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; lineEnding = 0; path = catch_expression_decomposer.hpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; 4ACE21C8166CA19700FB5509 /* catch_option.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_option.hpp; sourceTree = ""; }; 4ACE21CA166CA1B300FB5509 /* catch_option.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_option.cpp; path = ../../../SelfTest/SurrogateCpps/catch_option.cpp; sourceTree = ""; }; - 4AE1840A14EE4F230066340D /* catch_self_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_self_test.cpp; path = ../../../SelfTest/catch_self_test.cpp; sourceTree = ""; }; 4AEE031F16142F910071E950 /* catch_common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_common.cpp; path = ../../../SelfTest/SurrogateCpps/catch_common.cpp; sourceTree = ""; }; 4AEE032216142FC70071E950 /* catch_debugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_debugger.cpp; path = ../../../SelfTest/SurrogateCpps/catch_debugger.cpp; sourceTree = ""; }; 4AEE032416142FF10071E950 /* catch_stream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_stream.cpp; path = ../../../SelfTest/SurrogateCpps/catch_stream.cpp; sourceTree = ""; }; @@ -220,8 +217,6 @@ isa = PBXGroup; children = ( 4A6D0C35149B3D9E00DB3EAA /* TestMain.cpp */, - 4A6D0C2E149B3D9E00DB3EAA /* catch_self_test.hpp */, - 4AE1840A14EE4F230066340D /* catch_self_test.cpp */, 266E9AD317290E710061DAB2 /* Introspective Tests */, 4A6D0C40149B3DAB00DB3EAA /* Tests */, 4A6D0C41149B3DE900DB3EAA /* Catch */, @@ -499,7 +494,6 @@ 4A6D0C3D149B3D9E00DB3EAA /* MiscTests.cpp in Sources */, 4A6D0C3E149B3D9E00DB3EAA /* TestMain.cpp in Sources */, 4A6D0C3F149B3D9E00DB3EAA /* TrickyTests.cpp in Sources */, - 4AE1840B14EE4F230066340D /* catch_self_test.cpp in Sources */, 4A8E4DD2160A352200194CBD /* catch_tags.cpp in Sources */, 4AEE032016142F910071E950 /* catch_common.cpp in Sources */, 4AEE032316142FC70071E950 /* catch_debugger.cpp in Sources */, diff --git a/projects/XCode4/CatchSelfTest/CatchSelfTest/CatchSelfTest.1 b/projects/XCode4/CatchSelfTest/CatchSelfTest/CatchSelfTest.1 index 23d3cac2..28b36e20 100644 --- a/projects/XCode4/CatchSelfTest/CatchSelfTest/CatchSelfTest.1 +++ b/projects/XCode4/CatchSelfTest/CatchSelfTest/CatchSelfTest.1 @@ -1,79 +1,79 @@ -.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples. -.\"See Also: -.\"man mdoc.samples for a complete listing of options -.\"man mdoc for the short list of editing options -.\"/usr/share/misc/mdoc.template -.Dd 16/12/2011 \" DATE -.Dt CatchSelfTest 1 \" Program name and manual section number -.Os Darwin -.Sh NAME \" Section Header - required - don't modify -.Nm CatchSelfTest, -.\" The following lines are read in generating the apropos(man -k) database. Use only key -.\" words here as the database is built based on the words here and in the .ND line. -.Nm Other_name_for_same_program(), -.Nm Yet another name for the same program. -.\" Use .Nm macro to designate other names for the documented program. -.Nd This line parsed for whatis database. -.Sh SYNOPSIS \" Section Header - required - don't modify -.Nm -.Op Fl abcd \" [-abcd] -.Op Fl a Ar path \" [-a path] -.Op Ar file \" [file] -.Op Ar \" [file ...] -.Ar arg0 \" Underlined argument - use .Ar anywhere to underline -arg2 ... \" Arguments -.Sh DESCRIPTION \" Section Header - required - don't modify -Use the .Nm macro to refer to your program throughout the man page like such: -.Nm -Underlining is accomplished with the .Ar macro like this: -.Ar underlined text . -.Pp \" Inserts a space -A list of items with descriptions: -.Bl -tag -width -indent \" Begins a tagged list -.It item a \" Each item preceded by .It macro -Description of item a -.It item b -Description of item b -.El \" Ends the list -.Pp -A list of flags and their descriptions: -.Bl -tag -width -indent \" Differs from above in tag removed -.It Fl a \"-a flag as a list item -Description of -a flag -.It Fl b -Description of -b flag -.El \" Ends the list -.Pp -.\" .Sh ENVIRONMENT \" May not be needed -.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1 -.\" .It Ev ENV_VAR_1 -.\" Description of ENV_VAR_1 -.\" .It Ev ENV_VAR_2 -.\" Description of ENV_VAR_2 -.\" .El -.Sh FILES \" File used or created by the topic of the man page -.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact -.It Pa /usr/share/file_name -FILE_1 description -.It Pa /Users/joeuser/Library/really_long_file_name -FILE_2 description -.El \" Ends the list -.\" .Sh DIAGNOSTICS \" May not be needed -.\" .Bl -diag -.\" .It Diagnostic Tag -.\" Diagnostic informtion here. -.\" .It Diagnostic Tag -.\" Diagnostic informtion here. -.\" .El -.Sh SEE ALSO -.\" List links in ascending order by section, alphabetically within a section. -.\" Please do not reference files that do not exist without filing a bug report -.Xr a 1 , -.Xr b 1 , -.Xr c 1 , -.Xr a 2 , -.Xr b 2 , -.Xr a 3 , -.Xr b 3 -.\" .Sh BUGS \" Document known, unremedied bugs +.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples. +.\"See Also: +.\"man mdoc.samples for a complete listing of options +.\"man mdoc for the short list of editing options +.\"/usr/share/misc/mdoc.template +.Dd 16/12/2011 \" DATE +.Dt CatchSelfTest 1 \" Program name and manual section number +.Os Darwin +.Sh NAME \" Section Header - required - don't modify +.Nm CatchSelfTest, +.\" The following lines are read in generating the apropos(man -k) database. Use only key +.\" words here as the database is built based on the words here and in the .ND line. +.Nm Other_name_for_same_program(), +.Nm Yet another name for the same program. +.\" Use .Nm macro to designate other names for the documented program. +.Nd This line parsed for whatis database. +.Sh SYNOPSIS \" Section Header - required - don't modify +.Nm +.Op Fl abcd \" [-abcd] +.Op Fl a Ar path \" [-a path] +.Op Ar file \" [file] +.Op Ar \" [file ...] +.Ar arg0 \" Underlined argument - use .Ar anywhere to underline +arg2 ... \" Arguments +.Sh DESCRIPTION \" Section Header - required - don't modify +Use the .Nm macro to refer to your program throughout the man page like such: +.Nm +Underlining is accomplished with the .Ar macro like this: +.Ar underlined text . +.Pp \" Inserts a space +A list of items with descriptions: +.Bl -tag -width -indent \" Begins a tagged list +.It item a \" Each item preceded by .It macro +Description of item a +.It item b +Description of item b +.El \" Ends the list +.Pp +A list of flags and their descriptions: +.Bl -tag -width -indent \" Differs from above in tag removed +.It Fl a \"-a flag as a list item +Description of -a flag +.It Fl b +Description of -b flag +.El \" Ends the list +.Pp +.\" .Sh ENVIRONMENT \" May not be needed +.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1 +.\" .It Ev ENV_VAR_1 +.\" Description of ENV_VAR_1 +.\" .It Ev ENV_VAR_2 +.\" Description of ENV_VAR_2 +.\" .El +.Sh FILES \" File used or created by the topic of the man page +.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact +.It Pa /usr/share/file_name +FILE_1 description +.It Pa /Users/joeuser/Library/really_long_file_name +FILE_2 description +.El \" Ends the list +.\" .Sh DIAGNOSTICS \" May not be needed +.\" .Bl -diag +.\" .It Diagnostic Tag +.\" Diagnostic informtion here. +.\" .It Diagnostic Tag +.\" Diagnostic informtion here. +.\" .El +.Sh SEE ALSO +.\" List links in ascending order by section, alphabetically within a section. +.\" Please do not reference files that do not exist without filing a bug report +.Xr a 1 , +.Xr b 1 , +.Xr c 1 , +.Xr a 2 , +.Xr b 2 , +.Xr a 3 , +.Xr b 3 +.\" .Sh BUGS \" Document known, unremedied bugs .\" .Sh HISTORY \" Document history if command behaves in a unique manner \ No newline at end of file diff --git a/projects/XCode4/OCTest/OCTest/OCTest.1 b/projects/XCode4/OCTest/OCTest/OCTest.1 index 6ab5ed69..7915d02a 100644 --- a/projects/XCode4/OCTest/OCTest/OCTest.1 +++ b/projects/XCode4/OCTest/OCTest/OCTest.1 @@ -1,79 +1,79 @@ -.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples. -.\"See Also: -.\"man mdoc.samples for a complete listing of options -.\"man mdoc for the short list of editing options -.\"/usr/share/misc/mdoc.template -.Dd 09/02/2012 \" DATE -.Dt OCTest 1 \" Program name and manual section number -.Os Darwin -.Sh NAME \" Section Header - required - don't modify -.Nm OCTest, -.\" The following lines are read in generating the apropos(man -k) database. Use only key -.\" words here as the database is built based on the words here and in the .ND line. -.Nm Other_name_for_same_program(), -.Nm Yet another name for the same program. -.\" Use .Nm macro to designate other names for the documented program. -.Nd This line parsed for whatis database. -.Sh SYNOPSIS \" Section Header - required - don't modify -.Nm -.Op Fl abcd \" [-abcd] -.Op Fl a Ar path \" [-a path] -.Op Ar file \" [file] -.Op Ar \" [file ...] -.Ar arg0 \" Underlined argument - use .Ar anywhere to underline -arg2 ... \" Arguments -.Sh DESCRIPTION \" Section Header - required - don't modify -Use the .Nm macro to refer to your program throughout the man page like such: -.Nm -Underlining is accomplished with the .Ar macro like this: -.Ar underlined text . -.Pp \" Inserts a space -A list of items with descriptions: -.Bl -tag -width -indent \" Begins a tagged list -.It item a \" Each item preceded by .It macro -Description of item a -.It item b -Description of item b -.El \" Ends the list -.Pp -A list of flags and their descriptions: -.Bl -tag -width -indent \" Differs from above in tag removed -.It Fl a \"-a flag as a list item -Description of -a flag -.It Fl b -Description of -b flag -.El \" Ends the list -.Pp -.\" .Sh ENVIRONMENT \" May not be needed -.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1 -.\" .It Ev ENV_VAR_1 -.\" Description of ENV_VAR_1 -.\" .It Ev ENV_VAR_2 -.\" Description of ENV_VAR_2 -.\" .El -.Sh FILES \" File used or created by the topic of the man page -.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact -.It Pa /usr/share/file_name -FILE_1 description -.It Pa /Users/joeuser/Library/really_long_file_name -FILE_2 description -.El \" Ends the list -.\" .Sh DIAGNOSTICS \" May not be needed -.\" .Bl -diag -.\" .It Diagnostic Tag -.\" Diagnostic informtion here. -.\" .It Diagnostic Tag -.\" Diagnostic informtion here. -.\" .El -.Sh SEE ALSO -.\" List links in ascending order by section, alphabetically within a section. -.\" Please do not reference files that do not exist without filing a bug report -.Xr a 1 , -.Xr b 1 , -.Xr c 1 , -.Xr a 2 , -.Xr b 2 , -.Xr a 3 , -.Xr b 3 -.\" .Sh BUGS \" Document known, unremedied bugs +.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples. +.\"See Also: +.\"man mdoc.samples for a complete listing of options +.\"man mdoc for the short list of editing options +.\"/usr/share/misc/mdoc.template +.Dd 09/02/2012 \" DATE +.Dt OCTest 1 \" Program name and manual section number +.Os Darwin +.Sh NAME \" Section Header - required - don't modify +.Nm OCTest, +.\" The following lines are read in generating the apropos(man -k) database. Use only key +.\" words here as the database is built based on the words here and in the .ND line. +.Nm Other_name_for_same_program(), +.Nm Yet another name for the same program. +.\" Use .Nm macro to designate other names for the documented program. +.Nd This line parsed for whatis database. +.Sh SYNOPSIS \" Section Header - required - don't modify +.Nm +.Op Fl abcd \" [-abcd] +.Op Fl a Ar path \" [-a path] +.Op Ar file \" [file] +.Op Ar \" [file ...] +.Ar arg0 \" Underlined argument - use .Ar anywhere to underline +arg2 ... \" Arguments +.Sh DESCRIPTION \" Section Header - required - don't modify +Use the .Nm macro to refer to your program throughout the man page like such: +.Nm +Underlining is accomplished with the .Ar macro like this: +.Ar underlined text . +.Pp \" Inserts a space +A list of items with descriptions: +.Bl -tag -width -indent \" Begins a tagged list +.It item a \" Each item preceded by .It macro +Description of item a +.It item b +Description of item b +.El \" Ends the list +.Pp +A list of flags and their descriptions: +.Bl -tag -width -indent \" Differs from above in tag removed +.It Fl a \"-a flag as a list item +Description of -a flag +.It Fl b +Description of -b flag +.El \" Ends the list +.Pp +.\" .Sh ENVIRONMENT \" May not be needed +.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1 +.\" .It Ev ENV_VAR_1 +.\" Description of ENV_VAR_1 +.\" .It Ev ENV_VAR_2 +.\" Description of ENV_VAR_2 +.\" .El +.Sh FILES \" File used or created by the topic of the man page +.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact +.It Pa /usr/share/file_name +FILE_1 description +.It Pa /Users/joeuser/Library/really_long_file_name +FILE_2 description +.El \" Ends the list +.\" .Sh DIAGNOSTICS \" May not be needed +.\" .Bl -diag +.\" .It Diagnostic Tag +.\" Diagnostic informtion here. +.\" .It Diagnostic Tag +.\" Diagnostic informtion here. +.\" .El +.Sh SEE ALSO +.\" List links in ascending order by section, alphabetically within a section. +.\" Please do not reference files that do not exist without filing a bug report +.Xr a 1 , +.Xr b 1 , +.Xr c 1 , +.Xr a 2 , +.Xr b 2 , +.Xr a 3 , +.Xr b 3 +.\" .Sh BUGS \" Document known, unremedied bugs .\" .Sh HISTORY \" Document history if command behaves in a unique manner \ No newline at end of file diff --git a/single_include/catch.hpp b/single_include/catch.hpp index 9aab75a3..b326de06 100644 --- a/single_include/catch.hpp +++ b/single_include/catch.hpp @@ -1,6 +1,6 @@ /* - * CATCH v1.0 build 11 (master branch) - * Generated: 2013-10-23 15:34:32.120349 + * CATCH v1.0 build 14 (master branch) + * Generated: 2013-11-26 20:54:38.067005 * ---------------------------------------------------------- * This file has been merged from multiple headers. Please don't edit it directly * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. @@ -595,6 +595,7 @@ namespace Catch { #include #include #include +#include #ifdef __OBJC__ // #included from: catch_objc_arc.hpp @@ -2124,6 +2125,7 @@ namespace Catch { : listTests( false ), listTags( false ), listReporters( false ), + listTestNamesOnly( false ), showSuccessfulTests( false ), shouldDebugBreak( false ), noThrow( false ), @@ -2137,6 +2139,7 @@ namespace Catch { bool listTests; bool listTags; bool listReporters; + bool listTestNamesOnly; bool showSuccessfulTests; bool shouldDebugBreak; @@ -2205,6 +2208,7 @@ namespace Catch { } bool listTests() const { return m_data.listTests; } + bool listTestNamesOnly() const { return m_data.listTestNamesOnly; } bool listTags() const { return m_data.listTags; } bool listReporters() const { return m_data.listReporters; } @@ -4127,6 +4131,13 @@ namespace Clara { int position; }; + // NOTE: std::auto_ptr is deprecated in c++11/c++0x +#if defined(__cplusplus) && __cplusplus > 199711L + typedef std::unique_ptr ArgAutoPtr; +#else + typedef std::auto_ptr ArgAutoPtr; +#endif + class ArgBinder { public: template @@ -4151,7 +4162,7 @@ namespace Clara { else if( m_arg.isAnyPositional() ) { if( m_cl->m_arg.get() ) throw std::logic_error( "Only one unpositional argument can be added" ); - m_cl->m_arg = std::auto_ptr( new Arg( m_arg ) ); + m_cl->m_arg = ArgAutoPtr( new Arg( m_arg ) ); } else m_cl->m_options.push_back( m_arg ); @@ -4195,7 +4206,7 @@ namespace Clara { m_highestSpecifiedArgPosition( other.m_highestSpecifiedArgPosition ) { if( other.m_arg.get() ) - m_arg = std::auto_ptr( new Arg( *other.m_arg ) ); + m_arg = ArgAutoPtr( new Arg( *other.m_arg ) ); } template @@ -4365,12 +4376,14 @@ namespace Clara { Detail::BoundArgFunction m_boundProcessName; std::vector m_options; std::map m_positionalArgs; - std::auto_ptr m_arg; + ArgAutoPtr m_arg; int m_highestSpecifiedArgPosition; }; } // end namespace Clara +#include + namespace Catch { inline void abortAfterFirst( ConfigData& config ) { config.abortAfter = 1; } @@ -4397,6 +4410,18 @@ namespace Catch { ? ShowDurations::Always : ShowDurations::Never; } + inline void loadTestNamesFromFile( ConfigData& config, std::string const& _filename ) { + std::ifstream f( _filename.c_str() ); + if( !f.is_open() ) + throw std::domain_error( "Unable to load input file: " + _filename ); + + std::string line; + while( std::getline( f, line ) ) { + line = trim(line); + if( !line.empty() && !startsWith( line, "#" ) ) + addTestOrTags( config, line ); + } + } inline Clara::CommandLine makeCommandLineParser() { @@ -4411,19 +4436,15 @@ namespace Catch { .longOpt( "help" ); cli.bind( &ConfigData::listTests ) - .describe( "list all (or matching) test cases" ) + .describe( "list all/matching test cases" ) .shortOpt( "l") .longOpt( "list-tests" ); cli.bind( &ConfigData::listTags ) - .describe( "list all (or matching) tags" ) + .describe( "list all/matching tags" ) .shortOpt( "t") .longOpt( "list-tags" ); - cli.bind( &ConfigData::listReporters ) - .describe( "list all reporters" ) - .longOpt( "list-reporters" ); - cli.bind( &ConfigData::showSuccessfulTests ) .describe( "include successful tests in output" ) .shortOpt( "s") @@ -4446,7 +4467,7 @@ namespace Catch { .hint( "filename" ); cli.bind( &ConfigData::reporterName ) - .describe( "reporter to use - defaults to console" ) + .describe( "reporter to use (defaults to console)" ) .shortOpt( "r") .longOpt( "reporter" ) // .hint( "name[:filename]" ); @@ -4491,6 +4512,21 @@ namespace Catch { .longOpt( "durations" ) .hint( "yes/no" ); + cli.bind( &loadTestNamesFromFile ) + .describe( "load test names to run from a file" ) + .shortOpt( "f") + .longOpt( "input-file" ) + .hint( "filename" ); + + // Less common commands which don't have a short form + cli.bind( &ConfigData::listTestNamesOnly ) + .describe( "list all/matching test cases names only" ) + .longOpt( "list-test-names-only" ); + + cli.bind( &ConfigData::listReporters ) + .describe( "list all reporters" ) + .longOpt( "list-reporters" ); + return cli; } @@ -4573,75 +4609,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() ) { - if( i == 0 ) { - Colour colourGuard( Colour::SecondaryText ); - std::cout << " " << std::string( maxNameLen - nameCol.size(), '.' ) << " "; - } - else { - std::cout << std::string( maxNameLen - nameCol.size(), ' ' ) << " "; - } - 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 @@ -4649,26 +4639,39 @@ namespace Catch { return matchedTests; } + inline std::size_t listTestsNamesOnly( Config const& config ) { + std::size_t matchedTests = 0; + 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++; + TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); + std::cout << testCaseInfo.name << std::endl; + } + return matchedTests; + } + inline std::size_t listTags( Config const& config ) { if( config.filters().empty() ) 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 ) ); @@ -4677,26 +4680,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(); @@ -4729,6 +4724,8 @@ namespace Catch { Option listedCount; if( config.listTests() ) listedCount = listedCount.valueOr(0) + listTests( config ); + if( config.listTestNamesOnly() ) + listedCount = listedCount.valueOr(0) + listTestsNamesOnly( config ); if( config.listTags() ) listedCount = listedCount.valueOr(0) + listTags( config ); if( config.listReporters() ) @@ -5477,8 +5474,8 @@ namespace Catch { else { TestCase const& prev = *m_functions.find( testCase ); std::cerr << "error: TEST_CASE( \"" << name << "\" ) already defined.\n" - << "\tFirst seen at " << SourceLineInfo( prev.getTestCaseInfo().lineInfo ) << "\n" - << "\tRedefined at " << SourceLineInfo( testCase.getTestCaseInfo().lineInfo ) << std::endl; + << "\tFirst seen at " << prev.getTestCaseInfo().lineInfo << "\n" + << "\tRedefined at " << testCase.getTestCaseInfo().lineInfo << std::endl; exit(1); } } @@ -6263,7 +6260,7 @@ namespace Catch { SourceLineInfo const& _lineInfo ) { std::string desc = _descOrTags; - bool isHidden( startsWith( _name, "./" ) ); + bool isHidden( startsWith( _name, "./" ) ); // Legacy support std::set tags; TagExtracter( tags ).parse( desc ); if( tags.find( "hide" ) != tags.end() || tags.find( "." ) != tags.end() ) @@ -6371,7 +6368,7 @@ namespace Catch { namespace Catch { // These numbers are maintained by a script - Version libraryVersion( 1, 0, 11, "master" ); + Version libraryVersion( 1, 0, 14, "master" ); } // #included from: catch_text.hpp @@ -7294,13 +7291,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; @@ -7358,13 +7360,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: @@ -7467,7 +7470,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 { @@ -7483,6 +7488,7 @@ namespace Catch { std::string messageLabel; std::string message; std::vector messages; + bool printInfoMessages; }; void lazyPrint() { @@ -7568,9 +7574,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 );