mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 12:17:11 +01:00 
			
		
		
		
	Started work on splitting out .cpp files from header files
This commit is contained in:
		| @@ -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" | ||||||
| @@ -88,8 +89,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" |  | ||||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský