mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-29 16:53:30 +01:00
Only use std::cout/ cert via Catch::cout/ cert - and make those conditional on CATCH_CONFIG_NOSTDOUT
This commit is contained in:
parent
85b4e94192
commit
383d7c06a1
@ -108,7 +108,7 @@ namespace Catch {
|
|||||||
: m_cli( makeCommandLineParser() ) {
|
: m_cli( makeCommandLineParser() ) {
|
||||||
if( alreadyInstantiated ) {
|
if( alreadyInstantiated ) {
|
||||||
std::string msg = "Only one instance of Catch::Session can ever be used";
|
std::string msg = "Only one instance of Catch::Session can ever be used";
|
||||||
std::cerr << msg << std::endl;
|
Catch::cerr() << msg << std::endl;
|
||||||
throw std::logic_error( msg );
|
throw std::logic_error( msg );
|
||||||
}
|
}
|
||||||
alreadyInstantiated = true;
|
alreadyInstantiated = true;
|
||||||
@ -118,15 +118,15 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void showHelp( std::string const& processName ) {
|
void showHelp( std::string const& processName ) {
|
||||||
std::cout << "\nCatch v" << libraryVersion.majorVersion << "."
|
Catch::cout() << "\nCatch v" << libraryVersion.majorVersion << "."
|
||||||
<< libraryVersion.minorVersion << " build "
|
<< libraryVersion.minorVersion << " build "
|
||||||
<< libraryVersion.buildNumber;
|
<< libraryVersion.buildNumber;
|
||||||
if( libraryVersion.branchName != std::string( "master" ) )
|
if( libraryVersion.branchName != std::string( "master" ) )
|
||||||
std::cout << " (" << libraryVersion.branchName << " branch)";
|
Catch::cout() << " (" << libraryVersion.branchName << " branch)";
|
||||||
std::cout << "\n";
|
Catch::cout() << "\n";
|
||||||
|
|
||||||
m_cli.usage( std::cout, processName );
|
m_cli.usage( Catch::cout(), processName );
|
||||||
std::cout << "For more detail usage please see the project docs\n" << std::endl;
|
Catch::cout() << "For more detail usage please see the project docs\n" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
int applyCommandLine( int argc, char* const argv[], OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) {
|
int applyCommandLine( int argc, char* const argv[], OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) {
|
||||||
@ -140,11 +140,11 @@ namespace Catch {
|
|||||||
catch( std::exception& ex ) {
|
catch( std::exception& ex ) {
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
std::cerr << "\nError(s) in input:\n"
|
Catch::cerr() << "\nError(s) in input:\n"
|
||||||
<< Text( ex.what(), TextAttributes().setIndent(2) )
|
<< Text( ex.what(), TextAttributes().setIndent(2) )
|
||||||
<< "\n\n";
|
<< "\n\n";
|
||||||
}
|
}
|
||||||
m_cli.usage( std::cout, m_configData.processName );
|
m_cli.usage( Catch::cout(), m_configData.processName );
|
||||||
return (std::numeric_limits<int>::max)();
|
return (std::numeric_limits<int>::max)();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -182,7 +182,7 @@ namespace Catch {
|
|||||||
return static_cast<int>( runner.runTests().assertions.failed );
|
return static_cast<int>( runner.runTests().assertions.failed );
|
||||||
}
|
}
|
||||||
catch( std::exception& ex ) {
|
catch( std::exception& ex ) {
|
||||||
std::cerr << ex.what() << std::endl;
|
Catch::cerr() << ex.what() << std::endl;
|
||||||
return (std::numeric_limits<int>::max)();
|
return (std::numeric_limits<int>::max)();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,12 +81,12 @@ namespace Catch {
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
Config()
|
Config()
|
||||||
: m_os( std::cout.rdbuf() )
|
: m_os( Catch::cout().rdbuf() )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
Config( ConfigData const& data )
|
Config( ConfigData const& data )
|
||||||
: m_data( data ),
|
: m_data( data ),
|
||||||
m_os( std::cout.rdbuf() )
|
m_os( Catch::cout().rdbuf() )
|
||||||
{
|
{
|
||||||
if( !data.testsOrTags.empty() ) {
|
if( !data.testsOrTags.empty() ) {
|
||||||
TestSpecParser parser( ITagAliasRegistry::get() );
|
TestSpecParser parser( ITagAliasRegistry::get() );
|
||||||
@ -97,7 +97,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual ~Config() {
|
virtual ~Config() {
|
||||||
m_os.rdbuf( std::cout.rdbuf() );
|
m_os.rdbuf( Catch::cout().rdbuf() );
|
||||||
m_stream.release();
|
m_stream.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ namespace Catch {
|
|||||||
bool shouldDebugBreak() const { return m_data.shouldDebugBreak; }
|
bool shouldDebugBreak() const { return m_data.shouldDebugBreak; }
|
||||||
|
|
||||||
void setStreamBuf( std::streambuf* buf ) {
|
void setStreamBuf( std::streambuf* buf ) {
|
||||||
m_os.rdbuf( buf ? buf : std::cout.rdbuf() );
|
m_os.rdbuf( buf ? buf : Catch::cout().rdbuf() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void useStream( std::string const& streamName ) {
|
void useStream( std::string const& streamName ) {
|
||||||
|
@ -115,7 +115,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
void setColour( const char* _escapeCode ) {
|
void setColour( const char* _escapeCode ) {
|
||||||
std::cout << '\033' << _escapeCode;
|
Catch::cout() << '\033' << _escapeCode;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -96,8 +96,8 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Stream createStream( std::string const& streamName ) {
|
Stream createStream( std::string const& streamName ) {
|
||||||
if( streamName == "stdout" ) return Stream( std::cout.rdbuf(), false );
|
if( streamName == "stdout" ) return Stream( Catch::cout().rdbuf(), false );
|
||||||
if( streamName == "stderr" ) return Stream( std::cerr.rdbuf(), false );
|
if( streamName == "stderr" ) return Stream( Catch::cerr().rdbuf(), false );
|
||||||
if( streamName == "debug" ) return Stream( new StreamBufImpl<OutputDebugWriter>, true );
|
if( streamName == "debug" ) return Stream( new StreamBufImpl<OutputDebugWriter>, true );
|
||||||
|
|
||||||
throw std::domain_error( "Unknown stream: " + streamName );
|
throw std::domain_error( "Unknown stream: " + streamName );
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
size = sizeof(info);
|
size = sizeof(info);
|
||||||
if( sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0) != 0 ) {
|
if( sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0) != 0 ) {
|
||||||
std::cerr << "\n** Call to sysctl failed - unable to determine if debugger is active **\n" << std::endl;
|
Catch::cerr() << "\n** Call to sysctl failed - unable to determine if debugger is active **\n" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +92,7 @@
|
|||||||
namespace Catch {
|
namespace Catch {
|
||||||
void writeToDebugConsole( std::string const& text ) {
|
void writeToDebugConsole( std::string const& text ) {
|
||||||
// !TBD: Need a version for Mac/ XCode and other IDEs
|
// !TBD: Need a version for Mac/ XCode and other IDEs
|
||||||
std::cout << text;
|
Catch::cout() << text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // Platform
|
#endif // Platform
|
||||||
|
@ -23,9 +23,9 @@ namespace Catch {
|
|||||||
|
|
||||||
TestSpec testSpec = config.testSpec();
|
TestSpec testSpec = config.testSpec();
|
||||||
if( config.testSpec().hasFilters() )
|
if( config.testSpec().hasFilters() )
|
||||||
std::cout << "Matching test cases:\n";
|
Catch::cout() << "Matching test cases:\n";
|
||||||
else {
|
else {
|
||||||
std::cout << "All available test cases:\n";
|
Catch::cout() << "All available test cases:\n";
|
||||||
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,15 +46,15 @@ namespace Catch {
|
|||||||
: Colour::None;
|
: Colour::None;
|
||||||
Colour colourGuard( colour );
|
Colour colourGuard( colour );
|
||||||
|
|
||||||
std::cout << Text( testCaseInfo.name, nameAttr ) << std::endl;
|
Catch::cout() << Text( testCaseInfo.name, nameAttr ) << std::endl;
|
||||||
if( !testCaseInfo.tags.empty() )
|
if( !testCaseInfo.tags.empty() )
|
||||||
std::cout << Text( testCaseInfo.tagsAsString, tagsAttr ) << std::endl;
|
Catch::cout() << Text( testCaseInfo.tagsAsString, tagsAttr ) << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !config.testSpec().hasFilters() )
|
if( !config.testSpec().hasFilters() )
|
||||||
std::cout << pluralise( matchedTests, "test case" ) << "\n" << std::endl;
|
Catch::cout() << pluralise( matchedTests, "test case" ) << "\n" << std::endl;
|
||||||
else
|
else
|
||||||
std::cout << pluralise( matchedTests, "matching test case" ) << "\n" << std::endl;
|
Catch::cout() << pluralise( matchedTests, "matching test case" ) << "\n" << std::endl;
|
||||||
return matchedTests;
|
return matchedTests;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ namespace Catch {
|
|||||||
++it ) {
|
++it ) {
|
||||||
matchedTests++;
|
matchedTests++;
|
||||||
TestCaseInfo const& testCaseInfo = it->getTestCaseInfo();
|
TestCaseInfo const& testCaseInfo = it->getTestCaseInfo();
|
||||||
std::cout << testCaseInfo.name << std::endl;
|
Catch::cout() << testCaseInfo.name << std::endl;
|
||||||
}
|
}
|
||||||
return matchedTests;
|
return matchedTests;
|
||||||
}
|
}
|
||||||
@ -96,9 +96,9 @@ namespace Catch {
|
|||||||
inline std::size_t listTags( Config const& config ) {
|
inline std::size_t listTags( Config const& config ) {
|
||||||
TestSpec testSpec = config.testSpec();
|
TestSpec testSpec = config.testSpec();
|
||||||
if( config.testSpec().hasFilters() )
|
if( config.testSpec().hasFilters() )
|
||||||
std::cout << "Tags for matching test cases:\n";
|
Catch::cout() << "Tags for matching test cases:\n";
|
||||||
else {
|
else {
|
||||||
std::cout << "All available tags:\n";
|
Catch::cout() << "All available tags:\n";
|
||||||
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,14 +132,14 @@ namespace Catch {
|
|||||||
.setInitialIndent( 0 )
|
.setInitialIndent( 0 )
|
||||||
.setIndent( oss.str().size() )
|
.setIndent( oss.str().size() )
|
||||||
.setWidth( CATCH_CONFIG_CONSOLE_WIDTH-10 ) );
|
.setWidth( CATCH_CONFIG_CONSOLE_WIDTH-10 ) );
|
||||||
std::cout << oss.str() << wrapper << "\n";
|
Catch::cout() << oss.str() << wrapper << "\n";
|
||||||
}
|
}
|
||||||
std::cout << pluralise( tagCounts.size(), "tag" ) << "\n" << std::endl;
|
Catch::cout() << pluralise( tagCounts.size(), "tag" ) << "\n" << std::endl;
|
||||||
return tagCounts.size();
|
return tagCounts.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::size_t listReporters( Config const& /*config*/ ) {
|
inline std::size_t listReporters( Config const& /*config*/ ) {
|
||||||
std::cout << "Available reports:\n";
|
Catch::cout() << "Available reports:\n";
|
||||||
IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
|
IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
|
||||||
IReporterRegistry::FactoryMap::const_iterator itBegin = factories.begin(), itEnd = factories.end(), it;
|
IReporterRegistry::FactoryMap::const_iterator itBegin = factories.begin(), itEnd = factories.end(), it;
|
||||||
std::size_t maxNameLen = 0;
|
std::size_t maxNameLen = 0;
|
||||||
@ -151,13 +151,13 @@ namespace Catch {
|
|||||||
.setInitialIndent( 0 )
|
.setInitialIndent( 0 )
|
||||||
.setIndent( 7+maxNameLen )
|
.setIndent( 7+maxNameLen )
|
||||||
.setWidth( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen-8 ) );
|
.setWidth( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen-8 ) );
|
||||||
std::cout << " "
|
Catch::cout() << " "
|
||||||
<< it->first
|
<< it->first
|
||||||
<< ":"
|
<< ":"
|
||||||
<< std::string( maxNameLen - it->first.size() + 2, ' ' )
|
<< std::string( maxNameLen - it->first.size() + 2, ' ' )
|
||||||
<< wrapper << "\n";
|
<< wrapper << "\n";
|
||||||
}
|
}
|
||||||
std::cout << std::endl;
|
Catch::cout() << std::endl;
|
||||||
return factories.size();
|
return factories.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,8 +262,8 @@ namespace Catch {
|
|||||||
Timer timer;
|
Timer timer;
|
||||||
timer.start();
|
timer.start();
|
||||||
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
||||||
StreamRedirect coutRedir( std::cout, redirectedCout );
|
StreamRedirect coutRedir( Catch::cout(), redirectedCout );
|
||||||
StreamRedirect cerrRedir( std::cerr, redirectedCerr );
|
StreamRedirect cerrRedir( Catch::cerr(), redirectedCerr );
|
||||||
invokeActiveTestCase();
|
invokeActiveTestCase();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -28,6 +28,9 @@ namespace Catch {
|
|||||||
private:
|
private:
|
||||||
bool isOwned;
|
bool isOwned;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::ostream& cout();
|
||||||
|
std::ostream& cerr();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_STREAM_H_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_STREAM_H_INCLUDED
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
@ -78,6 +79,15 @@ namespace Catch {
|
|||||||
isOwned = false;
|
isOwned = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement this functions
|
||||||
|
std::ostream& cout() {
|
||||||
|
return std::cout;
|
||||||
|
}
|
||||||
|
std::ostream& cerr() {
|
||||||
|
return std::cerr;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED
|
||||||
|
@ -73,7 +73,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
catch( std::exception& ex ) {
|
catch( std::exception& ex ) {
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
std::cerr << ex.what() << std::endl;
|
Catch::cerr() << ex.what() << std::endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,13 +36,13 @@ namespace Catch {
|
|||||||
if( isReservedTag( tag ) ) {
|
if( isReservedTag( tag ) ) {
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
std::cerr
|
Catch::cerr()
|
||||||
<< "Tag name [" << tag << "] not allowed.\n"
|
<< "Tag name [" << tag << "] not allowed.\n"
|
||||||
<< "Tag names starting with non alpha-numeric characters are reserved\n";
|
<< "Tag names starting with non alpha-numeric characters are reserved\n";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::FileName );
|
Colour colourGuard( Colour::FileName );
|
||||||
std::cerr << _lineInfo << std::endl;
|
Catch::cerr() << _lineInfo << std::endl;
|
||||||
}
|
}
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ namespace Catch {
|
|||||||
TestCase const& prev = *m_functions.find( testCase );
|
TestCase const& prev = *m_functions.find( testCase );
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
std::cerr << "error: TEST_CASE( \"" << name << "\" ) already defined.\n"
|
Catch::cerr() << "error: TEST_CASE( \"" << name << "\" ) already defined.\n"
|
||||||
<< "\tFirst seen at " << prev.getTestCaseInfo().lineInfo << "\n"
|
<< "\tFirst seen at " << prev.getTestCaseInfo().lineInfo << "\n"
|
||||||
<< "\tRedefined at " << testCase.getTestCaseInfo().lineInfo << std::endl;
|
<< "\tRedefined at " << testCase.getTestCaseInfo().lineInfo << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -9,9 +9,9 @@
|
|||||||
#define TWOBLUECUBES_CATCH_XMLWRITER_HPP_INCLUDED
|
#define TWOBLUECUBES_CATCH_XMLWRITER_HPP_INCLUDED
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <catch_stream.h>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ namespace Catch {
|
|||||||
XmlWriter()
|
XmlWriter()
|
||||||
: m_tagIsOpen( false ),
|
: m_tagIsOpen( false ),
|
||||||
m_needsNewline( false ),
|
m_needsNewline( false ),
|
||||||
m_os( &std::cout )
|
m_os( &Catch::cout() )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
XmlWriter( std::ostream& os )
|
XmlWriter( std::ostream& os )
|
||||||
|
@ -355,14 +355,14 @@ TEST_CASE( "Strings can be rendered with colour", "[colour][.]" ) {
|
|||||||
cs .addColour( Colour::Red, 0 )
|
cs .addColour( Colour::Red, 0 )
|
||||||
.addColour( Colour::Green, -1 );
|
.addColour( Colour::Green, -1 );
|
||||||
|
|
||||||
std::cout << cs << std::endl;
|
Catch::cout() << cs << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ColourString cs( "hello" );
|
ColourString cs( "hello" );
|
||||||
cs .addColour( Colour::Blue, 1, -2 );
|
cs .addColour( Colour::Blue, 1, -2 );
|
||||||
|
|
||||||
std::cout << cs << std::endl;
|
Catch::cout() << cs << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* CATCH v1.1 build 6 (develop branch)
|
* CATCH v1.1 build 6 (develop branch)
|
||||||
* Generated: 2014-10-02 18:50:47.450525
|
* Generated: 2014-10-02 19:07:23.164698
|
||||||
* ----------------------------------------------------------
|
* ----------------------------------------------------------
|
||||||
* This file has been merged from multiple headers. Please don't edit it directly
|
* This file has been merged from multiple headers. Please don't edit it directly
|
||||||
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
|
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
|
||||||
@ -3056,6 +3056,9 @@ namespace Catch {
|
|||||||
private:
|
private:
|
||||||
bool isOwned;
|
bool isOwned;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::ostream& cout();
|
||||||
|
std::ostream& cerr();
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -3125,12 +3128,12 @@ namespace Catch {
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
Config()
|
Config()
|
||||||
: m_os( std::cout.rdbuf() )
|
: m_os( Catch::cout().rdbuf() )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
Config( ConfigData const& data )
|
Config( ConfigData const& data )
|
||||||
: m_data( data ),
|
: m_data( data ),
|
||||||
m_os( std::cout.rdbuf() )
|
m_os( Catch::cout().rdbuf() )
|
||||||
{
|
{
|
||||||
if( !data.testsOrTags.empty() ) {
|
if( !data.testsOrTags.empty() ) {
|
||||||
TestSpecParser parser( ITagAliasRegistry::get() );
|
TestSpecParser parser( ITagAliasRegistry::get() );
|
||||||
@ -3141,7 +3144,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual ~Config() {
|
virtual ~Config() {
|
||||||
m_os.rdbuf( std::cout.rdbuf() );
|
m_os.rdbuf( Catch::cout().rdbuf() );
|
||||||
m_stream.release();
|
m_stream.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3163,7 +3166,7 @@ namespace Catch {
|
|||||||
bool shouldDebugBreak() const { return m_data.shouldDebugBreak; }
|
bool shouldDebugBreak() const { return m_data.shouldDebugBreak; }
|
||||||
|
|
||||||
void setStreamBuf( std::streambuf* buf ) {
|
void setStreamBuf( std::streambuf* buf ) {
|
||||||
m_os.rdbuf( buf ? buf : std::cout.rdbuf() );
|
m_os.rdbuf( buf ? buf : Catch::cout().rdbuf() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void useStream( std::string const& streamName ) {
|
void useStream( std::string const& streamName ) {
|
||||||
@ -4712,9 +4715,9 @@ namespace Catch {
|
|||||||
|
|
||||||
TestSpec testSpec = config.testSpec();
|
TestSpec testSpec = config.testSpec();
|
||||||
if( config.testSpec().hasFilters() )
|
if( config.testSpec().hasFilters() )
|
||||||
std::cout << "Matching test cases:\n";
|
Catch::cout() << "Matching test cases:\n";
|
||||||
else {
|
else {
|
||||||
std::cout << "All available test cases:\n";
|
Catch::cout() << "All available test cases:\n";
|
||||||
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4735,15 +4738,15 @@ namespace Catch {
|
|||||||
: Colour::None;
|
: Colour::None;
|
||||||
Colour colourGuard( colour );
|
Colour colourGuard( colour );
|
||||||
|
|
||||||
std::cout << Text( testCaseInfo.name, nameAttr ) << std::endl;
|
Catch::cout() << Text( testCaseInfo.name, nameAttr ) << std::endl;
|
||||||
if( !testCaseInfo.tags.empty() )
|
if( !testCaseInfo.tags.empty() )
|
||||||
std::cout << Text( testCaseInfo.tagsAsString, tagsAttr ) << std::endl;
|
Catch::cout() << Text( testCaseInfo.tagsAsString, tagsAttr ) << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !config.testSpec().hasFilters() )
|
if( !config.testSpec().hasFilters() )
|
||||||
std::cout << pluralise( matchedTests, "test case" ) << "\n" << std::endl;
|
Catch::cout() << pluralise( matchedTests, "test case" ) << "\n" << std::endl;
|
||||||
else
|
else
|
||||||
std::cout << pluralise( matchedTests, "matching test case" ) << "\n" << std::endl;
|
Catch::cout() << pluralise( matchedTests, "matching test case" ) << "\n" << std::endl;
|
||||||
return matchedTests;
|
return matchedTests;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4759,7 +4762,7 @@ namespace Catch {
|
|||||||
++it ) {
|
++it ) {
|
||||||
matchedTests++;
|
matchedTests++;
|
||||||
TestCaseInfo const& testCaseInfo = it->getTestCaseInfo();
|
TestCaseInfo const& testCaseInfo = it->getTestCaseInfo();
|
||||||
std::cout << testCaseInfo.name << std::endl;
|
Catch::cout() << testCaseInfo.name << std::endl;
|
||||||
}
|
}
|
||||||
return matchedTests;
|
return matchedTests;
|
||||||
}
|
}
|
||||||
@ -4785,9 +4788,9 @@ namespace Catch {
|
|||||||
inline std::size_t listTags( Config const& config ) {
|
inline std::size_t listTags( Config const& config ) {
|
||||||
TestSpec testSpec = config.testSpec();
|
TestSpec testSpec = config.testSpec();
|
||||||
if( config.testSpec().hasFilters() )
|
if( config.testSpec().hasFilters() )
|
||||||
std::cout << "Tags for matching test cases:\n";
|
Catch::cout() << "Tags for matching test cases:\n";
|
||||||
else {
|
else {
|
||||||
std::cout << "All available tags:\n";
|
Catch::cout() << "All available tags:\n";
|
||||||
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4821,14 +4824,14 @@ namespace Catch {
|
|||||||
.setInitialIndent( 0 )
|
.setInitialIndent( 0 )
|
||||||
.setIndent( oss.str().size() )
|
.setIndent( oss.str().size() )
|
||||||
.setWidth( CATCH_CONFIG_CONSOLE_WIDTH-10 ) );
|
.setWidth( CATCH_CONFIG_CONSOLE_WIDTH-10 ) );
|
||||||
std::cout << oss.str() << wrapper << "\n";
|
Catch::cout() << oss.str() << wrapper << "\n";
|
||||||
}
|
}
|
||||||
std::cout << pluralise( tagCounts.size(), "tag" ) << "\n" << std::endl;
|
Catch::cout() << pluralise( tagCounts.size(), "tag" ) << "\n" << std::endl;
|
||||||
return tagCounts.size();
|
return tagCounts.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::size_t listReporters( Config const& /*config*/ ) {
|
inline std::size_t listReporters( Config const& /*config*/ ) {
|
||||||
std::cout << "Available reports:\n";
|
Catch::cout() << "Available reports:\n";
|
||||||
IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
|
IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
|
||||||
IReporterRegistry::FactoryMap::const_iterator itBegin = factories.begin(), itEnd = factories.end(), it;
|
IReporterRegistry::FactoryMap::const_iterator itBegin = factories.begin(), itEnd = factories.end(), it;
|
||||||
std::size_t maxNameLen = 0;
|
std::size_t maxNameLen = 0;
|
||||||
@ -4840,13 +4843,13 @@ namespace Catch {
|
|||||||
.setInitialIndent( 0 )
|
.setInitialIndent( 0 )
|
||||||
.setIndent( 7+maxNameLen )
|
.setIndent( 7+maxNameLen )
|
||||||
.setWidth( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen-8 ) );
|
.setWidth( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen-8 ) );
|
||||||
std::cout << " "
|
Catch::cout() << " "
|
||||||
<< it->first
|
<< it->first
|
||||||
<< ":"
|
<< ":"
|
||||||
<< std::string( maxNameLen - it->first.size() + 2, ' ' )
|
<< std::string( maxNameLen - it->first.size() + 2, ' ' )
|
||||||
<< wrapper << "\n";
|
<< wrapper << "\n";
|
||||||
}
|
}
|
||||||
std::cout << std::endl;
|
Catch::cout() << std::endl;
|
||||||
return factories.size();
|
return factories.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5315,8 +5318,8 @@ namespace Catch {
|
|||||||
Timer timer;
|
Timer timer;
|
||||||
timer.start();
|
timer.start();
|
||||||
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
||||||
StreamRedirect coutRedir( std::cout, redirectedCout );
|
StreamRedirect coutRedir( Catch::cout(), redirectedCout );
|
||||||
StreamRedirect cerrRedir( std::cerr, redirectedCerr );
|
StreamRedirect cerrRedir( Catch::cerr(), redirectedCerr );
|
||||||
invokeActiveTestCase();
|
invokeActiveTestCase();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -5530,7 +5533,7 @@ namespace Catch {
|
|||||||
: m_cli( makeCommandLineParser() ) {
|
: m_cli( makeCommandLineParser() ) {
|
||||||
if( alreadyInstantiated ) {
|
if( alreadyInstantiated ) {
|
||||||
std::string msg = "Only one instance of Catch::Session can ever be used";
|
std::string msg = "Only one instance of Catch::Session can ever be used";
|
||||||
std::cerr << msg << std::endl;
|
Catch::cerr() << msg << std::endl;
|
||||||
throw std::logic_error( msg );
|
throw std::logic_error( msg );
|
||||||
}
|
}
|
||||||
alreadyInstantiated = true;
|
alreadyInstantiated = true;
|
||||||
@ -5540,15 +5543,15 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void showHelp( std::string const& processName ) {
|
void showHelp( std::string const& processName ) {
|
||||||
std::cout << "\nCatch v" << libraryVersion.majorVersion << "."
|
Catch::cout() << "\nCatch v" << libraryVersion.majorVersion << "."
|
||||||
<< libraryVersion.minorVersion << " build "
|
<< libraryVersion.minorVersion << " build "
|
||||||
<< libraryVersion.buildNumber;
|
<< libraryVersion.buildNumber;
|
||||||
if( libraryVersion.branchName != std::string( "master" ) )
|
if( libraryVersion.branchName != std::string( "master" ) )
|
||||||
std::cout << " (" << libraryVersion.branchName << " branch)";
|
Catch::cout() << " (" << libraryVersion.branchName << " branch)";
|
||||||
std::cout << "\n";
|
Catch::cout() << "\n";
|
||||||
|
|
||||||
m_cli.usage( std::cout, processName );
|
m_cli.usage( Catch::cout(), processName );
|
||||||
std::cout << "For more detail usage please see the project docs\n" << std::endl;
|
Catch::cout() << "For more detail usage please see the project docs\n" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
int applyCommandLine( int argc, char* const argv[], OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) {
|
int applyCommandLine( int argc, char* const argv[], OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) {
|
||||||
@ -5562,11 +5565,11 @@ namespace Catch {
|
|||||||
catch( std::exception& ex ) {
|
catch( std::exception& ex ) {
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
std::cerr << "\nError(s) in input:\n"
|
Catch::cerr() << "\nError(s) in input:\n"
|
||||||
<< Text( ex.what(), TextAttributes().setIndent(2) )
|
<< Text( ex.what(), TextAttributes().setIndent(2) )
|
||||||
<< "\n\n";
|
<< "\n\n";
|
||||||
}
|
}
|
||||||
m_cli.usage( std::cout, m_configData.processName );
|
m_cli.usage( Catch::cout(), m_configData.processName );
|
||||||
return (std::numeric_limits<int>::max)();
|
return (std::numeric_limits<int>::max)();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -5604,7 +5607,7 @@ namespace Catch {
|
|||||||
return static_cast<int>( runner.runTests().assertions.failed );
|
return static_cast<int>( runner.runTests().assertions.failed );
|
||||||
}
|
}
|
||||||
catch( std::exception& ex ) {
|
catch( std::exception& ex ) {
|
||||||
std::cerr << ex.what() << std::endl;
|
Catch::cerr() << ex.what() << std::endl;
|
||||||
return (std::numeric_limits<int>::max)();
|
return (std::numeric_limits<int>::max)();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5679,7 +5682,7 @@ namespace Catch {
|
|||||||
TestCase const& prev = *m_functions.find( testCase );
|
TestCase const& prev = *m_functions.find( testCase );
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
std::cerr << "error: TEST_CASE( \"" << name << "\" ) already defined.\n"
|
Catch::cerr() << "error: TEST_CASE( \"" << name << "\" ) already defined.\n"
|
||||||
<< "\tFirst seen at " << prev.getTestCaseInfo().lineInfo << "\n"
|
<< "\tFirst seen at " << prev.getTestCaseInfo().lineInfo << "\n"
|
||||||
<< "\tRedefined at " << testCase.getTestCaseInfo().lineInfo << std::endl;
|
<< "\tRedefined at " << testCase.getTestCaseInfo().lineInfo << std::endl;
|
||||||
}
|
}
|
||||||
@ -5992,6 +5995,7 @@ namespace Catch {
|
|||||||
|
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
@ -6055,6 +6059,15 @@ namespace Catch {
|
|||||||
isOwned = false;
|
isOwned = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement this functions
|
||||||
|
std::ostream& cout() {
|
||||||
|
return std::cout;
|
||||||
|
}
|
||||||
|
std::ostream& cerr() {
|
||||||
|
return std::cerr;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
@ -6140,8 +6153,8 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Stream createStream( std::string const& streamName ) {
|
Stream createStream( std::string const& streamName ) {
|
||||||
if( streamName == "stdout" ) return Stream( std::cout.rdbuf(), false );
|
if( streamName == "stdout" ) return Stream( Catch::cout().rdbuf(), false );
|
||||||
if( streamName == "stderr" ) return Stream( std::cerr.rdbuf(), false );
|
if( streamName == "stderr" ) return Stream( Catch::cerr().rdbuf(), false );
|
||||||
if( streamName == "debug" ) return Stream( new StreamBufImpl<OutputDebugWriter>, true );
|
if( streamName == "debug" ) return Stream( new StreamBufImpl<OutputDebugWriter>, true );
|
||||||
|
|
||||||
throw std::domain_error( "Unknown stream: " + streamName );
|
throw std::domain_error( "Unknown stream: " + streamName );
|
||||||
@ -6261,7 +6274,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
void setColour( const char* _escapeCode ) {
|
void setColour( const char* _escapeCode ) {
|
||||||
std::cout << '\033' << _escapeCode;
|
Catch::cout() << '\033' << _escapeCode;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -6490,13 +6503,13 @@ namespace Catch {
|
|||||||
if( isReservedTag( tag ) ) {
|
if( isReservedTag( tag ) ) {
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
std::cerr
|
Catch::cerr()
|
||||||
<< "Tag name [" << tag << "] not allowed.\n"
|
<< "Tag name [" << tag << "] not allowed.\n"
|
||||||
<< "Tag names starting with non alpha-numeric characters are reserved\n";
|
<< "Tag names starting with non alpha-numeric characters are reserved\n";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::FileName );
|
Colour colourGuard( Colour::FileName );
|
||||||
std::cerr << _lineInfo << std::endl;
|
Catch::cerr() << _lineInfo << std::endl;
|
||||||
}
|
}
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -7013,7 +7026,7 @@ namespace Catch {
|
|||||||
|
|
||||||
size = sizeof(info);
|
size = sizeof(info);
|
||||||
if( sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0) != 0 ) {
|
if( sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0) != 0 ) {
|
||||||
std::cerr << "\n** Call to sysctl failed - unable to determine if debugger is active **\n" << std::endl;
|
Catch::cerr() << "\n** Call to sysctl failed - unable to determine if debugger is active **\n" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7054,7 +7067,7 @@ namespace Catch {
|
|||||||
namespace Catch {
|
namespace Catch {
|
||||||
void writeToDebugConsole( std::string const& text ) {
|
void writeToDebugConsole( std::string const& text ) {
|
||||||
// !TBD: Need a version for Mac/ XCode and other IDEs
|
// !TBD: Need a version for Mac/ XCode and other IDEs
|
||||||
std::cout << text;
|
Catch::cout() << text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // Platform
|
#endif // Platform
|
||||||
@ -7429,7 +7442,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
catch( std::exception& ex ) {
|
catch( std::exception& ex ) {
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
std::cerr << ex.what() << std::endl;
|
Catch::cerr() << ex.what() << std::endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -7698,9 +7711,9 @@ namespace Catch {
|
|||||||
#define TWOBLUECUBES_CATCH_XMLWRITER_HPP_INCLUDED
|
#define TWOBLUECUBES_CATCH_XMLWRITER_HPP_INCLUDED
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <catch_stream.h>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
@ -7741,7 +7754,7 @@ namespace Catch {
|
|||||||
XmlWriter()
|
XmlWriter()
|
||||||
: m_tagIsOpen( false ),
|
: m_tagIsOpen( false ),
|
||||||
m_needsNewline( false ),
|
m_needsNewline( false ),
|
||||||
m_os( &std::cout )
|
m_os( &Catch::cout() )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
XmlWriter( std::ostream& os )
|
XmlWriter( std::ostream& os )
|
||||||
|
Loading…
Reference in New Issue
Block a user