mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-04 05:09:53 +01:00
Merge remote-tracking branch 'upstream/dev-modernize' into dev-better-verbosity
This commit is contained in:
commit
af05ccfe5d
@ -83,8 +83,7 @@ CheckFileList(TEST_SOURCES ${SELF_TEST_DIR})
|
|||||||
|
|
||||||
# A set of impl files that just #include a single header
|
# A set of impl files that just #include a single header
|
||||||
# Please keep these ordered alphabetically
|
# Please keep these ordered alphabetically
|
||||||
set(IMPL_SOURCES
|
set(SURROGATE_SOURCES
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_common.cpp
|
|
||||||
${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_capture.cpp
|
||||||
@ -94,7 +93,6 @@ set(IMPL_SOURCES
|
|||||||
${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_runner.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_testcase.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_testcase.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_message.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_streambuf.cpp
|
||||||
@ -102,7 +100,7 @@ set(IMPL_SOURCES
|
|||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_xmlwriter.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_xmlwriter.cpp
|
||||||
${SELF_TEST_DIR}/SurrogateCpps/catch_test_case_tracker.cpp
|
${SELF_TEST_DIR}/SurrogateCpps/catch_test_case_tracker.cpp
|
||||||
)
|
)
|
||||||
CheckFileList(IMPL_SOURCES ${SELF_TEST_DIR}/SurrogateCpps)
|
CheckFileList(SURROGATE_SOURCES ${SELF_TEST_DIR}/SurrogateCpps)
|
||||||
|
|
||||||
|
|
||||||
# Please keep these ordered alphabetically
|
# Please keep these ordered alphabetically
|
||||||
@ -125,26 +123,21 @@ CheckFileList(EXTERNAL_HEADERS ${HEADER_DIR}/external)
|
|||||||
set(INTERNAL_HEADERS
|
set(INTERNAL_HEADERS
|
||||||
${HEADER_DIR}/internal/catch_approx.hpp
|
${HEADER_DIR}/internal/catch_approx.hpp
|
||||||
${HEADER_DIR}/internal/catch_assertionresult.h
|
${HEADER_DIR}/internal/catch_assertionresult.h
|
||||||
${HEADER_DIR}/internal/catch_assertionresult.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_capture.hpp
|
${HEADER_DIR}/internal/catch_capture.hpp
|
||||||
${HEADER_DIR}/internal/catch_clara.h
|
${HEADER_DIR}/internal/catch_clara.h
|
||||||
${HEADER_DIR}/internal/catch_commandline.hpp
|
${HEADER_DIR}/internal/catch_commandline.hpp
|
||||||
${HEADER_DIR}/internal/catch_common.h
|
${HEADER_DIR}/internal/catch_common.h
|
||||||
${HEADER_DIR}/internal/catch_common.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_compiler_capabilities.h
|
${HEADER_DIR}/internal/catch_compiler_capabilities.h
|
||||||
${HEADER_DIR}/internal/catch_config.hpp
|
${HEADER_DIR}/internal/catch_config.hpp
|
||||||
${HEADER_DIR}/internal/catch_console_colour.hpp
|
${HEADER_DIR}/internal/catch_console_colour.hpp
|
||||||
${HEADER_DIR}/internal/catch_console_colour_impl.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_context.h
|
${HEADER_DIR}/internal/catch_context.h
|
||||||
${HEADER_DIR}/internal/catch_context_impl.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_debugger.h
|
${HEADER_DIR}/internal/catch_debugger.h
|
||||||
${HEADER_DIR}/internal/catch_debugger.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_default_main.hpp
|
${HEADER_DIR}/internal/catch_default_main.hpp
|
||||||
${HEADER_DIR}/internal/catch_errno_guard.hpp
|
${HEADER_DIR}/internal/catch_errno_guard.h
|
||||||
${HEADER_DIR}/internal/catch_evaluate.hpp
|
${HEADER_DIR}/internal/catch_evaluate.hpp
|
||||||
${HEADER_DIR}/internal/catch_exception_translator_registry.hpp
|
${HEADER_DIR}/internal/catch_exception_translator_registry.hpp
|
||||||
${HEADER_DIR}/internal/catch_expression_lhs.hpp
|
${HEADER_DIR}/internal/catch_expression_lhs.hpp
|
||||||
${HEADER_DIR}/internal/catch_fatal_condition.hpp
|
${HEADER_DIR}/internal/catch_fatal_condition.h
|
||||||
${HEADER_DIR}/internal/catch_impl.hpp
|
${HEADER_DIR}/internal/catch_impl.hpp
|
||||||
${HEADER_DIR}/internal/catch_interfaces_capture.h
|
${HEADER_DIR}/internal/catch_interfaces_capture.h
|
||||||
${HEADER_DIR}/internal/catch_interfaces_config.h
|
${HEADER_DIR}/internal/catch_interfaces_config.h
|
||||||
@ -157,47 +150,33 @@ set(INTERNAL_HEADERS
|
|||||||
${HEADER_DIR}/internal/catch_list.hpp
|
${HEADER_DIR}/internal/catch_list.hpp
|
||||||
${HEADER_DIR}/internal/catch_matchers.hpp
|
${HEADER_DIR}/internal/catch_matchers.hpp
|
||||||
${HEADER_DIR}/internal/catch_matchers_string.h
|
${HEADER_DIR}/internal/catch_matchers_string.h
|
||||||
${HEADER_DIR}/internal/catch_matchers_string.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_matchers_vector.h
|
${HEADER_DIR}/internal/catch_matchers_vector.h
|
||||||
${HEADER_DIR}/internal/catch_message.h
|
${HEADER_DIR}/internal/catch_message.h
|
||||||
${HEADER_DIR}/internal/catch_message.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_notimplemented_exception.h
|
${HEADER_DIR}/internal/catch_notimplemented_exception.h
|
||||||
${HEADER_DIR}/internal/catch_notimplemented_exception.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_objc.hpp
|
${HEADER_DIR}/internal/catch_objc.hpp
|
||||||
${HEADER_DIR}/internal/catch_objc_arc.hpp
|
${HEADER_DIR}/internal/catch_objc_arc.hpp
|
||||||
${HEADER_DIR}/internal/catch_option.hpp
|
${HEADER_DIR}/internal/catch_option.hpp
|
||||||
${HEADER_DIR}/internal/catch_platform.h
|
${HEADER_DIR}/internal/catch_platform.h
|
||||||
${HEADER_DIR}/internal/catch_reenable_warnings.h
|
${HEADER_DIR}/internal/catch_reenable_warnings.h
|
||||||
${HEADER_DIR}/internal/catch_registry_hub.hpp
|
|
||||||
${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.hpp
|
||||||
${HEADER_DIR}/internal/catch_result_builder.h
|
${HEADER_DIR}/internal/catch_result_builder.h
|
||||||
${HEADER_DIR}/internal/catch_result_builder.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_result_type.h
|
${HEADER_DIR}/internal/catch_result_type.h
|
||||||
${HEADER_DIR}/internal/catch_run_context.hpp
|
${HEADER_DIR}/internal/catch_run_context.hpp
|
||||||
${HEADER_DIR}/internal/catch_section.h
|
${HEADER_DIR}/internal/catch_section.h
|
||||||
${HEADER_DIR}/internal/catch_section.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_section_info.h
|
${HEADER_DIR}/internal/catch_section_info.h
|
||||||
${HEADER_DIR}/internal/catch_section_info.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_startup_exception_registry.h
|
${HEADER_DIR}/internal/catch_startup_exception_registry.h
|
||||||
${HEADER_DIR}/internal/catch_startup_exception_registry.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_stream.h
|
${HEADER_DIR}/internal/catch_stream.h
|
||||||
${HEADER_DIR}/internal/catch_stream.hpp
|
${HEADER_DIR}/internal/catch_stream.hpp
|
||||||
${HEADER_DIR}/internal/catch_streambuf.h
|
${HEADER_DIR}/internal/catch_streambuf.h
|
||||||
${HEADER_DIR}/internal/catch_string.cpp
|
|
||||||
${HEADER_DIR}/internal/catch_string.h
|
${HEADER_DIR}/internal/catch_string.h
|
||||||
${HEADER_DIR}/internal/catch_stringbuilder.cpp
|
|
||||||
${HEADER_DIR}/internal/catch_stringbuilder.h
|
${HEADER_DIR}/internal/catch_stringbuilder.h
|
||||||
${HEADER_DIR}/internal/catch_stringdata.cpp
|
|
||||||
${HEADER_DIR}/internal/catch_stringdata.h
|
${HEADER_DIR}/internal/catch_stringdata.h
|
||||||
${HEADER_DIR}/internal/catch_stringref.cpp
|
|
||||||
${HEADER_DIR}/internal/catch_stringref.h
|
${HEADER_DIR}/internal/catch_stringref.h
|
||||||
${HEADER_DIR}/internal/catch_suppress_warnings.h
|
${HEADER_DIR}/internal/catch_suppress_warnings.h
|
||||||
${HEADER_DIR}/internal/catch_tag_alias.h
|
${HEADER_DIR}/internal/catch_tag_alias.h
|
||||||
${HEADER_DIR}/internal/catch_tag_alias_registry.h
|
${HEADER_DIR}/internal/catch_tag_alias_registry.h
|
||||||
${HEADER_DIR}/internal/catch_tag_alias_registry.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_test_case_info.h
|
${HEADER_DIR}/internal/catch_test_case_info.h
|
||||||
${HEADER_DIR}/internal/catch_test_case_info.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_test_case_registry_impl.hpp
|
${HEADER_DIR}/internal/catch_test_case_registry_impl.hpp
|
||||||
${HEADER_DIR}/internal/catch_test_case_tracker.hpp
|
${HEADER_DIR}/internal/catch_test_case_tracker.hpp
|
||||||
${HEADER_DIR}/internal/catch_test_registry.hpp
|
${HEADER_DIR}/internal/catch_test_registry.hpp
|
||||||
@ -205,17 +184,41 @@ set(INTERNAL_HEADERS
|
|||||||
${HEADER_DIR}/internal/catch_test_spec_parser.hpp
|
${HEADER_DIR}/internal/catch_test_spec_parser.hpp
|
||||||
${HEADER_DIR}/internal/catch_text.h
|
${HEADER_DIR}/internal/catch_text.h
|
||||||
${HEADER_DIR}/internal/catch_timer.h
|
${HEADER_DIR}/internal/catch_timer.h
|
||||||
${HEADER_DIR}/internal/catch_timer.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_tostring.h
|
${HEADER_DIR}/internal/catch_tostring.h
|
||||||
${HEADER_DIR}/internal/catch_tostring.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_totals.hpp
|
${HEADER_DIR}/internal/catch_totals.hpp
|
||||||
${HEADER_DIR}/internal/catch_version.h
|
${HEADER_DIR}/internal/catch_version.h
|
||||||
${HEADER_DIR}/internal/catch_version.hpp
|
|
||||||
${HEADER_DIR}/internal/catch_wildcard_pattern.hpp
|
${HEADER_DIR}/internal/catch_wildcard_pattern.hpp
|
||||||
${HEADER_DIR}/internal/catch_windows_h_proxy.h
|
${HEADER_DIR}/internal/catch_windows_h_proxy.h
|
||||||
${HEADER_DIR}/internal/catch_xmlwriter.hpp
|
${HEADER_DIR}/internal/catch_xmlwriter.hpp
|
||||||
)
|
)
|
||||||
CheckFileList(INTERNAL_HEADERS ${HEADER_DIR}/internal)
|
set(IMPL_SOURCES
|
||||||
|
${HEADER_DIR}/internal/catch_assertionresult.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_common.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_console_colour.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_context.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_debugger.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_errno_guard.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_fatal_condition.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_matchers_string.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_message.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_notimplemented_exception.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_registry_hub.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_result_builder.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_section.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_section_info.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_startup_exception_registry.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_string.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_stringbuilder.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_stringdata.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_stringref.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_tag_alias_registry.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_test_case_info.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_timer.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_tostring.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_version.cpp
|
||||||
|
)
|
||||||
|
set(INTERNAL_FILES ${IMPL_SOURCES} ${INTERNAL_HEADERS})
|
||||||
|
CheckFileList(INTERNAL_FILES ${HEADER_DIR}/internal)
|
||||||
|
|
||||||
# Please keep these ordered alphabetically
|
# Please keep these ordered alphabetically
|
||||||
set(REPORTER_HEADERS
|
set(REPORTER_HEADERS
|
||||||
@ -248,7 +251,7 @@ CheckFileList(BENCH_SOURCES ${BENCHMARK_DIR})
|
|||||||
|
|
||||||
# Provide some groupings for IDEs
|
# Provide some groupings for IDEs
|
||||||
SOURCE_GROUP("Tests" FILES ${TEST_SOURCES})
|
SOURCE_GROUP("Tests" FILES ${TEST_SOURCES})
|
||||||
SOURCE_GROUP("Surrogates" FILES ${IMPL_SOURCES})
|
SOURCE_GROUP("Surrogates" FILES ${SURROGATE_SOURCES})
|
||||||
SOURCE_GROUP("Benchmarks" FILES ${BENCH_SOURCES})
|
SOURCE_GROUP("Benchmarks" FILES ${BENCH_SOURCES})
|
||||||
|
|
||||||
# configure the executable
|
# configure the executable
|
||||||
@ -259,8 +262,8 @@ add_definitions( -DCATCH_CONFIG_FULL_PROJECT )
|
|||||||
# Projects consuming Catch via ExternalProject_Add might want to use install step
|
# Projects consuming Catch via ExternalProject_Add might want to use install step
|
||||||
# without building all of our selftests.
|
# without building all of our selftests.
|
||||||
if (NOT NO_SELFTEST)
|
if (NOT NO_SELFTEST)
|
||||||
add_executable(SelfTest ${TEST_SOURCES} ${IMPL_SOURCES} ${HEADERS})
|
add_executable(SelfTest ${TEST_SOURCES} ${IMPL_SOURCES} ${SURROGATE_SOURCES} ${HEADERS})
|
||||||
add_executable(Benchmark ${BENCH_SOURCES} ${HEADERS})
|
add_executable(Benchmark ${BENCH_SOURCES} ${IMPL_SOURCES} ${HEADERS})
|
||||||
|
|
||||||
# Add desired warnings
|
# Add desired warnings
|
||||||
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang|GNU" )
|
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang|GNU" )
|
||||||
|
@ -5,8 +5,6 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_ASSERTIONRESULT_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_ASSERTIONRESULT_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_assertionresult.h"
|
#include "catch_assertionresult.h"
|
||||||
|
|
||||||
@ -54,12 +52,6 @@ namespace Catch {
|
|||||||
return !m_resultData.message.empty();
|
return !m_resultData.message.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string capturedExpressionWithSecondArgument( char const * capturedExpression, char const * secondArg ) {
|
|
||||||
return (secondArg[0] == 0 || secondArg[0] == '"' && secondArg[1] == '"')
|
|
||||||
? capturedExpression
|
|
||||||
: std::string(capturedExpression) + ", " + secondArg;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string AssertionResult::getExpression() const {
|
std::string AssertionResult::getExpression() const {
|
||||||
if (isFalseTest(m_info.resultDisposition))
|
if (isFalseTest(m_info.resultDisposition))
|
||||||
return '!' + std::string(m_info.capturedExpression);
|
return '!' + std::string(m_info.capturedExpression);
|
||||||
@ -102,5 +94,3 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_ASSERTIONRESULT_HPP_INCLUDED
|
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "catch_result_type.h"
|
#include "catch_result_type.h"
|
||||||
|
#include "catch_common.h"
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_COMMON_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_COMMON_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_common.h"
|
#include "catch_common.h"
|
||||||
|
#include "catch_context.h"
|
||||||
|
#include "catch_interfaces_config.h"
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
@ -107,6 +107,3 @@ namespace Catch {
|
|||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_COMMON_HPP_INCLUDED
|
|
||||||
|
|
@ -5,11 +5,13 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_console_colour.hpp"
|
#include "catch_console_colour.hpp"
|
||||||
#include "catch_errno_guard.hpp"
|
#include "catch_errno_guard.h"
|
||||||
|
#include "catch_interfaces_config.h"
|
||||||
|
#include "catch_stream.h"
|
||||||
|
#include "catch_context.h"
|
||||||
|
#include "catch_platform.h"
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
namespace {
|
namespace {
|
||||||
@ -186,5 +188,3 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED
|
|
@ -8,10 +8,8 @@
|
|||||||
#ifndef TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED
|
#ifndef TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED
|
||||||
#define TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED
|
#define TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED
|
||||||
|
|
||||||
#include "catch_run_context.hpp"
|
#include "catch_stream.h"
|
||||||
|
|
||||||
#include "catch_context.h"
|
#include "catch_context.h"
|
||||||
#include "catch_stream.hpp"
|
|
||||||
#include "catch_common.h"
|
#include "catch_common.h"
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
@ -6,11 +6,10 @@
|
|||||||
* 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)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_DEBUGGER_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_DEBUGGER_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_debugger.h"
|
#include "catch_debugger.h"
|
||||||
#include "catch_errno_guard.hpp"
|
#include "catch_errno_guard.h"
|
||||||
|
#include "catch_stream.h"
|
||||||
|
|
||||||
#ifdef CATCH_PLATFORM_MAC
|
#ifdef CATCH_PLATFORM_MAC
|
||||||
|
|
||||||
@ -127,5 +126,3 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // Platform
|
#endif // Platform
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_DEBUGGER_HPP_INCLUDED
|
|
15
include/internal/catch_errno_guard.cpp
Normal file
15
include/internal/catch_errno_guard.cpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* Created by Martin on 06/03/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_errno_guard.h"
|
||||||
|
|
||||||
|
#include <cerrno>
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
ErrnoGuard::ErrnoGuard():m_oldErrno(errno){}
|
||||||
|
ErrnoGuard::~ErrnoGuard() { errno = m_oldErrno; }
|
||||||
|
}
|
@ -4,22 +4,19 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_ERRNO_GUARD_HPP_INCLUDED
|
#ifndef TWOBLUECUBES_CATCH_ERRNO_GUARD_H_INCLUDED
|
||||||
#define TWOBLUECUBES_CATCH_ERRNO_GUARD_HPP_INCLUDED
|
#define TWOBLUECUBES_CATCH_ERRNO_GUARD_H_INCLUDED
|
||||||
|
|
||||||
#include <cerrno>
|
|
||||||
|
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
class ErrnoGuard {
|
class ErrnoGuard {
|
||||||
public:
|
public:
|
||||||
ErrnoGuard():m_oldErrno(errno){}
|
ErrnoGuard();
|
||||||
~ErrnoGuard() { errno = m_oldErrno; }
|
~ErrnoGuard();
|
||||||
private:
|
private:
|
||||||
int m_oldErrno;
|
int m_oldErrno;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_ERRNO_GUARD_HPP_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_ERRNO_GUARD_H_INCLUDED
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include "catch_interfaces_exception.h"
|
#include "catch_interfaces_exception.h"
|
||||||
#include "catch_tostring.h"
|
#include "catch_tostring.h"
|
||||||
|
#include "catch_result_builder.h"
|
||||||
|
|
||||||
#ifdef __OBJC__
|
#ifdef __OBJC__
|
||||||
#import "Foundation/Foundation.h"
|
#import "Foundation/Foundation.h"
|
||||||
|
181
include/internal/catch_fatal_condition.cpp
Normal file
181
include/internal/catch_fatal_condition.cpp
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
/*
|
||||||
|
* Created by Phil on 21/08/2014
|
||||||
|
* Copyright 2014 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)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "catch_fatal_condition.h"
|
||||||
|
|
||||||
|
#include "catch_context.h"
|
||||||
|
#include "catch_interfaces_capture.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
// Report the error condition
|
||||||
|
void reportFatal( std::string const& message ) {
|
||||||
|
IContext& context = Catch::getCurrentContext();
|
||||||
|
IResultCapture* resultCapture = context.getResultCapture();
|
||||||
|
resultCapture->handleFatalErrorCondition( message );
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Catch
|
||||||
|
|
||||||
|
#if defined ( CATCH_PLATFORM_WINDOWS ) /////////////////////////////////////////
|
||||||
|
|
||||||
|
# if !defined ( CATCH_CONFIG_WINDOWS_SEH )
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
void FatalConditionHandler::reset() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
# else // CATCH_CONFIG_WINDOWS_SEH is defined
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
struct SignalDefs { DWORD id; const char* name; };
|
||||||
|
|
||||||
|
// There is no 1-1 mapping between signals and windows exceptions.
|
||||||
|
// Windows can easily distinguish between SO and SigSegV,
|
||||||
|
// but SigInt, SigTerm, etc are handled differently.
|
||||||
|
SignalDefs signalDefs[] = {
|
||||||
|
{ EXCEPTION_ILLEGAL_INSTRUCTION, "SIGILL - Illegal instruction signal" },
|
||||||
|
{ EXCEPTION_STACK_OVERFLOW, "SIGSEGV - Stack overflow" },
|
||||||
|
{ EXCEPTION_ACCESS_VIOLATION, "SIGSEGV - Segmentation violation signal" },
|
||||||
|
{ EXCEPTION_INT_DIVIDE_BY_ZERO, "Divide by zero error" },
|
||||||
|
};
|
||||||
|
|
||||||
|
LONG CALLBACK FatalConditionHandler::handleVectoredException(PEXCEPTION_POINTERS ExceptionInfo) {
|
||||||
|
for (int i = 0; i < sizeof(signalDefs) / sizeof(SignalDefs); ++i) {
|
||||||
|
if (ExceptionInfo->ExceptionRecord->ExceptionCode == signalDefs[i].id) {
|
||||||
|
reportFatal(signalDefs[i].name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If its not an exception we care about, pass it along.
|
||||||
|
// This stops us from eating debugger breaks etc.
|
||||||
|
return EXCEPTION_CONTINUE_SEARCH;
|
||||||
|
}
|
||||||
|
|
||||||
|
FatalConditionHandler::FatalConditionHandler() {
|
||||||
|
isSet = true;
|
||||||
|
// 32k seems enough for Catch to handle stack overflow,
|
||||||
|
// but the value was found experimentally, so there is no strong guarantee
|
||||||
|
guaranteeSize = 32 * 1024;
|
||||||
|
exceptionHandlerHandle = nullptr;
|
||||||
|
// Register as first handler in current chain
|
||||||
|
exceptionHandlerHandle = AddVectoredExceptionHandler(1, handleVectoredException);
|
||||||
|
// Pass in guarantee size to be filled
|
||||||
|
SetThreadStackGuarantee(&guaranteeSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FatalConditionHandler::reset() {
|
||||||
|
if (isSet) {
|
||||||
|
// Unregister handler and restore the old guarantee
|
||||||
|
RemoveVectoredExceptionHandler(exceptionHandlerHandle);
|
||||||
|
SetThreadStackGuarantee(&guaranteeSize);
|
||||||
|
exceptionHandlerHandle = nullptr;
|
||||||
|
isSet = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FatalConditionHandler::~FatalConditionHandler() {
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FatalConditionHandler::isSet = false;
|
||||||
|
ULONG FatalConditionHandler::guaranteeSize = 0;
|
||||||
|
PVOID FatalConditionHandler::exceptionHandlerHandle = nullptr;
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace Catch
|
||||||
|
|
||||||
|
# endif // CATCH_CONFIG_WINDOWS_SEH
|
||||||
|
|
||||||
|
#else // Not Windows - assumed to be POSIX compatible //////////////////////////
|
||||||
|
|
||||||
|
# if !defined(CATCH_CONFIG_POSIX_SIGNALS)
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
void FatalConditionHandler::reset() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# else // CATCH_CONFIG_POSIX_SIGNALS is defined
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
struct SignalDefs {
|
||||||
|
int id;
|
||||||
|
const char* name;
|
||||||
|
};
|
||||||
|
SignalDefs signalDefs[] = {
|
||||||
|
{ SIGINT, "SIGINT - Terminal interrupt signal" },
|
||||||
|
{ SIGILL, "SIGILL - Illegal instruction signal" },
|
||||||
|
{ SIGFPE, "SIGFPE - Floating point error signal" },
|
||||||
|
{ SIGSEGV, "SIGSEGV - Segmentation violation signal" },
|
||||||
|
{ SIGTERM, "SIGTERM - Termination request signal" },
|
||||||
|
{ SIGABRT, "SIGABRT - Abort (abnormal termination) signal" }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void FatalConditionHandler::handleSignal( int sig ) {
|
||||||
|
std::string name = "<unknown signal>";
|
||||||
|
for (std::size_t i = 0; i < sizeof(signalDefs) / sizeof(SignalDefs); ++i) {
|
||||||
|
SignalDefs &def = signalDefs[i];
|
||||||
|
if (sig == def.id) {
|
||||||
|
name = def.name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
reset();
|
||||||
|
reportFatal(name);
|
||||||
|
raise( sig );
|
||||||
|
}
|
||||||
|
|
||||||
|
FatalConditionHandler::FatalConditionHandler() {
|
||||||
|
isSet = true;
|
||||||
|
stack_t sigStack;
|
||||||
|
sigStack.ss_sp = altStackMem;
|
||||||
|
sigStack.ss_size = SIGSTKSZ;
|
||||||
|
sigStack.ss_flags = 0;
|
||||||
|
sigaltstack(&sigStack, &oldSigStack);
|
||||||
|
struct sigaction sa = { };
|
||||||
|
|
||||||
|
sa.sa_handler = handleSignal;
|
||||||
|
sa.sa_flags = SA_ONSTACK;
|
||||||
|
for (std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i) {
|
||||||
|
sigaction(signalDefs[i].id, &sa, &oldSigActions[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FatalConditionHandler::~FatalConditionHandler() {
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FatalConditionHandler::reset() {
|
||||||
|
if( isSet ) {
|
||||||
|
// Set signals back to previous values -- hopefully nobody overwrote them in the meantime
|
||||||
|
for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) {
|
||||||
|
sigaction(signalDefs[i].id, &oldSigActions[i], nullptr);
|
||||||
|
}
|
||||||
|
// Return the old stack
|
||||||
|
sigaltstack(&oldSigStack, nullptr);
|
||||||
|
isSet = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FatalConditionHandler::isSet = false;
|
||||||
|
struct sigaction FatalConditionHandler::oldSigActions[sizeof(signalDefs)/sizeof(SignalDefs)] = {};
|
||||||
|
stack_t FatalConditionHandler::oldSigStack = {};
|
||||||
|
char FatalConditionHandler::altStackMem[SIGSTKSZ] = {};
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace Catch
|
||||||
|
|
||||||
|
# endif // CATCH_CONFIG_POSIX_SIGNALS
|
||||||
|
|
||||||
|
#endif // not Windows
|
92
include/internal/catch_fatal_condition.h
Normal file
92
include/internal/catch_fatal_condition.h
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
* Created by Phil on 21/08/2014
|
||||||
|
* Copyright 2014 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_FATAL_CONDITION_H_INCLUDED
|
||||||
|
#define TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include "catch_platform.h"
|
||||||
|
#include "catch_compiler_capabilities.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
// Report the error condition
|
||||||
|
void reportFatal( std::string const& message );
|
||||||
|
|
||||||
|
} // namespace Catch
|
||||||
|
|
||||||
|
#if defined ( CATCH_PLATFORM_WINDOWS ) /////////////////////////////////////////
|
||||||
|
#include "catch_windows_h_proxy.h"
|
||||||
|
|
||||||
|
# if !defined ( CATCH_CONFIG_WINDOWS_SEH )
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
struct FatalConditionHandler {
|
||||||
|
void reset();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# else // CATCH_CONFIG_WINDOWS_SEH is defined
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
struct FatalConditionHandler {
|
||||||
|
|
||||||
|
static LONG CALLBACK handleVectoredException(PEXCEPTION_POINTERS ExceptionInfo);
|
||||||
|
FatalConditionHandler();
|
||||||
|
static void reset();
|
||||||
|
~FatalConditionHandler();
|
||||||
|
|
||||||
|
private:
|
||||||
|
static bool isSet;
|
||||||
|
static ULONG guaranteeSize;
|
||||||
|
static PVOID exceptionHandlerHandle;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Catch
|
||||||
|
|
||||||
|
# endif // CATCH_CONFIG_WINDOWS_SEH
|
||||||
|
|
||||||
|
#else // Not Windows - assumed to be POSIX compatible //////////////////////////
|
||||||
|
|
||||||
|
# if !defined(CATCH_CONFIG_POSIX_SIGNALS)
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
struct FatalConditionHandler {
|
||||||
|
void reset();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# else // CATCH_CONFIG_POSIX_SIGNALS is defined
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
struct FatalConditionHandler {
|
||||||
|
|
||||||
|
static bool isSet;
|
||||||
|
static struct sigaction oldSigActions[];// [sizeof(signalDefs) / sizeof(SignalDefs)];
|
||||||
|
static stack_t oldSigStack;
|
||||||
|
static char altStackMem[];
|
||||||
|
|
||||||
|
static void handleSignal( int sig );
|
||||||
|
|
||||||
|
FatalConditionHandler();
|
||||||
|
~FatalConditionHandler();
|
||||||
|
static void reset();
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Catch
|
||||||
|
|
||||||
|
# endif // CATCH_CONFIG_POSIX_SIGNALS
|
||||||
|
|
||||||
|
#endif // not Windows
|
||||||
|
|
||||||
|
#endif // TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED
|
@ -1,200 +0,0 @@
|
|||||||
/*
|
|
||||||
* Created by Phil on 21/08/2014
|
|
||||||
* Copyright 2014 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_FATAL_CONDITION_H_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED
|
|
||||||
|
|
||||||
|
|
||||||
namespace Catch {
|
|
||||||
|
|
||||||
// Report the error condition
|
|
||||||
inline void reportFatal( std::string const& message ) {
|
|
||||||
IContext& context = Catch::getCurrentContext();
|
|
||||||
IResultCapture* resultCapture = context.getResultCapture();
|
|
||||||
resultCapture->handleFatalErrorCondition( message );
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Catch
|
|
||||||
|
|
||||||
#if defined ( CATCH_PLATFORM_WINDOWS ) /////////////////////////////////////////
|
|
||||||
#include "catch_windows_h_proxy.h"
|
|
||||||
|
|
||||||
# if !defined ( CATCH_CONFIG_WINDOWS_SEH )
|
|
||||||
|
|
||||||
namespace Catch {
|
|
||||||
struct FatalConditionHandler {
|
|
||||||
void reset() {}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
# else // CATCH_CONFIG_WINDOWS_SEH is defined
|
|
||||||
|
|
||||||
namespace Catch {
|
|
||||||
|
|
||||||
struct SignalDefs { DWORD id; const char* name; };
|
|
||||||
extern SignalDefs signalDefs[];
|
|
||||||
// There is no 1-1 mapping between signals and windows exceptions.
|
|
||||||
// Windows can easily distinguish between SO and SigSegV,
|
|
||||||
// but SigInt, SigTerm, etc are handled differently.
|
|
||||||
SignalDefs signalDefs[] = {
|
|
||||||
{ EXCEPTION_ILLEGAL_INSTRUCTION, "SIGILL - Illegal instruction signal" },
|
|
||||||
{ EXCEPTION_STACK_OVERFLOW, "SIGSEGV - Stack overflow" },
|
|
||||||
{ EXCEPTION_ACCESS_VIOLATION, "SIGSEGV - Segmentation violation signal" },
|
|
||||||
{ EXCEPTION_INT_DIVIDE_BY_ZERO, "Divide by zero error" },
|
|
||||||
};
|
|
||||||
|
|
||||||
struct FatalConditionHandler {
|
|
||||||
|
|
||||||
static LONG CALLBACK handleVectoredException(PEXCEPTION_POINTERS ExceptionInfo) {
|
|
||||||
for (int i = 0; i < sizeof(signalDefs) / sizeof(SignalDefs); ++i) {
|
|
||||||
if (ExceptionInfo->ExceptionRecord->ExceptionCode == signalDefs[i].id) {
|
|
||||||
reportFatal(signalDefs[i].name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// If its not an exception we care about, pass it along.
|
|
||||||
// This stops us from eating debugger breaks etc.
|
|
||||||
return EXCEPTION_CONTINUE_SEARCH;
|
|
||||||
}
|
|
||||||
|
|
||||||
FatalConditionHandler() {
|
|
||||||
isSet = true;
|
|
||||||
// 32k seems enough for Catch to handle stack overflow,
|
|
||||||
// but the value was found experimentally, so there is no strong guarantee
|
|
||||||
guaranteeSize = 32 * 1024;
|
|
||||||
exceptionHandlerHandle = nullptr;
|
|
||||||
// Register as first handler in current chain
|
|
||||||
exceptionHandlerHandle = AddVectoredExceptionHandler(1, handleVectoredException);
|
|
||||||
// Pass in guarantee size to be filled
|
|
||||||
SetThreadStackGuarantee(&guaranteeSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void reset() {
|
|
||||||
if (isSet) {
|
|
||||||
// Unregister handler and restore the old guarantee
|
|
||||||
RemoveVectoredExceptionHandler(exceptionHandlerHandle);
|
|
||||||
SetThreadStackGuarantee(&guaranteeSize);
|
|
||||||
exceptionHandlerHandle = nullptr;
|
|
||||||
isSet = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
~FatalConditionHandler() {
|
|
||||||
reset();
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
static bool isSet;
|
|
||||||
static ULONG guaranteeSize;
|
|
||||||
static PVOID exceptionHandlerHandle;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool FatalConditionHandler::isSet = false;
|
|
||||||
ULONG FatalConditionHandler::guaranteeSize = 0;
|
|
||||||
PVOID FatalConditionHandler::exceptionHandlerHandle = nullptr;
|
|
||||||
|
|
||||||
} // namespace Catch
|
|
||||||
|
|
||||||
# endif // CATCH_CONFIG_WINDOWS_SEH
|
|
||||||
|
|
||||||
#else // Not Windows - assumed to be POSIX compatible //////////////////////////
|
|
||||||
|
|
||||||
# if !defined(CATCH_CONFIG_POSIX_SIGNALS)
|
|
||||||
|
|
||||||
namespace Catch {
|
|
||||||
struct FatalConditionHandler {
|
|
||||||
void reset() {}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# else // CATCH_CONFIG_POSIX_SIGNALS is defined
|
|
||||||
|
|
||||||
#include <signal.h>
|
|
||||||
|
|
||||||
namespace Catch {
|
|
||||||
|
|
||||||
struct SignalDefs {
|
|
||||||
int id;
|
|
||||||
const char* name;
|
|
||||||
};
|
|
||||||
extern SignalDefs signalDefs[];
|
|
||||||
SignalDefs signalDefs[] = {
|
|
||||||
{ SIGINT, "SIGINT - Terminal interrupt signal" },
|
|
||||||
{ SIGILL, "SIGILL - Illegal instruction signal" },
|
|
||||||
{ SIGFPE, "SIGFPE - Floating point error signal" },
|
|
||||||
{ SIGSEGV, "SIGSEGV - Segmentation violation signal" },
|
|
||||||
{ SIGTERM, "SIGTERM - Termination request signal" },
|
|
||||||
{ SIGABRT, "SIGABRT - Abort (abnormal termination) signal" }
|
|
||||||
};
|
|
||||||
|
|
||||||
struct FatalConditionHandler {
|
|
||||||
|
|
||||||
static bool isSet;
|
|
||||||
static struct sigaction oldSigActions [sizeof(signalDefs)/sizeof(SignalDefs)];
|
|
||||||
static stack_t oldSigStack;
|
|
||||||
static char altStackMem[SIGSTKSZ];
|
|
||||||
|
|
||||||
static void handleSignal( int sig ) {
|
|
||||||
std::string name = "<unknown signal>";
|
|
||||||
for (std::size_t i = 0; i < sizeof(signalDefs) / sizeof(SignalDefs); ++i) {
|
|
||||||
SignalDefs &def = signalDefs[i];
|
|
||||||
if (sig == def.id) {
|
|
||||||
name = def.name;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reset();
|
|
||||||
reportFatal(name);
|
|
||||||
raise( sig );
|
|
||||||
}
|
|
||||||
|
|
||||||
FatalConditionHandler() {
|
|
||||||
isSet = true;
|
|
||||||
stack_t sigStack;
|
|
||||||
sigStack.ss_sp = altStackMem;
|
|
||||||
sigStack.ss_size = SIGSTKSZ;
|
|
||||||
sigStack.ss_flags = 0;
|
|
||||||
sigaltstack(&sigStack, &oldSigStack);
|
|
||||||
struct sigaction sa = { 0 };
|
|
||||||
|
|
||||||
sa.sa_handler = handleSignal;
|
|
||||||
sa.sa_flags = SA_ONSTACK;
|
|
||||||
for (std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i) {
|
|
||||||
sigaction(signalDefs[i].id, &sa, &oldSigActions[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
~FatalConditionHandler() {
|
|
||||||
reset();
|
|
||||||
}
|
|
||||||
static void reset() {
|
|
||||||
if( isSet ) {
|
|
||||||
// Set signals back to previous values -- hopefully nobody overwrote them in the meantime
|
|
||||||
for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) {
|
|
||||||
sigaction(signalDefs[i].id, &oldSigActions[i], nullptr);
|
|
||||||
}
|
|
||||||
// Return the old stack
|
|
||||||
sigaltstack(&oldSigStack, nullptr);
|
|
||||||
isSet = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
bool FatalConditionHandler::isSet = false;
|
|
||||||
struct sigaction FatalConditionHandler::oldSigActions[sizeof(signalDefs)/sizeof(SignalDefs)] = {};
|
|
||||||
stack_t FatalConditionHandler::oldSigStack = {};
|
|
||||||
char FatalConditionHandler::altStackMem[SIGSTKSZ] = {};
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace Catch
|
|
||||||
|
|
||||||
# endif // CATCH_CONFIG_POSIX_SIGNALS
|
|
||||||
|
|
||||||
#endif // not Windows
|
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED
|
|
@ -17,33 +17,34 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../catch_session.hpp"
|
#include "../catch_session.hpp"
|
||||||
#include "catch_registry_hub.hpp"
|
#include "catch_stream.hpp"
|
||||||
#include "catch_notimplemented_exception.hpp"
|
|
||||||
#include "catch_context_impl.hpp"
|
|
||||||
#include "catch_console_colour_impl.hpp"
|
|
||||||
#include "catch_assertionresult.hpp"
|
|
||||||
#include "catch_test_case_info.hpp"
|
|
||||||
#include "catch_test_spec.hpp"
|
#include "catch_test_spec.hpp"
|
||||||
#include "catch_version.hpp"
|
|
||||||
#include "catch_message.hpp"
|
|
||||||
#include "catch_timer.hpp"
|
|
||||||
#include "catch_common.hpp"
|
|
||||||
#include "catch_section.hpp"
|
|
||||||
#include "catch_debugger.hpp"
|
|
||||||
#include "catch_tostring.hpp"
|
|
||||||
#include "catch_result_builder.hpp"
|
|
||||||
#include "catch_tag_alias_registry.hpp"
|
|
||||||
#include "catch_test_case_tracker.hpp"
|
#include "catch_test_case_tracker.hpp"
|
||||||
#include "catch_matchers_string.hpp"
|
|
||||||
#include "catch_startup_exception_registry.hpp"
|
|
||||||
|
|
||||||
// These files are not included in the full (not single include) project
|
// These files are not included in the full (not single include) project
|
||||||
// as they are compiled as proper cpp files
|
// as they are compiled as proper cpp files
|
||||||
#ifndef CATCH_CONFIG_FULL_PROJECT
|
#ifndef CATCH_CONFIG_FULL_PROJECT
|
||||||
|
# include "catch_assertionresult.cpp"
|
||||||
|
# include "catch_common.cpp"
|
||||||
|
# include "catch_console_colour.cpp"
|
||||||
|
# include "catch_context.cpp"
|
||||||
|
# include "catch_debugger.cpp"
|
||||||
|
# include "catch_matchers_string.cpp"
|
||||||
|
# include "catch_message.cpp"
|
||||||
|
# include "catch_notimplemented_exception.cpp"
|
||||||
|
# include "catch_registry_hub.cpp"
|
||||||
|
# include "catch_result_builder.hpp"
|
||||||
|
# include "catch_section.cpp"
|
||||||
|
# include "catch_startup_exception_registry.cpp"
|
||||||
# include "catch_stringref.cpp"
|
# include "catch_stringref.cpp"
|
||||||
# include "catch_string.cpp"
|
# include "catch_string.cpp"
|
||||||
# include "catch_stringbuilder.cpp"
|
# include "catch_stringbuilder.cpp"
|
||||||
# include "catch_stringdata.cpp"
|
# include "catch_stringdata.cpp"
|
||||||
|
# include "catch_tag_alias_registry.cpp"
|
||||||
|
# include "catch_test_case_info.cpp"
|
||||||
|
# include "catch_timer.cpp"
|
||||||
|
# include "catch_tostring.cpp"
|
||||||
|
# include "catch_version.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../reporters/catch_reporter_multi.hpp"
|
#include "../reporters/catch_reporter_multi.hpp"
|
||||||
@ -90,8 +91,6 @@ namespace Catch {
|
|||||||
IConfig::~IConfig() {}
|
IConfig::~IConfig() {}
|
||||||
XmlReporter::~XmlReporter() {}
|
XmlReporter::~XmlReporter() {}
|
||||||
JunitReporter::~JunitReporter() {}
|
JunitReporter::~JunitReporter() {}
|
||||||
TestRegistry::~TestRegistry() {}
|
|
||||||
FreeFunctionTestCase::~FreeFunctionTestCase() {}
|
|
||||||
WildcardPattern::~WildcardPattern() {}
|
WildcardPattern::~WildcardPattern() {}
|
||||||
TestSpec::Pattern::~Pattern() {}
|
TestSpec::Pattern::~Pattern() {}
|
||||||
TestSpec::NamePattern::~NamePattern() {}
|
TestSpec::NamePattern::~NamePattern() {}
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
#include "catch_common.h"
|
#include "catch_common.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
namespace Matchers {
|
namespace Matchers {
|
||||||
namespace Impl {
|
namespace Impl {
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* 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)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "catch_matchers.hpp"
|
#include "catch_matchers_string.h"
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
namespace Matchers {
|
namespace Matchers {
|
@ -5,10 +5,9 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_message.h"
|
#include "catch_message.h"
|
||||||
|
#include "catch_interfaces_capture.h"
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
@ -21,12 +20,28 @@ namespace Catch {
|
|||||||
sequence( ++globalCount )
|
sequence( ++globalCount )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
bool MessageInfo::operator==( MessageInfo const& other ) const {
|
||||||
|
return sequence == other.sequence;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MessageInfo::operator<( MessageInfo const& other ) const {
|
||||||
|
return sequence < other.sequence;
|
||||||
|
}
|
||||||
|
|
||||||
// This may need protecting if threading support is added
|
// This may need protecting if threading support is added
|
||||||
unsigned int MessageInfo::globalCount = 0;
|
unsigned int MessageInfo::globalCount = 0;
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
Catch::MessageBuilder::MessageBuilder( std::string const& macroName,
|
||||||
|
SourceLineInfo const& lineInfo,
|
||||||
|
ResultWas::OfType type )
|
||||||
|
:m_info(macroName, lineInfo, type) {}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
ScopedMessage::ScopedMessage( MessageBuilder const& builder )
|
ScopedMessage::ScopedMessage( MessageBuilder const& builder )
|
||||||
: m_info( builder.m_info )
|
: m_info( builder.m_info )
|
||||||
{
|
{
|
||||||
@ -45,5 +60,3 @@ namespace Catch {
|
|||||||
|
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED
|
|
@ -25,12 +25,8 @@ namespace Catch {
|
|||||||
std::string message;
|
std::string message;
|
||||||
unsigned int sequence;
|
unsigned int sequence;
|
||||||
|
|
||||||
bool operator == ( MessageInfo const& other ) const {
|
bool operator == ( MessageInfo const& other ) const;
|
||||||
return sequence == other.sequence;
|
bool operator < ( MessageInfo const& other ) const;
|
||||||
}
|
|
||||||
bool operator < ( MessageInfo const& other ) const {
|
|
||||||
return sequence < other.sequence;
|
|
||||||
}
|
|
||||||
private:
|
private:
|
||||||
static unsigned int globalCount;
|
static unsigned int globalCount;
|
||||||
};
|
};
|
||||||
@ -38,9 +34,7 @@ namespace Catch {
|
|||||||
struct MessageBuilder {
|
struct MessageBuilder {
|
||||||
MessageBuilder( std::string const& macroName,
|
MessageBuilder( std::string const& macroName,
|
||||||
SourceLineInfo const& lineInfo,
|
SourceLineInfo const& lineInfo,
|
||||||
ResultWas::OfType type )
|
ResultWas::OfType type );
|
||||||
: m_info( macroName, lineInfo, type )
|
|
||||||
{}
|
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
MessageBuilder& operator << ( T const& value ) {
|
MessageBuilder& operator << ( T const& value ) {
|
||||||
|
@ -5,8 +5,6 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_notimplemented_exception.h"
|
#include "catch_notimplemented_exception.h"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
@ -26,5 +24,3 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_HPP_INCLUDED
|
|
@ -5,8 +5,6 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_REGISTRY_HUB_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_REGISTRY_HUB_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_interfaces_registry_hub.h"
|
#include "catch_interfaces_registry_hub.h"
|
||||||
|
|
||||||
@ -96,5 +94,3 @@ namespace Catch {
|
|||||||
|
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_REGISTRY_HUB_HPP_INCLUDED
|
|
@ -5,8 +5,6 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_RESULT_BUILDER_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_RESULT_BUILDER_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_result_builder.h"
|
#include "catch_result_builder.h"
|
||||||
#include "catch_context.h"
|
#include "catch_context.h"
|
||||||
@ -14,8 +12,11 @@
|
|||||||
#include "catch_interfaces_runner.h"
|
#include "catch_interfaces_runner.h"
|
||||||
#include "catch_interfaces_capture.h"
|
#include "catch_interfaces_capture.h"
|
||||||
#include "catch_interfaces_registry_hub.h"
|
#include "catch_interfaces_registry_hub.h"
|
||||||
|
#include "catch_matchers_string.h"
|
||||||
#include "catch_wildcard_pattern.hpp"
|
#include "catch_wildcard_pattern.hpp"
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
ResultBuilder::ResultBuilder( char const* macroName,
|
ResultBuilder::ResultBuilder( char const* macroName,
|
||||||
@ -158,5 +159,3 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_RESULT_BUILDER_HPP_INCLUDED
|
|
@ -20,7 +20,7 @@
|
|||||||
#include "catch_test_case_tracker.hpp"
|
#include "catch_test_case_tracker.hpp"
|
||||||
#include "catch_timer.h"
|
#include "catch_timer.h"
|
||||||
#include "catch_result_builder.h"
|
#include "catch_result_builder.h"
|
||||||
#include "catch_fatal_condition.hpp"
|
#include "catch_fatal_condition.h"
|
||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -5,8 +5,6 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_section.h"
|
#include "catch_section.h"
|
||||||
#include "catch_capture.hpp"
|
#include "catch_capture.hpp"
|
||||||
@ -54,5 +52,3 @@ namespace Catch {
|
|||||||
|
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED
|
|
@ -5,11 +5,11 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_SECTION_INFO_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_SECTION_INFO_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_section_info.h"
|
#include "catch_section_info.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
class RunningSection {
|
class RunningSection {
|
||||||
@ -75,7 +75,7 @@ namespace Catch {
|
|||||||
RunningSection* findOrAddSubSection( std::string const& name, bool& changed ) {
|
RunningSection* findOrAddSubSection( std::string const& name, bool& changed ) {
|
||||||
for( auto subSection : m_subSections )
|
for( auto subSection : m_subSections )
|
||||||
if( subSection->getName() == name )
|
if( subSection->getName() == name )
|
||||||
return *it;
|
return subSection;
|
||||||
RunningSection* subSection = new RunningSection( this, name );
|
RunningSection* subSection = new RunningSection( this, name );
|
||||||
m_subSections.push_back( subSection );
|
m_subSections.push_back( subSection );
|
||||||
m_state = Branch;
|
m_state = Branch;
|
||||||
@ -102,5 +102,3 @@ namespace Catch {
|
|||||||
SubSections m_subSections;
|
SubSections m_subSections;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_SECTION_INFO_HPP_INCLUDED
|
|
@ -5,8 +5,6 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_STARTUP_EXCEPTION_REGISTRY_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_STARTUP_EXCEPTION_REGISTRY_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_startup_exception_registry.h"
|
#include "catch_startup_exception_registry.h"
|
||||||
|
|
||||||
@ -20,5 +18,3 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_STARTUP_EXCEPTION_REGISTRY_HPP_INCLUDED
|
|
@ -9,7 +9,6 @@
|
|||||||
#ifndef TWOBLUECUBES_CATCH_STREAM_H_INCLUDED
|
#ifndef TWOBLUECUBES_CATCH_STREAM_H_INCLUDED
|
||||||
#define TWOBLUECUBES_CATCH_STREAM_H_INCLUDED
|
#define TWOBLUECUBES_CATCH_STREAM_H_INCLUDED
|
||||||
|
|
||||||
#include "catch_compiler_capabilities.h"
|
|
||||||
#include "catch_streambuf.h"
|
#include "catch_streambuf.h"
|
||||||
|
|
||||||
#include <streambuf>
|
#include <streambuf>
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#ifndef TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED
|
#ifndef TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED
|
||||||
#define TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED
|
#define TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include "catch_common.h"
|
||||||
#include "catch_stream.h"
|
#include "catch_stream.h"
|
||||||
#include "catch_debugger.h"
|
#include "catch_debugger.h"
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
* 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)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "catch_stringdata.h"
|
#include "catch_stringdata.h"
|
||||||
#include "catch_stringref.h"
|
#include "catch_stringref.h"
|
||||||
|
|
||||||
|
@ -5,8 +5,6 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_tag_alias_registry.h"
|
#include "catch_tag_alias_registry.h"
|
||||||
#include "catch_console_colour.hpp"
|
#include "catch_console_colour.hpp"
|
||||||
@ -64,5 +62,3 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED
|
|
@ -5,8 +5,6 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_TEST_CASE_INFO_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_TEST_CASE_INFO_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_test_spec.hpp"
|
#include "catch_test_spec.hpp"
|
||||||
#include "catch_test_case_info.h"
|
#include "catch_test_case_info.h"
|
||||||
@ -161,5 +159,3 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_TEST_CASE_INFO_HPP_INCLUDED
|
|
@ -12,6 +12,7 @@
|
|||||||
#include "catch_test_case_info.h"
|
#include "catch_test_case_info.h"
|
||||||
#include "catch_test_spec.hpp"
|
#include "catch_test_spec.hpp"
|
||||||
#include "catch_context.h"
|
#include "catch_context.h"
|
||||||
|
#include "catch_interfaces_config.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <set>
|
#include <set>
|
||||||
@ -119,6 +120,9 @@ namespace Catch {
|
|||||||
std::ios_base::Init m_ostreamInit; // Forces cout/ cerr to be initialised
|
std::ios_base::Init m_ostreamInit; // Forces cout/ cerr to be initialised
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TestRegistry::~TestRegistry() {}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class FreeFunctionTestCase : public ITestCase {
|
class FreeFunctionTestCase : public ITestCase {
|
||||||
@ -136,6 +140,9 @@ namespace Catch {
|
|||||||
TestFunction m_fun;
|
TestFunction m_fun;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
FreeFunctionTestCase::~FreeFunctionTestCase() {}
|
||||||
|
|
||||||
|
|
||||||
inline std::string extractClassName( std::string const& classOrQualifiedMethodName ) {
|
inline std::string extractClassName( std::string const& classOrQualifiedMethodName ) {
|
||||||
std::string className = classOrQualifiedMethodName;
|
std::string className = classOrQualifiedMethodName;
|
||||||
if( startsWith( className, '&' ) )
|
if( startsWith( className, '&' ) )
|
||||||
|
@ -5,11 +5,10 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_tostring.h"
|
#include "catch_tostring.h"
|
||||||
#include "catch_interfaces_config.h"
|
#include "catch_interfaces_config.h"
|
||||||
|
#include "catch_context.h"
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
@ -226,5 +225,3 @@ std::string StringMaker<NSObject*>::convert(NSObject* nsObject) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED
|
|
@ -5,10 +5,9 @@
|
|||||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
* 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)
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
*/
|
*/
|
||||||
#ifndef TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED
|
|
||||||
#define TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "catch_version.h"
|
#include "catch_version.h"
|
||||||
|
#include <ostream>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
@ -37,11 +36,9 @@ namespace Catch {
|
|||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Version libraryVersion() {
|
Version libraryVersion() {
|
||||||
static Version version( 2, 0, 0, "develop", 1 );
|
static Version version( 2, 0, 0, "develop", 1 );
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED
|
|
@ -8,6 +8,8 @@
|
|||||||
#ifndef TWOBLUECUBES_CATCH_VERSION_H_INCLUDED
|
#ifndef TWOBLUECUBES_CATCH_VERSION_H_INCLUDED
|
||||||
#define TWOBLUECUBES_CATCH_VERSION_H_INCLUDED
|
#define TWOBLUECUBES_CATCH_VERSION_H_INCLUDED
|
||||||
|
|
||||||
|
#include <iosfwd>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
// Versioning information
|
// Versioning information
|
||||||
@ -32,7 +34,7 @@ namespace Catch {
|
|||||||
void operator=( Version const& );
|
void operator=( Version const& );
|
||||||
};
|
};
|
||||||
|
|
||||||
inline Version libraryVersion();
|
Version libraryVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_VERSION_H_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_VERSION_H_INCLUDED
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#define TWOBLUECUBES_CATCH_REPORTER_BASES_HPP_INCLUDED
|
#define TWOBLUECUBES_CATCH_REPORTER_BASES_HPP_INCLUDED
|
||||||
|
|
||||||
#include "../internal/catch_interfaces_reporter.h"
|
#include "../internal/catch_interfaces_reporter.h"
|
||||||
#include "../internal/catch_errno_guard.hpp"
|
#include "../internal/catch_errno_guard.h"
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <cfloat>
|
#include <cfloat>
|
||||||
|
@ -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_common.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_message.h"
|
|
Loading…
Reference in New Issue
Block a user