diff --git a/include/catch.hpp b/include/catch.hpp index 2ac88963..1df3eeb6 100644 --- a/include/catch.hpp +++ b/include/catch.hpp @@ -9,15 +9,7 @@ #ifndef TWOBLUECUBES_CATCH_HPP_INCLUDED #define TWOBLUECUBES_CATCH_HPP_INCLUDED -#ifdef __clang__ -#pragma clang diagnostic ignored "-Wglobal-constructors" -#pragma clang diagnostic ignored "-Wvariadic-macros" -#pragma clang diagnostic ignored "-Wc99-extensions" -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wpadded" -#pragma clang diagnostic ignored "-Wc++98-compat" -#pragma clang diagnostic ignored "-Wc++98-compat-pedantic" -#endif +#include "internal/catch_suppress_warnings.h" #ifdef CATCH_CONFIG_MAIN # define CATCH_CONFIG_RUNNER @@ -197,8 +189,6 @@ using Catch::Detail::Approx; -#ifdef __clang__ -#pragma clang diagnostic pop -#endif +#include "internal/catch_reenable_warnings.h" #endif // TWOBLUECUBES_CATCH_HPP_INCLUDED diff --git a/include/internal/catch_console_colour.hpp b/include/internal/catch_console_colour.hpp index 3ea81788..b884df43 100644 --- a/include/internal/catch_console_colour.hpp +++ b/include/internal/catch_console_colour.hpp @@ -58,6 +58,7 @@ namespace Catch { static void use( Code _colourCode ); private: + Colour( Colour const& other ); static Detail::IColourImpl* impl(); }; diff --git a/include/internal/catch_message.h b/include/internal/catch_message.h index d0886654..84ff95ea 100644 --- a/include/internal/catch_message.h +++ b/include/internal/catch_message.h @@ -55,6 +55,7 @@ namespace Catch { class ScopedMessage { public: ScopedMessage( MessageBuilder const& builder ); + ScopedMessage( ScopedMessage const& other ); ~ScopedMessage(); MessageInfo m_info; diff --git a/include/internal/catch_message.hpp b/include/internal/catch_message.hpp index 8f303f7a..42866be8 100644 --- a/include/internal/catch_message.hpp +++ b/include/internal/catch_message.hpp @@ -33,6 +33,10 @@ namespace Catch { m_info.message = builder.m_stream.str(); getResultCapture().pushScopedMessage( m_info ); } + ScopedMessage::ScopedMessage( ScopedMessage const& other ) + : m_info( other.m_info ) + {} + ScopedMessage::~ScopedMessage() { getResultCapture().popScopedMessage( m_info ); } diff --git a/include/internal/catch_notimplemented_exception.h b/include/internal/catch_notimplemented_exception.h index 84b1cf3f..2e38b98f 100644 --- a/include/internal/catch_notimplemented_exception.h +++ b/include/internal/catch_notimplemented_exception.h @@ -17,6 +17,7 @@ namespace Catch { { public: NotImplementedException( SourceLineInfo const& lineInfo ); + NotImplementedException( NotImplementedException const& ) {} virtual ~NotImplementedException() CATCH_NOEXCEPT {} diff --git a/include/internal/catch_reenable_warnings.h b/include/internal/catch_reenable_warnings.h new file mode 100644 index 00000000..fbdfebc0 --- /dev/null +++ b/include/internal/catch_reenable_warnings.h @@ -0,0 +1,15 @@ +/* + * Copyright 2014 Two Blue Cubes Ltd + * + * 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_REENABLE_WARNINGS_H_INCLUDED +#define TWOBLUECUBES_CATCH_REENABLE_WARNINGS_H_INCLUDED + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#endif // TWOBLUECUBES_CATCH_REENABLE_WARNINGS_H_INCLUDED diff --git a/include/internal/catch_suppress_warnings.h b/include/internal/catch_suppress_warnings.h new file mode 100644 index 00000000..e5cfdc56 --- /dev/null +++ b/include/internal/catch_suppress_warnings.h @@ -0,0 +1,21 @@ +/* + * Copyright 2014 Two Blue Cubes Ltd + * + * 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_SUPPRESS_WARNINGS_H_INCLUDED +#define TWOBLUECUBES_CATCH_SUPPRESS_WARNINGS_H_INCLUDED + +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wglobal-constructors" +#pragma clang diagnostic ignored "-Wvariadic-macros" +#pragma clang diagnostic ignored "-Wc99-extensions" +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#pragma clang diagnostic ignored "-Wc++98-compat" +#pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif + +#endif // TWOBLUECUBES_CATCH_SUPPRESS_WARNINGS_H_INCLUDED diff --git a/include/internal/catch_xmlwriter.hpp b/include/internal/catch_xmlwriter.hpp index 3b19b945..52d66bce 100644 --- a/include/internal/catch_xmlwriter.hpp +++ b/include/internal/catch_xmlwriter.hpp @@ -66,26 +66,26 @@ namespace Catch { endElement(); } -# ifndef CATCH_CPP11_OR_GREATER - XmlWriter& operator = ( XmlWriter const& other ) { - XmlWriter temp( other ); - swap( temp ); - return *this; - } -# else - XmlWriter( XmlWriter const& ) = default; - XmlWriter( XmlWriter && ) = default; - XmlWriter& operator = ( XmlWriter const& ) = default; - XmlWriter& operator = ( XmlWriter && ) = default; -# endif - - void swap( XmlWriter& other ) { - std::swap( m_tagIsOpen, other.m_tagIsOpen ); - std::swap( m_needsNewline, other.m_needsNewline ); - std::swap( m_tags, other.m_tags ); - std::swap( m_indent, other.m_indent ); - std::swap( m_os, other.m_os ); - } +//# ifndef CATCH_CPP11_OR_GREATER +// XmlWriter& operator = ( XmlWriter const& other ) { +// XmlWriter temp( other ); +// swap( temp ); +// return *this; +// } +//# else +// XmlWriter( XmlWriter const& ) = default; +// XmlWriter( XmlWriter && ) = default; +// XmlWriter& operator = ( XmlWriter const& ) = default; +// XmlWriter& operator = ( XmlWriter && ) = default; +//# endif +// +// void swap( XmlWriter& other ) { +// std::swap( m_tagIsOpen, other.m_tagIsOpen ); +// std::swap( m_needsNewline, other.m_needsNewline ); +// std::swap( m_tags, other.m_tags ); +// std::swap( m_indent, other.m_indent ); +// std::swap( m_os, other.m_os ); +// } XmlWriter& startElement( std::string const& name ) { ensureTagClosed(); @@ -163,7 +163,13 @@ namespace Catch { return *this; } + void setStream( std::ostream& os ) { + m_os = &os; + } + private: + XmlWriter( XmlWriter const& ); + void operator=( XmlWriter const& ); std::ostream& stream() { return *m_os; diff --git a/include/reporters/catch_reporter_bases.hpp b/include/reporters/catch_reporter_bases.hpp index ee255406..f41bf6ac 100644 --- a/include/reporters/catch_reporter_bases.hpp +++ b/include/reporters/catch_reporter_bases.hpp @@ -99,7 +99,6 @@ namespace Catch { return node->stats.sectionInfo.lineInfo == m_other.lineInfo; } private: - BySectionInfo& operator=( BySectionInfo const& other ); // = delete; SectionInfo const& m_other; }; diff --git a/include/reporters/catch_reporter_compact.hpp b/include/reporters/catch_reporter_compact.hpp index 78af2bb9..7a6353e6 100644 --- a/include/reporters/catch_reporter_compact.hpp +++ b/include/reporters/catch_reporter_compact.hpp @@ -142,7 +142,7 @@ namespace Catch { private: // Colour::LightGrey - static Colour dimColour() { return Colour::FileName; } + static Colour::Code dimColour() { return Colour::FileName; } #ifdef CATCH_PLATFORM_MAC static const char* failedString() { return "FAILED"; } @@ -157,7 +157,7 @@ namespace Catch { stream << result.getSourceInfo() << ":"; } - void printResultType( Colour colour, std::string passOrFail ) const { + void printResultType( Colour::Code colour, std::string passOrFail ) const { if( !passOrFail.empty() ) { { Colour colourGuard( colour ); @@ -205,7 +205,7 @@ namespace Catch { } } - void printRemainingMessages( Colour colour = dimColour() ) { + void printRemainingMessages( Colour::Code colour = dimColour() ) { if ( itMessage == messages.end() ) return; diff --git a/include/reporters/catch_reporter_xml.hpp b/include/reporters/catch_reporter_xml.hpp index 15aa828f..0894238e 100644 --- a/include/reporters/catch_reporter_xml.hpp +++ b/include/reporters/catch_reporter_xml.hpp @@ -31,7 +31,7 @@ namespace Catch { } virtual void StartTesting() { - m_xml = XmlWriter( m_config.stream() ); + m_xml.setStream( m_config.stream() ); m_xml.startElement( "Catch" ); if( !m_config.fullConfig()->name().empty() ) m_xml.writeAttribute( "name", m_config.fullConfig()->name() ); diff --git a/projects/SelfTest/MessageTests.cpp b/projects/SelfTest/MessageTests.cpp index d67a716f..8bcfe009 100644 --- a/projects/SelfTest/MessageTests.cpp +++ b/projects/SelfTest/MessageTests.cpp @@ -8,6 +8,10 @@ #include "catch.hpp" +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif + TEST_CASE( "INFO and WARN do not abort tests", "[messages][.]" ) { INFO( "this is a " << "message" ); // This should output the message if a failure occurs diff --git a/projects/SelfTest/MiscTests.cpp b/projects/SelfTest/MiscTests.cpp index fffec62a..890e1e5a 100644 --- a/projects/SelfTest/MiscTests.cpp +++ b/projects/SelfTest/MiscTests.cpp @@ -10,6 +10,10 @@ #include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif + TEST_CASE( "random SECTION tests", "[.][sections][failing]" ) { int a = 1; diff --git a/projects/SelfTest/SurrogateCpps/catch_common.cpp b/projects/SelfTest/SurrogateCpps/catch_common.cpp index e828ef62..72f90bd6 100644 --- a/projects/SelfTest/SurrogateCpps/catch_common.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_common.cpp @@ -1,2 +1,3 @@ // This file is only here to verify (to the extent possible) the self sufficiency of the header +#include "catch_suppress_warnings.h" #include "catch_common.h" diff --git a/projects/SelfTest/SurrogateCpps/catch_console_colour.cpp b/projects/SelfTest/SurrogateCpps/catch_console_colour.cpp index 46e02333..e7378c04 100644 --- a/projects/SelfTest/SurrogateCpps/catch_console_colour.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_console_colour.cpp @@ -1,2 +1,3 @@ // This file is only here to verify (to the extent possible) the self sufficiency of the header +#include "catch_suppress_warnings.h" #include "catch_console_colour.hpp" diff --git a/projects/SelfTest/SurrogateCpps/catch_interfaces_capture.cpp b/projects/SelfTest/SurrogateCpps/catch_interfaces_capture.cpp index d2129650..2d1c8f35 100644 --- a/projects/SelfTest/SurrogateCpps/catch_interfaces_capture.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_interfaces_capture.cpp @@ -1,2 +1,3 @@ // This file is only here to verify (to the extent possible) the self sufficiency of the header +#include "catch_suppress_warnings.h" #include "catch_interfaces_capture.h" diff --git a/projects/SelfTest/SurrogateCpps/catch_interfaces_config.cpp b/projects/SelfTest/SurrogateCpps/catch_interfaces_config.cpp index acc64cc3..de0f18d3 100644 --- a/projects/SelfTest/SurrogateCpps/catch_interfaces_config.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_interfaces_config.cpp @@ -1 +1,2 @@ +#include "catch_suppress_warnings.h" #include "catch_interfaces_config.h" diff --git a/projects/SelfTest/SurrogateCpps/catch_interfaces_reporter.cpp b/projects/SelfTest/SurrogateCpps/catch_interfaces_reporter.cpp index c6f466d1..544f9d0f 100644 --- a/projects/SelfTest/SurrogateCpps/catch_interfaces_reporter.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_interfaces_reporter.cpp @@ -1 +1,2 @@ +#include "catch_suppress_warnings.h" #include "catch_interfaces_reporter.h" diff --git a/projects/SelfTest/SurrogateCpps/catch_interfaces_testcase.cpp b/projects/SelfTest/SurrogateCpps/catch_interfaces_testcase.cpp index 9227790e..733dcb4e 100644 --- a/projects/SelfTest/SurrogateCpps/catch_interfaces_testcase.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_interfaces_testcase.cpp @@ -1 +1,2 @@ +#include "catch_suppress_warnings.h" #include "catch_interfaces_testcase.h" diff --git a/projects/SelfTest/SurrogateCpps/catch_message.cpp b/projects/SelfTest/SurrogateCpps/catch_message.cpp index 257c8b06..ad2f5e77 100644 --- a/projects/SelfTest/SurrogateCpps/catch_message.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_message.cpp @@ -1,2 +1,3 @@ // This file is only here to verify (to the extent possible) the self sufficiency of the header +#include "catch_suppress_warnings.h" #include "catch_message.h" diff --git a/projects/SelfTest/SurrogateCpps/catch_option.cpp b/projects/SelfTest/SurrogateCpps/catch_option.cpp index 9461fdef..35e32829 100644 --- a/projects/SelfTest/SurrogateCpps/catch_option.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_option.cpp @@ -1,2 +1,3 @@ // This file is only here to verify (to the extent possible) the self sufficiency of the header +#include "catch_suppress_warnings.h" #include "catch_option.hpp" diff --git a/projects/SelfTest/SurrogateCpps/catch_ptr.cpp b/projects/SelfTest/SurrogateCpps/catch_ptr.cpp index 24ff97b1..a25ad66d 100644 --- a/projects/SelfTest/SurrogateCpps/catch_ptr.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_ptr.cpp @@ -1,2 +1,3 @@ // This file is only here to verify (to the extent possible) the self sufficiency of the header +#include "catch_suppress_warnings.h" #include "catch_ptr.hpp" diff --git a/projects/SelfTest/SurrogateCpps/catch_streambuf.cpp b/projects/SelfTest/SurrogateCpps/catch_streambuf.cpp index f2983e25..5c0043c2 100644 --- a/projects/SelfTest/SurrogateCpps/catch_streambuf.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_streambuf.cpp @@ -1,2 +1,3 @@ // This file is only here to verify (to the extent possible) the self sufficiency of the header +#include "catch_suppress_warnings.h" #include "catch_streambuf.h" diff --git a/projects/SelfTest/SurrogateCpps/catch_test_spec.cpp b/projects/SelfTest/SurrogateCpps/catch_test_spec.cpp index 7d617a31..46bf89f6 100644 --- a/projects/SelfTest/SurrogateCpps/catch_test_spec.cpp +++ b/projects/SelfTest/SurrogateCpps/catch_test_spec.cpp @@ -1,2 +1,3 @@ // This file is only here to verify (to the extent possible) the self sufficiency of the header +#include "catch_suppress_warnings.h" #include "catch_test_spec.hpp" diff --git a/projects/SelfTest/TrickyTests.cpp b/projects/SelfTest/TrickyTests.cpp index f8af61c2..1fa7e364 100644 --- a/projects/SelfTest/TrickyTests.cpp +++ b/projects/SelfTest/TrickyTests.cpp @@ -12,6 +12,11 @@ #include "catch.hpp" +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wc++98-compat" +#pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif + namespace Catch { template<> diff --git a/projects/XCode/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj b/projects/XCode/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj index e9ac2e48..c5dfcc8c 100644 --- a/projects/XCode/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj +++ b/projects/XCode/CatchSelfTest/CatchSelfTest.xcodeproj/project.pbxproj @@ -67,6 +67,8 @@ 263FD06117AF8DF200988A20 /* catch_timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = catch_timer.h; sourceTree = ""; }; 2656C21F1925E5100040DB02 /* catch_test_spec_parser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_test_spec_parser.hpp; sourceTree = ""; }; 2656C2201925E7330040DB02 /* catch_test_spec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_test_spec.cpp; path = ../../../SelfTest/SurrogateCpps/catch_test_spec.cpp; sourceTree = ""; }; + 2656C226192A77EF0040DB02 /* catch_suppress_warnings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_suppress_warnings.h; sourceTree = ""; }; + 2656C227192A78410040DB02 /* catch_reenable_warnings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_reenable_warnings.h; sourceTree = ""; }; 266B06B616F3A60A004ED264 /* VariadicMacrosTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VariadicMacrosTests.cpp; path = ../../../SelfTest/VariadicMacrosTests.cpp; sourceTree = ""; }; 266ECD73170F3C620030D735 /* BDDTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BDDTests.cpp; path = ../../../SelfTest/BDDTests.cpp; sourceTree = ""; }; 266ECD8C1713614B0030D735 /* catch_legacy_reporter_adapter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_legacy_reporter_adapter.hpp; sourceTree = ""; }; @@ -440,6 +442,8 @@ 262E739A1846759000CAC268 /* catch_common.hpp */, 261488FC184D1DC10041FBEB /* catch_stream.h */, 268F47B018A93F7800D8C14F /* catch_clara.h */, + 2656C226192A77EF0040DB02 /* catch_suppress_warnings.h */, + 2656C227192A78410040DB02 /* catch_reenable_warnings.h */, ); name = Infrastructure; sourceTree = "";