mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-01 12:47:11 +01:00 
			
		
		
		
	Reintegrate extra tests
This commit is contained in:
		| @@ -8,6 +8,7 @@ endif() | |||||||
|  |  | ||||||
| option(CATCH_BUILD_TESTING "Build SelfTest project" ON) | option(CATCH_BUILD_TESTING "Build SelfTest project" ON) | ||||||
| option(CATCH_BUILD_EXAMPLES "Build documentation examples" OFF) | option(CATCH_BUILD_EXAMPLES "Build documentation examples" OFF) | ||||||
|  | option(CATCH_BUILD_EXTRA_TESTS "Build extra tests" OFF) | ||||||
|  |  | ||||||
|  |  | ||||||
| # Catch2's build breaks if done in-tree. You probably should not build | # Catch2's build breaks if done in-tree. You probably should not build | ||||||
| @@ -50,9 +51,11 @@ if(CATCH_BUILD_EXAMPLES) | |||||||
|     add_subdirectory(examples) |     add_subdirectory(examples) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|  | if(CATCH_BUILD_EXTRA_TESTS) | ||||||
|  |     add_subdirectory(tests/ExtraTests) | ||||||
|  | endif() | ||||||
|  |  | ||||||
| #option(CATCH_USE_VALGRIND "Perform SelfTests with Valgrind" OFF) | #option(CATCH_USE_VALGRIND "Perform SelfTests with Valgrind" OFF) | ||||||
| #option(CATCH_BUILD_EXTRA_TESTS "Build extra tests" OFF) |  | ||||||
| #option(CATCH_ENABLE_COVERAGE "Generate coverage for codecov.io" OFF) | #option(CATCH_ENABLE_COVERAGE "Generate coverage for codecov.io" OFF) | ||||||
| #option(CATCH_ENABLE_WERROR "Enable all warnings as errors" ON) | #option(CATCH_ENABLE_WERROR "Enable all warnings as errors" ON) | ||||||
| #option(CATCH_INSTALL_DOCS "Install documentation alongside library" ON) | #option(CATCH_INSTALL_DOCS "Install documentation alongside library" ON) | ||||||
|   | |||||||
| @@ -11,6 +11,7 @@ | |||||||
| #include <catch2/catch_interfaces_runner.h> | #include <catch2/catch_interfaces_runner.h> | ||||||
| #include <catch2/catch_interfaces_config.h> | #include <catch2/catch_interfaces_config.h> | ||||||
| #include <catch2/catch_context.h> | #include <catch2/catch_context.h> | ||||||
|  | #include <catch2/catch_enforce.h> | ||||||
| #include <catch2/catch_debugger.h> | #include <catch2/catch_debugger.h> | ||||||
| #include <catch2/catch_interfaces_registry_hub.h> | #include <catch2/catch_interfaces_registry_hub.h> | ||||||
| #include <catch2/catch_capture_matchers.h> | #include <catch2/catch_capture_matchers.h> | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ | |||||||
| #define TWOBLUECUBES_CATCH_INTERFACES_EXCEPTION_H_INCLUDED | #define TWOBLUECUBES_CATCH_INTERFACES_EXCEPTION_H_INCLUDED | ||||||
|  |  | ||||||
| #include <catch2/catch_interfaces_registry_hub.h> | #include <catch2/catch_interfaces_registry_hub.h> | ||||||
|  | #include <catch2/catch_compiler_capabilities.h> | ||||||
|  |  | ||||||
| #if defined(CATCH_CONFIG_DISABLE) | #if defined(CATCH_CONFIG_DISABLE) | ||||||
|     #define INTERNAL_CATCH_TRANSLATE_EXCEPTION_NO_REG( translatorName, signature) \ |     #define INTERNAL_CATCH_TRANSLATE_EXCEPTION_NO_REG( translatorName, signature) \ | ||||||
| @@ -46,6 +47,7 @@ namespace Catch { | |||||||
|             {} |             {} | ||||||
|  |  | ||||||
|             std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const override { |             std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const override { | ||||||
|  | #if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) | ||||||
|                 try { |                 try { | ||||||
|                     if( it == itEnd ) |                     if( it == itEnd ) | ||||||
|                         std::rethrow_exception(std::current_exception()); |                         std::rethrow_exception(std::current_exception()); | ||||||
| @@ -55,6 +57,9 @@ namespace Catch { | |||||||
|                 catch( T& ex ) { |                 catch( T& ex ) { | ||||||
|                     return m_translateFunction( ex ); |                     return m_translateFunction( ex ); | ||||||
|                 } |                 } | ||||||
|  | #else | ||||||
|  |                 return "You should never get here!"; | ||||||
|  | #endif | ||||||
|             } |             } | ||||||
|  |  | ||||||
|         protected: |         protected: | ||||||
|   | |||||||
| @@ -1,8 +1,6 @@ | |||||||
| # | # | ||||||
| # Build extra tests. | # Build extra tests. | ||||||
| # | # | ||||||
| # Requires CATCH_BUILD_EXTRA_TESTS to be defined 'true', see ../CMakeLists.txt. |  | ||||||
| # |  | ||||||
|  |  | ||||||
| cmake_minimum_required( VERSION 3.5 ) | cmake_minimum_required( VERSION 3.5 ) | ||||||
|  |  | ||||||
| @@ -11,13 +9,13 @@ project( Catch2ExtraTests LANGUAGES CXX ) | |||||||
| message( STATUS "Extra tests included" ) | message( STATUS "Extra tests included" ) | ||||||
|  |  | ||||||
| # define folders used: | # define folders used: | ||||||
|  | set( TESTS_DIR   ${CATCH_DIR}/tests/ExtraTests ) | ||||||
| set( TESTS_DIR   ${CATCH_DIR}/projects/ExtraTests ) |  | ||||||
| set( SINGLE_INCLUDE_PATH ${CATCH_DIR}/single_include ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| add_executable(PrefixedMacros ${TESTS_DIR}/X01-PrefixedMacros.cpp) | add_executable(PrefixedMacros ${TESTS_DIR}/X01-PrefixedMacros.cpp) | ||||||
| target_compile_definitions( PrefixedMacros PRIVATE CATCH_CONFIG_PREFIX_ALL ) | target_compile_definitions( PrefixedMacros PRIVATE CATCH_CONFIG_PREFIX_ALL CATCH_CONFIG_RUNTIME_STATIC_REQUIRE ) | ||||||
|  | # Macro configuration does not touch the compiled parts, so we can link | ||||||
|  | # it against the main library | ||||||
|  | target_link_libraries( PrefixedMacros Catch2 ) | ||||||
|  |  | ||||||
| add_test(NAME CATCH_CONFIG_PREFIX_ALL COMMAND PrefixedMacros -s) | add_test(NAME CATCH_CONFIG_PREFIX_ALL COMMAND PrefixedMacros -s) | ||||||
| set_tests_properties( | set_tests_properties( | ||||||
| @@ -30,8 +28,12 @@ set_tests_properties( | |||||||
|     " REQUIRE; REQUIRE_FALSE; REQUIRE_THROWS; REQUIRE_THROWS_AS; REQUIRE_THROWS_WITH; REQUIRE_THROWS_MATCHES; REQUIRE_NOTHROW; CHECK; CHECK_FALSE; CHECKED_IF; CHECKED_ELSE; CHECK_NOFAIL; CHECK_THROWS; CHECK_THROWS_AS; CHECK_THROWS_WITH; CHECK_THROWS_MATCHES; CHECK_NOTHROW; REQUIRE_THAT; CHECK_THAT" |     " REQUIRE; REQUIRE_FALSE; REQUIRE_THROWS; REQUIRE_THROWS_AS; REQUIRE_THROWS_WITH; REQUIRE_THROWS_MATCHES; REQUIRE_NOTHROW; CHECK; CHECK_FALSE; CHECKED_IF; CHECKED_ELSE; CHECK_NOFAIL; CHECK_THROWS; CHECK_THROWS_AS; CHECK_THROWS_WITH; CHECK_THROWS_MATCHES; CHECK_NOTHROW; REQUIRE_THAT; CHECK_THAT" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| add_executable(DisabledMacros ${TESTS_DIR}/X02-DisabledMacros.cpp) | add_executable(DisabledMacros ${TESTS_DIR}/X02-DisabledMacros.cpp) | ||||||
| target_compile_definitions( DisabledMacros PRIVATE CATCH_CONFIG_DISABLE ) | target_compile_definitions( DisabledMacros PRIVATE CATCH_CONFIG_DISABLE ) | ||||||
|  | # Macro configuration does not touch the compiled parts, so we can link | ||||||
|  | # it against the main library | ||||||
|  | target_link_libraries( DisabledMacros Catch2 ) | ||||||
|  |  | ||||||
| add_test(NAME CATCH_CONFIG_DISABLE-1 COMMAND DisabledMacros -s) | add_test(NAME CATCH_CONFIG_DISABLE-1 COMMAND DisabledMacros -s) | ||||||
| set_tests_properties( | set_tests_properties( | ||||||
| @@ -47,19 +49,19 @@ set_tests_properties( | |||||||
|     PASS_REGULAR_EXPRESSION "0 test cases" |     PASS_REGULAR_EXPRESSION "0 test cases" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| add_executable( DisabledExceptions-DefaultHandler ${TESTS_DIR}/X03-DisabledExceptions-DefaultHandler.cpp ) | add_executable( DisabledExceptions-DefaultHandler ${TESTS_DIR}/X03-DisabledExceptions-DefaultHandler.cpp ) | ||||||
| add_executable( DisabledExceptions-CustomHandler ${TESTS_DIR}/X04-DisabledExceptions-CustomHandler.cpp ) | add_executable( DisabledExceptions-CustomHandler ${TESTS_DIR}/X04-DisabledExceptions-CustomHandler.cpp ) | ||||||
|  |  | ||||||
| foreach(target DisabledExceptions-DefaultHandler DisabledExceptions-CustomHandler) | foreach(target DisabledExceptions-DefaultHandler DisabledExceptions-CustomHandler) | ||||||
| target_compile_options( ${target} |   StampOutLibrary(${target}) | ||||||
|   PRIVATE |   target_compile_options( Catch2_${target} | ||||||
|     $<$<CXX_COMPILER_ID:MSVC>:/EHs-c-;/D_HAS_EXCEPTIONS=0> |     PUBLIC | ||||||
|     $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:AppleClang>>:-fno-exceptions> |       $<$<CXX_COMPILER_ID:MSVC>:/EHs-c-;/D_HAS_EXCEPTIONS=0> | ||||||
| #    $<$<CXX_COMPILER_ID:Clang>:-fno-exceptions> |       $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:AppleClang>>:-fno-exceptions> | ||||||
| #    $<$<CXX_COMPILER_ID:GNU>:-fno-exceptions> |   ) | ||||||
| ) |   target_link_libraries(${target} Catch2_${target}) | ||||||
| endforeach() | endforeach() | ||||||
|  | target_compile_definitions( Catch2_DisabledExceptions-CustomHandler PUBLIC CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER ) | ||||||
|  |  | ||||||
|  |  | ||||||
| add_test(NAME CATCH_CONFIG_DISABLE_EXCEPTIONS-1 COMMAND DisabledExceptions-DefaultHandler "Tests that run") | add_test(NAME CATCH_CONFIG_DISABLE_EXCEPTIONS-1 COMMAND DisabledExceptions-DefaultHandler "Tests that run") | ||||||
| @@ -96,6 +98,7 @@ set_tests_properties( | |||||||
|  |  | ||||||
| add_executable(FallbackStringifier ${TESTS_DIR}/X10-FallbackStringifier.cpp) | add_executable(FallbackStringifier ${TESTS_DIR}/X10-FallbackStringifier.cpp) | ||||||
| target_compile_definitions( FallbackStringifier PRIVATE CATCH_CONFIG_FALLBACK_STRINGIFIER=fallbackStringifier ) | target_compile_definitions( FallbackStringifier PRIVATE CATCH_CONFIG_FALLBACK_STRINGIFIER=fallbackStringifier ) | ||||||
|  | target_link_libraries( FallbackStringifier Catch2 ) | ||||||
|  |  | ||||||
| add_test(NAME FallbackStringifier COMMAND FallbackStringifier -r compact -s) | add_test(NAME FallbackStringifier COMMAND FallbackStringifier -r compact -s) | ||||||
| set_tests_properties( | set_tests_properties( | ||||||
| @@ -107,6 +110,7 @@ set_tests_properties( | |||||||
|  |  | ||||||
| add_executable(DisableStringification ${TESTS_DIR}/X11-DisableStringification.cpp) | add_executable(DisableStringification ${TESTS_DIR}/X11-DisableStringification.cpp) | ||||||
| target_compile_definitions( DisableStringification PRIVATE CATCH_CONFIG_DISABLE_STRINGIFICATION ) | target_compile_definitions( DisableStringification PRIVATE CATCH_CONFIG_DISABLE_STRINGIFICATION ) | ||||||
|  | target_link_libraries(DisableStringification Catch2) | ||||||
| add_test(NAME CATCH_CONFIG_DISABLE_STRINGIFICATION COMMAND DisableStringification -r compact -s) | add_test(NAME CATCH_CONFIG_DISABLE_STRINGIFICATION COMMAND DisableStringification -r compact -s) | ||||||
| set_tests_properties( | set_tests_properties( | ||||||
|     CATCH_CONFIG_DISABLE_STRINGIFICATION |     CATCH_CONFIG_DISABLE_STRINGIFICATION | ||||||
| @@ -117,7 +121,9 @@ set_tests_properties( | |||||||
|  |  | ||||||
|  |  | ||||||
| add_executable(BenchmarkingMacros ${TESTS_DIR}/X20-BenchmarkingMacros.cpp) | add_executable(BenchmarkingMacros ${TESTS_DIR}/X20-BenchmarkingMacros.cpp) | ||||||
| target_compile_definitions( BenchmarkingMacros PRIVATE CATCH_CONFIG_ENABLE_BENCHMARKING ) | StampOutLibrary(BenchmarkingMacros) | ||||||
|  | target_compile_definitions( Catch2_BenchmarkingMacros PUBLIC CATCH_CONFIG_ENABLE_BENCHMARKING ) | ||||||
|  | target_link_libraries( BenchmarkingMacros Catch2_BenchmarkingMacros ) | ||||||
|  |  | ||||||
| add_test(NAME BenchmarkingMacros COMMAND BenchmarkingMacros -r console -s) | add_test(NAME BenchmarkingMacros COMMAND BenchmarkingMacros -r console -s) | ||||||
| set_tests_properties( | set_tests_properties( | ||||||
| @@ -133,7 +139,7 @@ if (MSVC) | |||||||
|     set_property( TARGET WindowsHeader PROPERTY CXX_STANDARD 14 ) |     set_property( TARGET WindowsHeader PROPERTY CXX_STANDARD 14 ) | ||||||
|     set_property( TARGET WindowsHeader PROPERTY CXX_STANDARD_REQUIRED ON ) |     set_property( TARGET WindowsHeader PROPERTY CXX_STANDARD_REQUIRED ON ) | ||||||
|     set_property( TARGET WindowsHeader PROPERTY CXX_EXTENSIONS OFF ) |     set_property( TARGET WindowsHeader PROPERTY CXX_EXTENSIONS OFF ) | ||||||
|     target_include_directories( WindowsHeader PRIVATE ${SINGLE_INCLUDE_PATH} ) |     target_link_libraries( WindowsHeader Catch2 ) | ||||||
|     add_test(NAME WindowsHeader COMMAND WindowsHeader -r compact) |     add_test(NAME WindowsHeader COMMAND WindowsHeader -r compact) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
| @@ -152,7 +158,4 @@ foreach( test ${EXTRA_TEST_BINARIES} ) | |||||||
|     set_property( TARGET ${test} PROPERTY CXX_STANDARD 14 ) |     set_property( TARGET ${test} PROPERTY CXX_STANDARD 14 ) | ||||||
|     set_property( TARGET ${test} PROPERTY CXX_STANDARD_REQUIRED ON ) |     set_property( TARGET ${test} PROPERTY CXX_STANDARD_REQUIRED ON ) | ||||||
|     set_property( TARGET ${test} PROPERTY CXX_EXTENSIONS OFF ) |     set_property( TARGET ${test} PROPERTY CXX_EXTENSIONS OFF ) | ||||||
|     target_include_directories( ${test} PRIVATE ${SINGLE_INCLUDE_PATH} ) |  | ||||||
| endforeach() | endforeach() | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,10 +1,9 @@ | |||||||
| // X11-DisableStringification.cpp | // X11-DisableStringification.cpp | ||||||
| // Test that Catch's prefixed macros compile and run properly. | // Test that Catch's prefixed macros compile and run properly. | ||||||
|  |  | ||||||
| #define CATCH_CONFIG_MAIN | #include <catch2/catch_default_main.hpp> | ||||||
| // This won't provide full coverage, but it might be worth checking | // This won't provide full coverage, but it might be worth checking | ||||||
| // the other branch as well | // the other branch as well | ||||||
| #define CATCH_CONFIG_RUNTIME_STATIC_REQUIRE |  | ||||||
| #include <catch2/catch.hpp> | #include <catch2/catch.hpp> | ||||||
|  |  | ||||||
| #include <type_traits> | #include <type_traits> | ||||||
|   | |||||||
| @@ -2,14 +2,9 @@ | |||||||
| // Test that CATCH_CONFIG_DISABLE turns off TEST_CASE autoregistration | // Test that CATCH_CONFIG_DISABLE turns off TEST_CASE autoregistration | ||||||
| // and expressions in assertion macros are not run. | // and expressions in assertion macros are not run. | ||||||
|  |  | ||||||
| #define CATCH_CONFIG_MAIN | #include <catch2/catch_default_main.hpp> | ||||||
| #include <catch2/catch.hpp> | #include <catch2/catch.hpp> | ||||||
|  |  | ||||||
|  |  | ||||||
| // CATCH_CONFIG_DISABLE also prevents reporter registration. |  | ||||||
| // We need to manually register at least one reporter for our tests |  | ||||||
| static Catch::ReporterRegistrar<Catch::ConsoleReporter> temporary( "console" ); |  | ||||||
|  |  | ||||||
| #include <iostream> | #include <iostream> | ||||||
|  |  | ||||||
| struct foo { | struct foo { | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| #define CATCH_CONFIG_MAIN | #include <catch2/catch_default_main.hpp> | ||||||
| #include <catch2/catch.hpp> | #include <catch2/catch.hpp> | ||||||
|  |  | ||||||
| TEST_CASE("Tests that run") { | TEST_CASE("Tests that run") { | ||||||
|   | |||||||
| @@ -1,6 +1,4 @@ | |||||||
| #define CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER | #include <catch2/catch_default_main.hpp> | ||||||
|  |  | ||||||
| #define CATCH_CONFIG_MAIN |  | ||||||
| #include <catch2/catch.hpp> | #include <catch2/catch.hpp> | ||||||
|  |  | ||||||
| namespace Catch { | namespace Catch { | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ std::string fallbackStringifier(T const&) { | |||||||
|     return "{ !!! }"; |     return "{ !!! }"; | ||||||
| } | } | ||||||
|  |  | ||||||
| #define CATCH_CONFIG_MAIN | #include <catch2/catch_default_main.hpp> | ||||||
| #include <catch2/catch.hpp> | #include <catch2/catch.hpp> | ||||||
|  |  | ||||||
| struct foo { | struct foo { | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
| // and preprocessor token pasting. In other words, hopefully this test | // and preprocessor token pasting. In other words, hopefully this test | ||||||
| // will be deleted soon :-) | // will be deleted soon :-) | ||||||
|  |  | ||||||
| #define CATCH_CONFIG_MAIN | #include <catch2/catch_default_main.hpp> | ||||||
| #include <catch2/catch.hpp> | #include <catch2/catch.hpp> | ||||||
|  |  | ||||||
| struct Hidden {}; | struct Hidden {}; | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| // X20-BenchmarkingMacros.cpp | // X20-BenchmarkingMacros.cpp | ||||||
| // Test that the benchmarking support macros compile properly with the single header | // Test that the benchmarking support macros compile properly with the single header | ||||||
|  |  | ||||||
| #define CATCH_CONFIG_MAIN | #include <catch2/catch_default_main.hpp> | ||||||
| #include <catch2/catch.hpp> | #include <catch2/catch.hpp> | ||||||
|  |  | ||||||
| namespace { | namespace { | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
| // wrong. | // wrong. | ||||||
|  |  | ||||||
| #include <windows.h> | #include <windows.h> | ||||||
| #define CATCH_CONFIG_MAIN | #include <catch2/catch_default_main.hpp> | ||||||
| #include <catch2/catch.hpp> | #include <catch2/catch.hpp> | ||||||
|  |  | ||||||
| TEST_CASE("Catch2 did survive compilation with windows.h", "[compile-test]") { | TEST_CASE("Catch2 did survive compilation with windows.h", "[compile-test]") { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský