mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-26 07:16:10 +01:00
Sweep out some extra warnings
Swept: `-Wpadded` in some places (where it caused extra size, instead of just saying "hey, we padded struct at the end to align, just as standard says") `-Wweak-vtables` everywhere (Clang) `-Wexit-time-destructors` everywhere (Clang) `-Wmissing-noreturn` everywhere (Clang) The last three are enabled for Clang compilation going forward. Also enabled `-Wunreachable-code` for Clang and GCC
This commit is contained in:
parent
6105282c4f
commit
9aa96712ae
@ -85,16 +85,9 @@ CheckFileList(TEST_SOURCES ${SELF_TEST_DIR})
|
|||||||
set(SURROGATE_SOURCES
|
set(SURROGATE_SOURCES
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_console_colour.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_console_colour.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_debugger.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_debugger.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_capture.cpp
|
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_config.cpp
|
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_exception.cpp
|
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_registry_hub.cpp
|
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_reporter.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_reporter.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_runner.cpp
|
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_testcase.cpp
|
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_option.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_option.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_stream.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_stream.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_streambuf.cpp
|
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_test_case_tracker.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_test_case_tracker.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_test_spec.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_test_spec.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_xmlwriter.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_xmlwriter.cpp
|
||||||
@ -162,7 +155,7 @@ set(INTERNAL_HEADERS
|
|||||||
${HEADER_DIR}/internal/catch_random_number_generator.h
|
${HEADER_DIR}/internal/catch_random_number_generator.h
|
||||||
${HEADER_DIR}/internal/catch_reenable_warnings.h
|
${HEADER_DIR}/internal/catch_reenable_warnings.h
|
||||||
${HEADER_DIR}/internal/catch_reporter_registrars.hpp
|
${HEADER_DIR}/internal/catch_reporter_registrars.hpp
|
||||||
${HEADER_DIR}/internal/catch_reporter_registry.hpp
|
${HEADER_DIR}/internal/catch_reporter_registry.h
|
||||||
${HEADER_DIR}/internal/catch_result_type.h
|
${HEADER_DIR}/internal/catch_result_type.h
|
||||||
${HEADER_DIR}/internal/catch_run_context.h
|
${HEADER_DIR}/internal/catch_run_context.h
|
||||||
${HEADER_DIR}/internal/catch_benchmark.h
|
${HEADER_DIR}/internal/catch_benchmark.h
|
||||||
@ -210,6 +203,12 @@ set(IMPL_SOURCES
|
|||||||
${HEADER_DIR}/internal/catch_errno_guard.cpp
|
${HEADER_DIR}/internal/catch_errno_guard.cpp
|
||||||
${HEADER_DIR}/internal/catch_exception_translator_registry.cpp
|
${HEADER_DIR}/internal/catch_exception_translator_registry.cpp
|
||||||
${HEADER_DIR}/internal/catch_fatal_condition.cpp
|
${HEADER_DIR}/internal/catch_fatal_condition.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_interfaces_capture.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_interfaces_config.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_interfaces_exception.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_interfaces_registry_hub.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_interfaces_runner.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_interfaces_testcase.cpp
|
||||||
${HEADER_DIR}/internal/catch_list.cpp
|
${HEADER_DIR}/internal/catch_list.cpp
|
||||||
${HEADER_DIR}/internal/catch_leak_detector.cpp
|
${HEADER_DIR}/internal/catch_leak_detector.cpp
|
||||||
${HEADER_DIR}/internal/catch_matchers.cpp
|
${HEADER_DIR}/internal/catch_matchers.cpp
|
||||||
@ -218,6 +217,7 @@ set(IMPL_SOURCES
|
|||||||
${HEADER_DIR}/internal/catch_registry_hub.cpp
|
${HEADER_DIR}/internal/catch_registry_hub.cpp
|
||||||
${HEADER_DIR}/internal/catch_interfaces_reporter.cpp
|
${HEADER_DIR}/internal/catch_interfaces_reporter.cpp
|
||||||
${HEADER_DIR}/internal/catch_random_number_generator.cpp
|
${HEADER_DIR}/internal/catch_random_number_generator.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_reporter_registry.cpp
|
||||||
${HEADER_DIR}/internal/catch_result_type.cpp
|
${HEADER_DIR}/internal/catch_result_type.cpp
|
||||||
${HEADER_DIR}/internal/catch_run_context.cpp
|
${HEADER_DIR}/internal/catch_run_context.cpp
|
||||||
${HEADER_DIR}/internal/catch_section.cpp
|
${HEADER_DIR}/internal/catch_section.cpp
|
||||||
@ -225,6 +225,7 @@ set(IMPL_SOURCES
|
|||||||
${HEADER_DIR}/internal/catch_session.cpp
|
${HEADER_DIR}/internal/catch_session.cpp
|
||||||
${HEADER_DIR}/internal/catch_startup_exception_registry.cpp
|
${HEADER_DIR}/internal/catch_startup_exception_registry.cpp
|
||||||
${HEADER_DIR}/internal/catch_stream.cpp
|
${HEADER_DIR}/internal/catch_stream.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_streambuf.cpp
|
||||||
${HEADER_DIR}/internal/catch_stringref.cpp
|
${HEADER_DIR}/internal/catch_stringref.cpp
|
||||||
${HEADER_DIR}/internal/catch_string_manip.cpp
|
${HEADER_DIR}/internal/catch_string_manip.cpp
|
||||||
${HEADER_DIR}/internal/catch_tag_alias.cpp
|
${HEADER_DIR}/internal/catch_tag_alias.cpp
|
||||||
@ -298,8 +299,13 @@ if (NOT NO_SELFTEST)
|
|||||||
|
|
||||||
# Add desired warnings
|
# Add desired warnings
|
||||||
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang|GNU" )
|
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang|GNU" )
|
||||||
target_compile_options( SelfTest PRIVATE -Wall -Wextra )
|
target_compile_options( SelfTest PRIVATE -Wall -Wextra -Wunreachable-code )
|
||||||
target_compile_options( Benchmark PRIVATE -Wall -Wextra )
|
target_compile_options( Benchmark PRIVATE -Wall -Wextra -Wunreachable-code )
|
||||||
|
endif()
|
||||||
|
# Clang specific warning go here
|
||||||
|
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
||||||
|
# Actually keep these
|
||||||
|
target_compile_options( SelfTest PRIVATE -Wweak-vtables -Wexit-time-destructors -Wglobal-constructors -Wmissing-noreturn )
|
||||||
endif()
|
endif()
|
||||||
if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
|
if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
|
||||||
target_compile_options( SelfTest PRIVATE /W4 /w44265 /WX )
|
target_compile_options( SelfTest PRIVATE /W4 /w44265 /WX )
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
AssertionResultData::AssertionResultData(ResultWas::OfType _resultType, LazyExpression const & _lazyExpression):
|
AssertionResultData::AssertionResultData(ResultWas::OfType _resultType, LazyExpression const & _lazyExpression):
|
||||||
resultType(_resultType),
|
lazyExpression(_lazyExpression),
|
||||||
lazyExpression(_lazyExpression) {}
|
resultType(_resultType) {}
|
||||||
|
|
||||||
std::string AssertionResultData::reconstructExpression() const {
|
std::string AssertionResultData::reconstructExpression() const {
|
||||||
|
|
||||||
|
@ -23,13 +23,12 @@ namespace Catch {
|
|||||||
|
|
||||||
AssertionResultData( ResultWas::OfType _resultType, LazyExpression const& _lazyExpression );
|
AssertionResultData( ResultWas::OfType _resultType, LazyExpression const& _lazyExpression );
|
||||||
|
|
||||||
ResultWas::OfType resultType;
|
|
||||||
std::string message;
|
std::string message;
|
||||||
|
mutable std::string reconstructedExpression;
|
||||||
LazyExpression lazyExpression;
|
LazyExpression lazyExpression;
|
||||||
|
ResultWas::OfType resultType;
|
||||||
|
|
||||||
std::string reconstructExpression() const;
|
std::string reconstructExpression() const;
|
||||||
mutable std::string reconstructedExpression;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class AssertionResult {
|
class AssertionResult {
|
||||||
|
@ -16,9 +16,18 @@
|
|||||||
#endif
|
#endif
|
||||||
#define CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH-1
|
#define CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH-1
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic push
|
||||||
|
#pragma clang diagnostic ignored "-Wweak-vtables"
|
||||||
|
#pragma clang diagnostic ignored "-Wexit-time-destructors"
|
||||||
|
#pragma clang diagnostic ignored "-Wshadow"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../external/clara.hpp"
|
#include "../external/clara.hpp"
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
// Restore Clara's value for console width, if present
|
// Restore Clara's value for console width, if present
|
||||||
#ifdef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH
|
#ifdef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH
|
||||||
|
@ -46,4 +46,7 @@ namespace Catch {
|
|||||||
return std::string();
|
return std::string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NonCopyable::NonCopyable() = default;
|
||||||
|
NonCopyable::~NonCopyable() = default;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -36,8 +36,8 @@ namespace Catch {
|
|||||||
NonCopyable& operator = ( NonCopyable && ) = delete;
|
NonCopyable& operator = ( NonCopyable && ) = delete;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
NonCopyable() = default;
|
NonCopyable();
|
||||||
virtual ~NonCopyable() = default;
|
virtual ~NonCopyable();
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SourceLineInfo {
|
struct SourceLineInfo {
|
||||||
|
@ -35,11 +35,11 @@
|
|||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
|
|
||||||
|
# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
|
||||||
# define CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \
|
|
||||||
_Pragma( "clang diagnostic push" ) \
|
_Pragma( "clang diagnostic push" ) \
|
||||||
_Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" )
|
_Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \
|
||||||
# define CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS \
|
_Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"")
|
||||||
|
# define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \
|
||||||
_Pragma( "clang diagnostic pop" )
|
_Pragma( "clang diagnostic pop" )
|
||||||
|
|
||||||
# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \
|
# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \
|
||||||
@ -111,9 +111,9 @@
|
|||||||
# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS
|
# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS
|
||||||
# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS
|
# define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS
|
||||||
#endif
|
#endif
|
||||||
#if !defined(CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS)
|
#if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS)
|
||||||
# define CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS
|
# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
|
||||||
# define CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS
|
# define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,7 +62,6 @@ namespace Catch {
|
|||||||
|
|
||||||
|
|
||||||
class Config : public IConfig {
|
class Config : public IConfig {
|
||||||
virtual void dummy();
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Config() = default;
|
Config() = default;
|
||||||
|
@ -6,6 +6,13 @@
|
|||||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__clang__)
|
||||||
|
# pragma clang diagnostic push
|
||||||
|
# pragma clang diagnostic ignored "-Wexit-time-destructors"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "catch_console_colour.h"
|
#include "catch_console_colour.h"
|
||||||
#include "catch_enforce.h"
|
#include "catch_enforce.h"
|
||||||
#include "catch_errno_guard.h"
|
#include "catch_errno_guard.h"
|
||||||
@ -202,3 +209,8 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
|
#if defined(__clang__)
|
||||||
|
# pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@ namespace Catch {
|
|||||||
return m_config;
|
return m_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual ~Context() override;
|
||||||
|
|
||||||
public: // IMutableContext
|
public: // IMutableContext
|
||||||
virtual void setResultCapture( IResultCapture* resultCapture ) override {
|
virtual void setResultCapture( IResultCapture* resultCapture ) override {
|
||||||
m_resultCapture = resultCapture;
|
m_resultCapture = resultCapture;
|
||||||
@ -59,4 +61,7 @@ namespace Catch {
|
|||||||
delete currentContext;
|
delete currentContext;
|
||||||
currentContext = nullptr;
|
currentContext = nullptr;
|
||||||
}
|
}
|
||||||
|
IContext::~IContext() = default;
|
||||||
|
IMutableContext::~IMutableContext() = default;
|
||||||
|
Context::~Context() = default;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ namespace Catch {
|
|||||||
|
|
||||||
struct IContext
|
struct IContext
|
||||||
{
|
{
|
||||||
virtual ~IContext() = default;
|
virtual ~IContext();
|
||||||
|
|
||||||
virtual IResultCapture* getResultCapture() = 0;
|
virtual IResultCapture* getResultCapture() = 0;
|
||||||
virtual IRunner* getRunner() = 0;
|
virtual IRunner* getRunner() = 0;
|
||||||
@ -29,7 +29,7 @@ namespace Catch {
|
|||||||
|
|
||||||
struct IMutableContext : IContext
|
struct IMutableContext : IContext
|
||||||
{
|
{
|
||||||
virtual ~IMutableContext() = default;
|
virtual ~IMutableContext();
|
||||||
virtual void setResultCapture( IResultCapture* resultCapture ) = 0;
|
virtual void setResultCapture( IResultCapture* resultCapture ) = 0;
|
||||||
virtual void setRunner( IRunner* runner ) = 0;
|
virtual void setRunner( IRunner* runner ) = 0;
|
||||||
virtual void setConfig( IConfigPtr const& config ) = 0;
|
virtual void setConfig( IConfigPtr const& config ) = 0;
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
|
ITransientExpression::~ITransientExpression() = default;
|
||||||
|
|
||||||
void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs ) {
|
void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs ) {
|
||||||
if( lhs.size() + rhs.size() < 40 &&
|
if( lhs.size() + rhs.size() < 40 &&
|
||||||
lhs.find('\n') == std::string::npos &&
|
lhs.find('\n') == std::string::npos &&
|
||||||
|
@ -30,7 +30,7 @@ namespace Catch {
|
|||||||
|
|
||||||
// We don't actually need a virtual destructore, but many static analysers
|
// We don't actually need a virtual destructore, but many static analysers
|
||||||
// complain if it's not here :-(
|
// complain if it's not here :-(
|
||||||
virtual ~ITransientExpression() = default;
|
virtual ~ITransientExpression();
|
||||||
};
|
};
|
||||||
|
|
||||||
void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs );
|
void formatReconstructedExpression( std::ostream &os, std::string const& lhs, StringRef op, std::string const& rhs );
|
||||||
@ -79,24 +79,24 @@ namespace Catch {
|
|||||||
template<typename LhsT, typename RhsT>
|
template<typename LhsT, typename RhsT>
|
||||||
auto compareEqual( LhsT const& lhs, RhsT&& rhs ) -> bool { return lhs == rhs; };
|
auto compareEqual( LhsT const& lhs, RhsT&& rhs ) -> bool { return lhs == rhs; };
|
||||||
template<typename T>
|
template<typename T>
|
||||||
auto compareEqual( T* const& lhs, int rhs ) -> bool { return lhs == reinterpret_cast<void const*>( rhs ); };
|
auto compareEqual( T* const& lhs, int rhs ) -> bool { return lhs == reinterpret_cast<void const*>( rhs ); }
|
||||||
template<typename T>
|
template<typename T>
|
||||||
auto compareEqual( T* const& lhs, long rhs ) -> bool { return lhs == reinterpret_cast<void const*>( rhs ); };
|
auto compareEqual( T* const& lhs, long rhs ) -> bool { return lhs == reinterpret_cast<void const*>( rhs ); }
|
||||||
template<typename T>
|
template<typename T>
|
||||||
auto compareEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) == rhs; };
|
auto compareEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) == rhs; }
|
||||||
template<typename T>
|
template<typename T>
|
||||||
auto compareEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) == rhs; };
|
auto compareEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) == rhs; }
|
||||||
|
|
||||||
template<typename LhsT, typename RhsT>
|
template<typename LhsT, typename RhsT>
|
||||||
auto compareNotEqual( LhsT const& lhs, RhsT&& rhs ) -> bool { return lhs != rhs; };
|
auto compareNotEqual( LhsT const& lhs, RhsT&& rhs ) -> bool { return lhs != rhs; };
|
||||||
template<typename T>
|
template<typename T>
|
||||||
auto compareNotEqual( T* const& lhs, int rhs ) -> bool { return lhs != reinterpret_cast<void const*>( rhs ); };
|
auto compareNotEqual( T* const& lhs, int rhs ) -> bool { return lhs != reinterpret_cast<void const*>( rhs ); }
|
||||||
template<typename T>
|
template<typename T>
|
||||||
auto compareNotEqual( T* const& lhs, long rhs ) -> bool { return lhs != reinterpret_cast<void const*>( rhs ); };
|
auto compareNotEqual( T* const& lhs, long rhs ) -> bool { return lhs != reinterpret_cast<void const*>( rhs ); }
|
||||||
template<typename T>
|
template<typename T>
|
||||||
auto compareNotEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) != rhs; };
|
auto compareNotEqual( int lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) != rhs; }
|
||||||
template<typename T>
|
template<typename T>
|
||||||
auto compareNotEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) != rhs; };
|
auto compareNotEqual( long lhs, T* const& rhs ) -> bool { return reinterpret_cast<void const*>( lhs ) != rhs; }
|
||||||
|
|
||||||
|
|
||||||
template<typename LhsT>
|
template<typename LhsT>
|
||||||
@ -162,8 +162,4 @@ namespace Catch {
|
|||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_DECOMPOSER_H_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_DECOMPOSER_H_INCLUDED
|
||||||
|
@ -35,7 +35,7 @@ namespace Catch {
|
|||||||
// There is no 1-1 mapping between signals and windows exceptions.
|
// There is no 1-1 mapping between signals and windows exceptions.
|
||||||
// Windows can easily distinguish between SO and SigSegV,
|
// Windows can easily distinguish between SO and SigSegV,
|
||||||
// but SigInt, SigTerm, etc are handled differently.
|
// but SigInt, SigTerm, etc are handled differently.
|
||||||
SignalDefs signalDefs[] = {
|
static SignalDefs signalDefs[] = {
|
||||||
{ EXCEPTION_ILLEGAL_INSTRUCTION, "SIGILL - Illegal instruction signal" },
|
{ EXCEPTION_ILLEGAL_INSTRUCTION, "SIGILL - Illegal instruction signal" },
|
||||||
{ EXCEPTION_STACK_OVERFLOW, "SIGSEGV - Stack overflow" },
|
{ EXCEPTION_STACK_OVERFLOW, "SIGSEGV - Stack overflow" },
|
||||||
{ EXCEPTION_ACCESS_VIOLATION, "SIGSEGV - Segmentation violation signal" },
|
{ EXCEPTION_ACCESS_VIOLATION, "SIGSEGV - Segmentation violation signal" },
|
||||||
@ -107,7 +107,7 @@ namespace Catch {
|
|||||||
int id;
|
int id;
|
||||||
const char* name;
|
const char* name;
|
||||||
};
|
};
|
||||||
SignalDefs signalDefs[] = {
|
static SignalDefs signalDefs[] = {
|
||||||
{ SIGINT, "SIGINT - Terminal interrupt signal" },
|
{ SIGINT, "SIGINT - Terminal interrupt signal" },
|
||||||
{ SIGILL, "SIGILL - Illegal instruction signal" },
|
{ SIGILL, "SIGILL - Illegal instruction signal" },
|
||||||
{ SIGFPE, "SIGFPE - Floating point error signal" },
|
{ SIGFPE, "SIGFPE - Floating point error signal" },
|
||||||
|
@ -8,39 +8,22 @@
|
|||||||
#ifndef TWOBLUECUBES_CATCH_IMPL_HPP_INCLUDED
|
#ifndef TWOBLUECUBES_CATCH_IMPL_HPP_INCLUDED
|
||||||
#define TWOBLUECUBES_CATCH_IMPL_HPP_INCLUDED
|
#define TWOBLUECUBES_CATCH_IMPL_HPP_INCLUDED
|
||||||
|
|
||||||
// Collect all the implementation files together here
|
|
||||||
// These are the equivalent of what would usually be cpp files
|
|
||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
#pragma clang diagnostic push
|
#pragma clang diagnostic push
|
||||||
#pragma clang diagnostic ignored "-Wweak-vtables"
|
#pragma clang diagnostic ignored "-Wweak-vtables"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Keep these here for external reporters
|
||||||
#include "internal/catch_leak_detector.h"
|
|
||||||
|
|
||||||
#include "catch_test_spec.h"
|
#include "catch_test_spec.h"
|
||||||
#include "catch_test_case_tracker.h"
|
#include "catch_test_case_tracker.h"
|
||||||
|
|
||||||
|
#include "catch_leak_detector.h"
|
||||||
|
|
||||||
// Cpp files will be included in the single-header file here
|
// Cpp files will be included in the single-header file here
|
||||||
// ~*~* CATCH_CPP_STITCH_PLACE *~*~
|
// ~*~* CATCH_CPP_STITCH_PLACE *~*~
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
LeakDetector leakDetector;
|
LeakDetector leakDetector;
|
||||||
|
|
||||||
// These are all here to avoid warnings about not having any out of line
|
|
||||||
// virtual methods
|
|
||||||
IResultCapture::~IResultCapture() {}
|
|
||||||
ITestInvoker::~ITestInvoker() {}
|
|
||||||
ITestCaseRegistry::~ITestCaseRegistry() {}
|
|
||||||
IRegistryHub::~IRegistryHub() {}
|
|
||||||
IMutableRegistryHub::~IMutableRegistryHub() {}
|
|
||||||
IExceptionTranslator::~IExceptionTranslator() {}
|
|
||||||
IExceptionTranslatorRegistry::~IExceptionTranslatorRegistry() {}
|
|
||||||
IRunner::~IRunner() {}
|
|
||||||
IConfig::~IConfig() {}
|
|
||||||
|
|
||||||
void Config::dummy() {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
|
5
include/internal/catch_interfaces_capture.cpp
Normal file
5
include/internal/catch_interfaces_capture.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include "catch_interfaces_capture.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
IResultCapture::~IResultCapture() = default;
|
||||||
|
}
|
5
include/internal/catch_interfaces_config.cpp
Normal file
5
include/internal/catch_interfaces_config.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include "internal/catch_interfaces_config.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
IConfig::~IConfig() = default;
|
||||||
|
}
|
6
include/internal/catch_interfaces_exception.cpp
Normal file
6
include/internal/catch_interfaces_exception.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "internal/catch_interfaces_exception.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
IExceptionTranslator::~IExceptionTranslator() = default;
|
||||||
|
IExceptionTranslatorRegistry::~IExceptionTranslatorRegistry() = default;
|
||||||
|
}
|
6
include/internal/catch_interfaces_registry_hub.cpp
Normal file
6
include/internal/catch_interfaces_registry_hub.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "internal/catch_interfaces_registry_hub.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
IRegistryHub::~IRegistryHub() = default;
|
||||||
|
IMutableRegistryHub::~IMutableRegistryHub() = default;
|
||||||
|
}
|
@ -50,6 +50,8 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AssertionStats::~AssertionStats() = default;
|
||||||
|
|
||||||
SectionStats::SectionStats( SectionInfo const& _sectionInfo,
|
SectionStats::SectionStats( SectionInfo const& _sectionInfo,
|
||||||
Counts const& _assertions,
|
Counts const& _assertions,
|
||||||
double _durationInSeconds,
|
double _durationInSeconds,
|
||||||
@ -60,6 +62,8 @@ namespace Catch {
|
|||||||
missingAssertions( _missingAssertions )
|
missingAssertions( _missingAssertions )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
SectionStats::~SectionStats() = default;
|
||||||
|
|
||||||
|
|
||||||
TestCaseStats::TestCaseStats( TestCaseInfo const& _testInfo,
|
TestCaseStats::TestCaseStats( TestCaseInfo const& _testInfo,
|
||||||
Totals const& _totals,
|
Totals const& _totals,
|
||||||
@ -73,6 +77,8 @@ namespace Catch {
|
|||||||
aborting( _aborting )
|
aborting( _aborting )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
TestCaseStats::~TestCaseStats() = default;
|
||||||
|
|
||||||
|
|
||||||
TestGroupStats::TestGroupStats( GroupInfo const& _groupInfo,
|
TestGroupStats::TestGroupStats( GroupInfo const& _groupInfo,
|
||||||
Totals const& _totals,
|
Totals const& _totals,
|
||||||
@ -87,6 +93,8 @@ namespace Catch {
|
|||||||
aborting( false )
|
aborting( false )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
TestGroupStats::~TestGroupStats() = default;
|
||||||
|
|
||||||
TestRunStats::TestRunStats( TestRunInfo const& _runInfo,
|
TestRunStats::TestRunStats( TestRunInfo const& _runInfo,
|
||||||
Totals const& _totals,
|
Totals const& _totals,
|
||||||
bool _aborting )
|
bool _aborting )
|
||||||
@ -95,9 +103,14 @@ namespace Catch {
|
|||||||
aborting( _aborting )
|
aborting( _aborting )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
TestRunStats::~TestRunStats() = default;
|
||||||
|
|
||||||
|
|
||||||
bool IStreamingReporter::isMulti() const { return false; }
|
bool IStreamingReporter::isMulti() const { return false; }
|
||||||
|
|
||||||
|
IReporterFactory::~IReporterFactory() = default;
|
||||||
|
IReporterRegistry::~IReporterRegistry() = default;
|
||||||
|
|
||||||
void addReporter( IStreamingReporterPtr& existingReporter, IStreamingReporterPtr&& additionalReporter ) {
|
void addReporter( IStreamingReporterPtr& existingReporter, IStreamingReporterPtr&& additionalReporter ) {
|
||||||
|
|
||||||
if( !existingReporter ) {
|
if( !existingReporter ) {
|
||||||
|
@ -80,7 +80,7 @@ namespace Catch {
|
|||||||
AssertionStats( AssertionStats && ) = default;
|
AssertionStats( AssertionStats && ) = default;
|
||||||
AssertionStats& operator = ( AssertionStats const& ) = default;
|
AssertionStats& operator = ( AssertionStats const& ) = default;
|
||||||
AssertionStats& operator = ( AssertionStats && ) = default;
|
AssertionStats& operator = ( AssertionStats && ) = default;
|
||||||
virtual ~AssertionStats() = default;
|
virtual ~AssertionStats();
|
||||||
|
|
||||||
AssertionResult assertionResult;
|
AssertionResult assertionResult;
|
||||||
std::vector<MessageInfo> infoMessages;
|
std::vector<MessageInfo> infoMessages;
|
||||||
@ -96,7 +96,7 @@ namespace Catch {
|
|||||||
SectionStats( SectionStats && ) = default;
|
SectionStats( SectionStats && ) = default;
|
||||||
SectionStats& operator = ( SectionStats const& ) = default;
|
SectionStats& operator = ( SectionStats const& ) = default;
|
||||||
SectionStats& operator = ( SectionStats && ) = default;
|
SectionStats& operator = ( SectionStats && ) = default;
|
||||||
virtual ~SectionStats() = default;
|
virtual ~SectionStats();
|
||||||
|
|
||||||
SectionInfo sectionInfo;
|
SectionInfo sectionInfo;
|
||||||
Counts assertions;
|
Counts assertions;
|
||||||
@ -115,7 +115,7 @@ namespace Catch {
|
|||||||
TestCaseStats( TestCaseStats && ) = default;
|
TestCaseStats( TestCaseStats && ) = default;
|
||||||
TestCaseStats& operator = ( TestCaseStats const& ) = default;
|
TestCaseStats& operator = ( TestCaseStats const& ) = default;
|
||||||
TestCaseStats& operator = ( TestCaseStats && ) = default;
|
TestCaseStats& operator = ( TestCaseStats && ) = default;
|
||||||
virtual ~TestCaseStats() = default;
|
virtual ~TestCaseStats();
|
||||||
|
|
||||||
TestCaseInfo testInfo;
|
TestCaseInfo testInfo;
|
||||||
Totals totals;
|
Totals totals;
|
||||||
@ -134,7 +134,7 @@ namespace Catch {
|
|||||||
TestGroupStats( TestGroupStats && ) = default;
|
TestGroupStats( TestGroupStats && ) = default;
|
||||||
TestGroupStats& operator = ( TestGroupStats const& ) = default;
|
TestGroupStats& operator = ( TestGroupStats const& ) = default;
|
||||||
TestGroupStats& operator = ( TestGroupStats && ) = default;
|
TestGroupStats& operator = ( TestGroupStats && ) = default;
|
||||||
virtual ~TestGroupStats() = default;
|
virtual ~TestGroupStats();
|
||||||
|
|
||||||
GroupInfo groupInfo;
|
GroupInfo groupInfo;
|
||||||
Totals totals;
|
Totals totals;
|
||||||
@ -150,7 +150,7 @@ namespace Catch {
|
|||||||
TestRunStats( TestRunStats && ) = default;
|
TestRunStats( TestRunStats && ) = default;
|
||||||
TestRunStats& operator = ( TestRunStats const& ) = default;
|
TestRunStats& operator = ( TestRunStats const& ) = default;
|
||||||
TestRunStats& operator = ( TestRunStats && ) = default;
|
TestRunStats& operator = ( TestRunStats && ) = default;
|
||||||
virtual ~TestRunStats() = default;
|
virtual ~TestRunStats();
|
||||||
|
|
||||||
TestRunInfo runInfo;
|
TestRunInfo runInfo;
|
||||||
Totals totals;
|
Totals totals;
|
||||||
@ -206,7 +206,7 @@ namespace Catch {
|
|||||||
using IStreamingReporterPtr = std::unique_ptr<IStreamingReporter>;
|
using IStreamingReporterPtr = std::unique_ptr<IStreamingReporter>;
|
||||||
|
|
||||||
struct IReporterFactory {
|
struct IReporterFactory {
|
||||||
virtual ~IReporterFactory() = default;
|
virtual ~IReporterFactory();
|
||||||
virtual IStreamingReporterPtr create( ReporterConfig const& config ) const = 0;
|
virtual IStreamingReporterPtr create( ReporterConfig const& config ) const = 0;
|
||||||
virtual std::string getDescription() const = 0;
|
virtual std::string getDescription() const = 0;
|
||||||
};
|
};
|
||||||
@ -216,7 +216,7 @@ namespace Catch {
|
|||||||
using FactoryMap = std::map<std::string, IReporterFactoryPtr>;
|
using FactoryMap = std::map<std::string, IReporterFactoryPtr>;
|
||||||
using Listeners = std::vector<IReporterFactoryPtr>;
|
using Listeners = std::vector<IReporterFactoryPtr>;
|
||||||
|
|
||||||
virtual ~IReporterRegistry() = default;
|
virtual ~IReporterRegistry();
|
||||||
virtual IStreamingReporterPtr create( std::string const& name, IConfigPtr const& config ) const = 0;
|
virtual IStreamingReporterPtr create( std::string const& name, IConfigPtr const& config ) const = 0;
|
||||||
virtual FactoryMap const& getFactories() const = 0;
|
virtual FactoryMap const& getFactories() const = 0;
|
||||||
virtual Listeners const& getListeners() const = 0;
|
virtual Listeners const& getListeners() const = 0;
|
||||||
|
5
include/internal/catch_interfaces_runner.cpp
Normal file
5
include/internal/catch_interfaces_runner.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include "internal/catch_interfaces_runner.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
IRunner::~IRunner() = default;
|
||||||
|
}
|
6
include/internal/catch_interfaces_testcase.cpp
Normal file
6
include/internal/catch_interfaces_testcase.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "internal/catch_interfaces_testcase.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
ITestInvoker::~ITestInvoker() = default;
|
||||||
|
ITestCaseRegistry::~ITestCaseRegistry() = default;
|
||||||
|
}
|
@ -17,6 +17,8 @@ namespace Matchers {
|
|||||||
return m_cachedToString;
|
return m_cachedToString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MatcherUntypedBase::~MatcherUntypedBase() = default;
|
||||||
|
|
||||||
} // namespace Impl
|
} // namespace Impl
|
||||||
} // namespace Matchers
|
} // namespace Matchers
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ namespace Matchers {
|
|||||||
std::string toString() const;
|
std::string toString() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual ~MatcherUntypedBase() = default;
|
virtual ~MatcherUntypedBase();
|
||||||
virtual std::string describe() const = 0;
|
virtual std::string describe() const = 0;
|
||||||
mutable std::string m_cachedToString;
|
mutable std::string m_cachedToString;
|
||||||
};
|
};
|
||||||
|
@ -21,9 +21,9 @@ namespace Catch {
|
|||||||
ResultWas::OfType _type );
|
ResultWas::OfType _type );
|
||||||
|
|
||||||
std::string macroName;
|
std::string macroName;
|
||||||
|
std::string message;
|
||||||
SourceLineInfo lineInfo;
|
SourceLineInfo lineInfo;
|
||||||
ResultWas::OfType type;
|
ResultWas::OfType type;
|
||||||
std::string message;
|
|
||||||
unsigned int sequence;
|
unsigned int sequence;
|
||||||
|
|
||||||
bool operator == ( MessageInfo const& other ) const;
|
bool operator == ( MessageInfo const& other ) const;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include "catch_context.h"
|
#include "catch_context.h"
|
||||||
#include "catch_test_case_registry_impl.h"
|
#include "catch_test_case_registry_impl.h"
|
||||||
#include "catch_reporter_registry.hpp"
|
#include "catch_reporter_registry.h"
|
||||||
#include "catch_exception_translator_registry.h"
|
#include "catch_exception_translator_registry.h"
|
||||||
#include "catch_tag_alias_registry.h"
|
#include "catch_tag_alias_registry.h"
|
||||||
#include "catch_startup_exception_registry.h"
|
#include "catch_startup_exception_registry.h"
|
||||||
@ -23,8 +23,7 @@ namespace Catch {
|
|||||||
private NonCopyable {
|
private NonCopyable {
|
||||||
|
|
||||||
public: // IRegistryHub
|
public: // IRegistryHub
|
||||||
RegistryHub() {
|
RegistryHub() = default;
|
||||||
}
|
|
||||||
IReporterRegistry const& getReporterRegistry() const override {
|
IReporterRegistry const& getReporterRegistry() const override {
|
||||||
return m_reporterRegistry;
|
return m_reporterRegistry;
|
||||||
}
|
}
|
||||||
|
@ -58,11 +58,14 @@ namespace Catch {
|
|||||||
#if !defined(CATCH_CONFIG_DISABLE)
|
#if !defined(CATCH_CONFIG_DISABLE)
|
||||||
|
|
||||||
#define CATCH_REGISTER_REPORTER( name, reporterType ) \
|
#define CATCH_REGISTER_REPORTER( name, reporterType ) \
|
||||||
namespace{ Catch::ReporterRegistrar<reporterType> catch_internal_RegistrarFor##reporterType( name ); }
|
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
|
||||||
|
namespace{ Catch::ReporterRegistrar<reporterType> catch_internal_RegistrarFor##reporterType( name ); } \
|
||||||
|
CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
|
||||||
|
|
||||||
#define CATCH_REGISTER_LISTENER( listenerType ) \
|
#define CATCH_REGISTER_LISTENER( listenerType ) \
|
||||||
namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; }
|
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
|
||||||
|
namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; } \
|
||||||
|
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
|
||||||
#else // CATCH_CONFIG_DISABLE
|
#else // CATCH_CONFIG_DISABLE
|
||||||
|
|
||||||
#define CATCH_REGISTER_REPORTER(name, reporterType)
|
#define CATCH_REGISTER_REPORTER(name, reporterType)
|
||||||
|
34
include/internal/catch_reporter_registry.cpp
Normal file
34
include/internal/catch_reporter_registry.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Created by Martin on 31/08/2017.
|
||||||
|
*
|
||||||
|
* 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)
|
||||||
|
*/
|
||||||
|
#include "catch_reporter_registry.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
ReporterRegistry::~ReporterRegistry() = default;
|
||||||
|
|
||||||
|
IStreamingReporterPtr ReporterRegistry::create( std::string const& name, IConfigPtr const& config ) const {
|
||||||
|
auto it = m_factories.find( name );
|
||||||
|
if( it == m_factories.end() )
|
||||||
|
return nullptr;
|
||||||
|
return it->second->create( ReporterConfig( config ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReporterRegistry::registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) {
|
||||||
|
m_factories.emplace(name, factory);
|
||||||
|
}
|
||||||
|
void ReporterRegistry::registerListener( IReporterFactoryPtr const& factory ) {
|
||||||
|
m_listeners.push_back( factory );
|
||||||
|
}
|
||||||
|
|
||||||
|
IReporterRegistry::FactoryMap const& ReporterRegistry::getFactories() const {
|
||||||
|
return m_factories;
|
||||||
|
}
|
||||||
|
IReporterRegistry::Listeners const& ReporterRegistry::getListeners() const {
|
||||||
|
return m_listeners;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
37
include/internal/catch_reporter_registry.h
Normal file
37
include/internal/catch_reporter_registry.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Created by Phil on 29/10/2010.
|
||||||
|
* Copyright 2010 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_REPORTER_REGISTRY_H_INCLUDED
|
||||||
|
#define TWOBLUECUBES_CATCH_REPORTER_REGISTRY_H_INCLUDED
|
||||||
|
|
||||||
|
#include "catch_interfaces_reporter.h"
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
class ReporterRegistry : public IReporterRegistry {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
~ReporterRegistry() override;
|
||||||
|
|
||||||
|
IStreamingReporterPtr create( std::string const& name, IConfigPtr const& config ) const override;
|
||||||
|
|
||||||
|
void registerReporter( std::string const& name, IReporterFactoryPtr const& factory );
|
||||||
|
void registerListener( IReporterFactoryPtr const& factory );
|
||||||
|
|
||||||
|
FactoryMap const& getFactories() const override;
|
||||||
|
Listeners const& getListeners() const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FactoryMap m_factories;
|
||||||
|
Listeners m_listeners;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // TWOBLUECUBES_CATCH_REPORTER_REGISTRY_H_INCLUDED
|
@ -1,50 +0,0 @@
|
|||||||
/*
|
|
||||||
* Created by Phil on 29/10/2010.
|
|
||||||
* Copyright 2010 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_REPORTER_REGISTRY_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_REPORTER_REGISTRY_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_interfaces_reporter.h"
|
|
||||||
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
namespace Catch {
|
|
||||||
|
|
||||||
class ReporterRegistry : public IReporterRegistry {
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
~ReporterRegistry() override {}
|
|
||||||
|
|
||||||
IStreamingReporterPtr create( std::string const& name, IConfigPtr const& config ) const override {
|
|
||||||
auto it = m_factories.find( name );
|
|
||||||
if( it == m_factories.end() )
|
|
||||||
return nullptr;
|
|
||||||
return it->second->create( ReporterConfig( config ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
void registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) {
|
|
||||||
m_factories.emplace(name, factory);
|
|
||||||
}
|
|
||||||
void registerListener( IReporterFactoryPtr const& factory ) {
|
|
||||||
m_listeners.push_back( factory );
|
|
||||||
}
|
|
||||||
|
|
||||||
FactoryMap const& getFactories() const override {
|
|
||||||
return m_factories;
|
|
||||||
}
|
|
||||||
Listeners const& getListeners() const override {
|
|
||||||
return m_listeners;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
FactoryMap m_factories;
|
|
||||||
Listeners m_listeners;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_REPORTER_REGISTRY_HPP_INCLUDED
|
|
@ -57,6 +57,8 @@ namespace Catch {
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
Catch::IStream::~IStream() = default;
|
||||||
|
|
||||||
FileStream::FileStream( std::string const& filename ) {
|
FileStream::FileStream( std::string const& filename ) {
|
||||||
m_ofs.open( filename.c_str() );
|
m_ofs.open( filename.c_str() );
|
||||||
CATCH_ENFORCE( !m_ofs.fail(), "Unable to open file: '" << filename << "'" );
|
CATCH_ENFORCE( !m_ofs.fail(), "Unable to open file: '" << filename << "'" );
|
||||||
|
@ -24,7 +24,7 @@ namespace Catch {
|
|||||||
|
|
||||||
|
|
||||||
struct IStream {
|
struct IStream {
|
||||||
virtual ~IStream() = default;
|
virtual ~IStream();
|
||||||
virtual std::ostream& stream() const = 0;
|
virtual std::ostream& stream() const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
12
include/internal/catch_streambuf.cpp
Normal file
12
include/internal/catch_streambuf.cpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* Created by Martin on 31/08/2017.
|
||||||
|
*
|
||||||
|
* 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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "catch_streambuf.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
StreamBufBase::~StreamBufBase() = default;
|
||||||
|
}
|
@ -8,15 +8,13 @@
|
|||||||
#ifndef TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED
|
#ifndef TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED
|
||||||
#define TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED
|
#define TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED
|
||||||
|
|
||||||
#include "catch_compiler_capabilities.h"
|
|
||||||
|
|
||||||
#include <streambuf>
|
#include <streambuf>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
class StreamBufBase : public std::streambuf {
|
class StreamBufBase : public std::streambuf {
|
||||||
public:
|
public:
|
||||||
virtual ~StreamBufBase() = default;
|
virtual ~StreamBufBase();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,12 +5,20 @@
|
|||||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__clang__)
|
||||||
|
# pragma clang diagnostic push
|
||||||
|
# pragma clang diagnostic ignored "-Wexit-time-destructors"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "catch_stringref.h"
|
#include "catch_stringref.h"
|
||||||
|
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
auto getEmptyStringRef() -> StringRef {
|
auto getEmptyStringRef() -> StringRef {
|
||||||
@ -160,3 +168,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Catch
|
} // namespace Catch
|
||||||
|
|
||||||
|
#if defined(__clang__)
|
||||||
|
# pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
@ -14,7 +14,10 @@
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS
|
#if defined(__clang__)
|
||||||
|
# pragma clang diagnostic push
|
||||||
|
# pragma clang diagnostic ignored "-Wexit-time-destructors"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
namespace TestCaseTracking {
|
namespace TestCaseTracking {
|
||||||
@ -25,6 +28,8 @@ namespace TestCaseTracking {
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
ITracker::~ITracker() = default;
|
||||||
|
|
||||||
|
|
||||||
TrackerContext& TrackerContext::instance() {
|
TrackerContext& TrackerContext::instance() {
|
||||||
static TrackerContext s_instance;
|
static TrackerContext s_instance;
|
||||||
@ -276,4 +281,6 @@ using TestCaseTracking::IndexTracker;
|
|||||||
|
|
||||||
} // namespace Catch
|
} // namespace Catch
|
||||||
|
|
||||||
CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS
|
#if defined(__clang__)
|
||||||
|
# pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS
|
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
namespace TestCaseTracking {
|
namespace TestCaseTracking {
|
||||||
|
|
||||||
@ -32,7 +30,7 @@ namespace TestCaseTracking {
|
|||||||
using ITrackerPtr = std::shared_ptr<ITracker>;
|
using ITrackerPtr = std::shared_ptr<ITracker>;
|
||||||
|
|
||||||
struct ITracker {
|
struct ITracker {
|
||||||
virtual ~ITracker() = default;
|
virtual ~ITracker();
|
||||||
|
|
||||||
// static queries
|
// static queries
|
||||||
virtual NameAndLocation const& nameAndLocation() const = 0;
|
virtual NameAndLocation const& nameAndLocation() const = 0;
|
||||||
@ -182,6 +180,4 @@ using TestCaseTracking::IndexTracker;
|
|||||||
|
|
||||||
} // namespace Catch
|
} // namespace Catch
|
||||||
|
|
||||||
CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS
|
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_TEST_CASE_TRACKER_HPP_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_TEST_CASE_TRACKER_HPP_INCLUDED
|
||||||
|
@ -32,4 +32,6 @@ namespace Catch {
|
|||||||
getMutableRegistryHub().registerStartupException();
|
getMutableRegistryHub().registerStartupException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AutoReg::~AutoReg() = default;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ struct NameAndTags {
|
|||||||
|
|
||||||
struct AutoReg : NonCopyable {
|
struct AutoReg : NonCopyable {
|
||||||
AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef classOrMethod, NameAndTags const& nameAndTags ) noexcept;
|
AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef classOrMethod, NameAndTags const& nameAndTags ) noexcept;
|
||||||
~AutoReg() = default;
|
~AutoReg();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
@ -63,38 +63,38 @@ struct AutoReg : NonCopyable {
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \
|
#define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \
|
||||||
static void TestName(); \
|
static void TestName(); \
|
||||||
CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \
|
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
|
||||||
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &TestName ), CATCH_INTERNAL_LINEINFO, "", Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \
|
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &TestName ), CATCH_INTERNAL_LINEINFO, "", Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \
|
||||||
CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS \
|
CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \
|
||||||
static void TestName()
|
static void TestName()
|
||||||
#define INTERNAL_CATCH_TESTCASE( ... ) \
|
#define INTERNAL_CATCH_TESTCASE( ... ) \
|
||||||
INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__ )
|
INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__ )
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \
|
#define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \
|
||||||
CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \
|
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
|
||||||
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &QualifiedMethod ), CATCH_INTERNAL_LINEINFO, "&" #QualifiedMethod, Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \
|
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &QualifiedMethod ), CATCH_INTERNAL_LINEINFO, "&" #QualifiedMethod, Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \
|
||||||
CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS
|
CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\
|
#define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\
|
||||||
CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \
|
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
|
||||||
namespace{ \
|
namespace{ \
|
||||||
struct TestName : ClassName{ \
|
struct TestName : ClassName{ \
|
||||||
void test(); \
|
void test(); \
|
||||||
}; \
|
}; \
|
||||||
Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( Catch::makeTestInvoker( &TestName::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \
|
Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( Catch::makeTestInvoker( &TestName::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \
|
||||||
} \
|
} \
|
||||||
CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS \
|
CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \
|
||||||
void TestName::test()
|
void TestName::test()
|
||||||
#define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \
|
#define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \
|
||||||
INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, __VA_ARGS__ )
|
INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, __VA_ARGS__ )
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \
|
#define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \
|
||||||
CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS \
|
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
|
||||||
Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( Function ), CATCH_INTERNAL_LINEINFO, "", Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \
|
Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( Function ), CATCH_INTERNAL_LINEINFO, "", Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \
|
||||||
CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS
|
CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
|
||||||
|
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_TEST_REGISTRY_HPP_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_TEST_REGISTRY_HPP_INCLUDED
|
||||||
|
@ -15,6 +15,11 @@
|
|||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
|
TestSpec::Pattern::~Pattern() = default;
|
||||||
|
TestSpec::NamePattern::~NamePattern() = default;
|
||||||
|
TestSpec::TagPattern::~TagPattern() = default;
|
||||||
|
TestSpec::ExcludedPattern::~ExcludedPattern() = default;
|
||||||
|
|
||||||
TestSpec::NamePattern::NamePattern( std::string const& name )
|
TestSpec::NamePattern::NamePattern( std::string const& name )
|
||||||
: m_wildcardPattern( toLower( name ), CaseSensitive::No )
|
: m_wildcardPattern( toLower( name ), CaseSensitive::No )
|
||||||
{}
|
{}
|
||||||
|
@ -24,7 +24,7 @@ namespace Catch {
|
|||||||
|
|
||||||
class TestSpec {
|
class TestSpec {
|
||||||
struct Pattern {
|
struct Pattern {
|
||||||
virtual ~Pattern() = default;
|
virtual ~Pattern();
|
||||||
virtual bool matches( TestCaseInfo const& testCase ) const = 0;
|
virtual bool matches( TestCaseInfo const& testCase ) const = 0;
|
||||||
};
|
};
|
||||||
using PatternPtr = std::shared_ptr<Pattern>;
|
using PatternPtr = std::shared_ptr<Pattern>;
|
||||||
@ -32,7 +32,7 @@ namespace Catch {
|
|||||||
class NamePattern : public Pattern {
|
class NamePattern : public Pattern {
|
||||||
public:
|
public:
|
||||||
NamePattern( std::string const& name );
|
NamePattern( std::string const& name );
|
||||||
virtual ~NamePattern() = default;
|
virtual ~NamePattern();
|
||||||
virtual bool matches( TestCaseInfo const& testCase ) const override;
|
virtual bool matches( TestCaseInfo const& testCase ) const override;
|
||||||
private:
|
private:
|
||||||
WildcardPattern m_wildcardPattern;
|
WildcardPattern m_wildcardPattern;
|
||||||
@ -41,7 +41,7 @@ namespace Catch {
|
|||||||
class TagPattern : public Pattern {
|
class TagPattern : public Pattern {
|
||||||
public:
|
public:
|
||||||
TagPattern( std::string const& tag );
|
TagPattern( std::string const& tag );
|
||||||
virtual ~TagPattern() = default;
|
virtual ~TagPattern();
|
||||||
virtual bool matches( TestCaseInfo const& testCase ) const override;
|
virtual bool matches( TestCaseInfo const& testCase ) const override;
|
||||||
private:
|
private:
|
||||||
std::string m_tag;
|
std::string m_tag;
|
||||||
@ -50,7 +50,7 @@ namespace Catch {
|
|||||||
class ExcludedPattern : public Pattern {
|
class ExcludedPattern : public Pattern {
|
||||||
public:
|
public:
|
||||||
ExcludedPattern( PatternPtr const& underlyingPattern );
|
ExcludedPattern( PatternPtr const& underlyingPattern );
|
||||||
virtual ~ExcludedPattern() = default;
|
virtual ~ExcludedPattern();
|
||||||
virtual bool matches( TestCaseInfo const& testCase ) const override;
|
virtual bool matches( TestCaseInfo const& testCase ) const override;
|
||||||
private:
|
private:
|
||||||
PatternPtr m_underlyingPattern;
|
PatternPtr m_underlyingPattern;
|
||||||
|
@ -6,6 +6,13 @@
|
|||||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(__clang__)
|
||||||
|
# pragma clang diagnostic push
|
||||||
|
# pragma clang diagnostic ignored "-Wexit-time-destructors"
|
||||||
|
# pragma clang diagnostic ignored "-Wglobal-constructors"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "catch_tostring.h"
|
#include "catch_tostring.h"
|
||||||
#include "catch_interfaces_config.h"
|
#include "catch_interfaces_config.h"
|
||||||
#include "catch_context.h"
|
#include "catch_context.h"
|
||||||
@ -211,3 +218,8 @@ std::string StringMaker<double>::convert(double value) {
|
|||||||
|
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
|
#if defined(__clang__)
|
||||||
|
# pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -22,9 +22,10 @@
|
|||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
#pragma warning(disable:4180) // qualifier applied to function type has no meaning
|
#pragma warning(disable:4180) // We attempt to stream a function (address) by const&, which MSVC complains about but is harmless
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// We need a dummy global operator<< so we can bring it into Catch namespace later
|
// We need a dummy global operator<< so we can bring it into Catch namespace later
|
||||||
struct Catch_global_namespace_dummy;
|
struct Catch_global_namespace_dummy;
|
||||||
std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy);
|
std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy);
|
||||||
|
@ -64,13 +64,13 @@ namespace Catch {
|
|||||||
public:
|
public:
|
||||||
AssertionPrinter& operator= ( AssertionPrinter const& ) = delete;
|
AssertionPrinter& operator= ( AssertionPrinter const& ) = delete;
|
||||||
AssertionPrinter( AssertionPrinter const& ) = delete;
|
AssertionPrinter( AssertionPrinter const& ) = delete;
|
||||||
AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, size_t counter )
|
AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, size_t _counter )
|
||||||
: stream( _stream )
|
: stream( _stream )
|
||||||
, result( _stats.assertionResult )
|
, result( _stats.assertionResult )
|
||||||
, messages( _stats.infoMessages )
|
, messages( _stats.infoMessages )
|
||||||
, itMessage( _stats.infoMessages.begin() )
|
, itMessage( _stats.infoMessages.begin() )
|
||||||
, printInfoMessages( true )
|
, printInfoMessages( true )
|
||||||
, counter(counter)
|
, counter(_counter)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void print() {
|
void print() {
|
||||||
|
@ -1003,6 +1003,6 @@ with expansion:
|
|||||||
"{?}" == "1"
|
"{?}" == "1"
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 177 | 126 passed | 47 failed | 4 failed as expected
|
test cases: 176 | 125 passed | 47 failed | 4 failed as expected
|
||||||
assertions: 878 | 761 passed | 96 failed | 21 failed as expected
|
assertions: 878 | 761 passed | 96 failed | 21 failed as expected
|
||||||
|
|
||||||
|
@ -7434,6 +7434,6 @@ MiscTests.cpp:<line number>:
|
|||||||
PASSED:
|
PASSED:
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 177 | 124 passed | 49 failed | 4 failed as expected
|
test cases: 176 | 123 passed | 49 failed | 4 failed as expected
|
||||||
assertions: 877 | 757 passed | 99 failed | 21 failed as expected
|
assertions: 877 | 757 passed | 99 failed | 21 failed as expected
|
||||||
|
|
||||||
|
@ -6946,9 +6946,6 @@ Message from section two
|
|||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="assertions with commas are allowed" filename="projects/<exe-name>/TrickyTests.cpp" >
|
|
||||||
<OverallResult success="true"/>
|
|
||||||
</TestCase>
|
|
||||||
<TestCase name="atomic if" tags="[0][failing]" filename="projects/<exe-name>/MiscTests.cpp" >
|
<TestCase name="atomic if" tags="[0][failing]" filename="projects/<exe-name>/MiscTests.cpp" >
|
||||||
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/MiscTests.cpp" >
|
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/MiscTests.cpp" >
|
||||||
<Original>
|
<Original>
|
||||||
|
@ -6,7 +6,9 @@
|
|||||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
|
# pragma clang diagnostic push
|
||||||
# pragma clang diagnostic ignored "-Wpadded"
|
# pragma clang diagnostic ignored "-Wpadded"
|
||||||
|
# pragma clang diagnostic ignored "-Wdouble-promotion"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
@ -161,6 +163,11 @@ TEST_CASE( "Ordering comparison checks that should fail", "[.][failing]" )
|
|||||||
CHECK( data.str_hello <= "a" );
|
CHECK( data.str_hello <= "a" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
# pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// Comparisons with int literals
|
// Comparisons with int literals
|
||||||
TEST_CASE( "Comparisons with int literals don't warn when mixing signed/ unsigned" )
|
TEST_CASE( "Comparisons with int literals don't warn when mixing signed/ unsigned" )
|
||||||
{
|
{
|
||||||
|
@ -14,6 +14,10 @@
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4702) // Unreachable code -- MSVC 19 (VS 2015) sees right through the indirection
|
#pragma warning(disable:4702) // Unreachable code -- MSVC 19 (VS 2015) sees right through the indirection
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic push
|
||||||
|
#pragma clang diagnostic ignored "-Wweak-vtables"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@ -219,3 +223,7 @@ TEST_CASE( "#748 - captures with unexpected exceptions", "[.][failing][!throws][
|
|||||||
REQUIRE_THROWS( thisThrows() );
|
REQUIRE_THROWS( thisThrows() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
@ -8,6 +8,12 @@
|
|||||||
|
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic push
|
||||||
|
#pragma clang diagnostic ignored "-Wweak-vtables"
|
||||||
|
#pragma clang diagnostic ignored "-Wpadded"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef CATCH_CONFIG_DISABLE_MATCHERS
|
#ifndef CATCH_CONFIG_DISABLE_MATCHERS
|
||||||
|
|
||||||
inline const char* testStringForMatching()
|
inline const char* testStringForMatching()
|
||||||
@ -166,16 +172,18 @@ TEST_CASE( "Vector matchers that fail", "[matchers][vector][.][failing]" ) {
|
|||||||
#include <exception>
|
#include <exception>
|
||||||
|
|
||||||
struct SpecialException : std::exception {
|
struct SpecialException : std::exception {
|
||||||
SpecialException(int i):i(i) {}
|
SpecialException(int i_):i(i_) {}
|
||||||
int i;
|
int i;
|
||||||
};
|
};
|
||||||
|
|
||||||
void doesNotThrow() {}
|
void doesNotThrow() {}
|
||||||
|
|
||||||
|
[[noreturn]]
|
||||||
void throws(int i) {
|
void throws(int i) {
|
||||||
throw SpecialException{ i };
|
throw SpecialException{ i };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[noreturn]]
|
||||||
void throwsAsInt(int i) {
|
void throwsAsInt(int i) {
|
||||||
throw i;
|
throw i;
|
||||||
}
|
}
|
||||||
@ -217,3 +225,7 @@ TEST_CASE("Exception matchers that fail", "[matchers][exceptions][!throws][.fail
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif // CATCH_CONFIG_DISABLE_MATCHERS
|
#endif // CATCH_CONFIG_DISABLE_MATCHERS
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
#endif
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
// This file is only here to verify (to the extent possible) the self sufficiency of the header
|
|
||||||
#include "internal/catch_suppress_warnings.h"
|
|
||||||
#include "internal/catch_interfaces_capture.h"
|
|
@ -1,2 +0,0 @@
|
|||||||
#include "internal/catch_suppress_warnings.h"
|
|
||||||
#include "internal/catch_interfaces_config.h"
|
|
@ -1,2 +0,0 @@
|
|||||||
#include "internal/catch_suppress_warnings.h"
|
|
||||||
#include "internal/catch_interfaces_exception.h"
|
|
@ -1,3 +0,0 @@
|
|||||||
// This file is only here to verify (to the extent possible) the self sufficiency of the header
|
|
||||||
#include "internal/catch_suppress_warnings.h"
|
|
||||||
#include "internal/catch_interfaces_registry_hub.h"
|
|
@ -1 +0,0 @@
|
|||||||
#include "internal/catch_interfaces_runner.h"
|
|
@ -1,2 +0,0 @@
|
|||||||
#include "internal/catch_suppress_warnings.h"
|
|
||||||
#include "internal/catch_interfaces_testcase.h"
|
|
@ -1,3 +0,0 @@
|
|||||||
// This file is only here to verify (to the extent possible) the self sufficiency of the header
|
|
||||||
#include "internal/catch_suppress_warnings.h"
|
|
||||||
#include "internal/catch_streambuf.h"
|
|
@ -265,4 +265,4 @@ struct AutoTestReg {
|
|||||||
REGISTER_TEST_CASE( manuallyRegisteredTestFunction, "ManuallyRegistered" );
|
REGISTER_TEST_CASE( manuallyRegisteredTestFunction, "ManuallyRegistered" );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
AutoTestReg autoTestReg;
|
static AutoTestReg autoTestReg;
|
||||||
|
@ -381,12 +381,9 @@ TEST_CASE( "has printf" ) {
|
|||||||
printf( "loose text artifact\n" );
|
printf( "loose text artifact\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE( "assertions with commas are allowed" ) {
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
struct constructor_throws {
|
struct constructor_throws {
|
||||||
constructor_throws() {
|
[[noreturn]] constructor_throws() {
|
||||||
throw 1;
|
throw 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user