1
0
mirror of https://github.com/catchorg/Catch2.git synced 2025-04-29 04:03:51 +00:00

Compare commits

..

No commits in common. "8b42acc328fc7b6c4526e649a30c4b3c198c974d" and "70ef2f7f12c2c62714a2e926679172142ea150ff" have entirely different histories.

15 changed files with 42 additions and 69 deletions

View File

@ -8,7 +8,6 @@ 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
@ -35,8 +34,7 @@ set(SELF_TEST_DIR ${CATCH_DIR}/tests/SelfTest)
set(BENCHMARK_DIR ${CATCH_DIR}/tests/Benchmark) set(BENCHMARK_DIR ${CATCH_DIR}/tests/Benchmark)
set(EXAMPLES_DIR ${CATCH_DIR}/examples) set(EXAMPLES_DIR ${CATCH_DIR}/examples)
# We need to bring-in the variables defined there to this scope add_subdirectory(src)
include(src/CMakeLists.txt)
# Build tests only if requested # Build tests only if requested
if (BUILD_TESTING AND CATCH_BUILD_TESTING AND NOT_SUBPROJECT) if (BUILD_TESTING AND CATCH_BUILD_TESTING AND NOT_SUBPROJECT)
@ -51,11 +49,9 @@ 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)

View File

@ -6,12 +6,10 @@
// there is no important difference between having `std::cerr` buffered // there is no important difference between having `std::cerr` buffered
// or unbuffered. // or unbuffered.
#include <catch2/catch_default_main.hpp> #define CATCH_CONFIG_NOSTDOUT
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp> #include <catch2/catch.hpp>
#include <sstream>
#include <cstdio>
class out_buff : public std::stringbuf { class out_buff : public std::stringbuf {
std::FILE* m_stream; std::FILE* m_stream;

View File

@ -17,11 +17,8 @@ add_executable( 020-MultiFile
020-TestCase-2.cpp 020-TestCase-2.cpp
) )
add_executable(231-Cfg_OutputStreams # TODO: How to handle differently configured libraries?
231-Cfg-OutputStreams.cpp # Needed in 231-Cfg-OutputStreams
)
StampOutLibrary(231-Cfg_OutputStreams)
target_compile_definitions(Catch2_231-Cfg_OutputStreams PUBLIC CATCH_CONFIG_NOSTDOUT)
# These examples use the standard separate compilation # These examples use the standard separate compilation
set( SOURCES_IDIOMATIC_EXAMPLES set( SOURCES_IDIOMATIC_EXAMPLES

View File

@ -229,20 +229,3 @@ target_include_directories(Catch2
$<BUILD_INTERFACE:${SOURCES_DIR}/..> $<BUILD_INTERFACE:${SOURCES_DIR}/..>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
) )
function(StampOutLibrary target)
add_library(Catch2_${target} STATIC
${REPORTER_FILES}
${INTERNAL_FILES}
${BENCHMARK_HEADERS}
${BENCHMARK_SOURCES}
)
target_include_directories(Catch2_${target}
PUBLIC
$<BUILD_INTERFACE:${SOURCES_DIR}/..>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_link_libraries(${target} Catch2_${target})
endfunction()

View File

@ -11,7 +11,6 @@
#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>

View File

@ -9,7 +9,6 @@
#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) \
@ -47,7 +46,6 @@ 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());
@ -57,9 +55,6 @@ 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:

View File

@ -1,6 +1,8 @@
# #
# 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 )
@ -9,13 +11,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 CATCH_CONFIG_RUNTIME_STATIC_REQUIRE ) target_compile_definitions( PrefixedMacros PRIVATE CATCH_CONFIG_PREFIX_ALL )
# 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(
@ -28,12 +30,8 @@ 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(
@ -49,19 +47,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)
StampOutLibrary(${target}) target_compile_options( ${target}
target_compile_options( Catch2_${target} PRIVATE
PUBLIC $<$<CXX_COMPILER_ID:MSVC>:/EHs-c-;/D_HAS_EXCEPTIONS=0>
$<$<CXX_COMPILER_ID:MSVC>:/EHs-c-;/D_HAS_EXCEPTIONS=0> $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:AppleClang>>:-fno-exceptions>
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:AppleClang>>:-fno-exceptions> # $<$<CXX_COMPILER_ID:Clang>:-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")
@ -98,7 +96,6 @@ 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(
@ -110,7 +107,6 @@ 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
@ -121,9 +117,7 @@ set_tests_properties(
add_executable(BenchmarkingMacros ${TESTS_DIR}/X20-BenchmarkingMacros.cpp) add_executable(BenchmarkingMacros ${TESTS_DIR}/X20-BenchmarkingMacros.cpp)
StampOutLibrary(BenchmarkingMacros) target_compile_definitions( BenchmarkingMacros PRIVATE CATCH_CONFIG_ENABLE_BENCHMARKING )
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(
@ -139,7 +133,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_link_libraries( WindowsHeader Catch2 ) target_include_directories( WindowsHeader PRIVATE ${SINGLE_INCLUDE_PATH} )
add_test(NAME WindowsHeader COMMAND WindowsHeader -r compact) add_test(NAME WindowsHeader COMMAND WindowsHeader -r compact)
endif() endif()
@ -158,4 +152,7 @@ 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()

View File

@ -1,9 +1,10 @@
// 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.
#include <catch2/catch_default_main.hpp> #define CATCH_CONFIG_MAIN
// 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>

View File

@ -2,9 +2,14 @@
// 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.
#include <catch2/catch_default_main.hpp> #define CATCH_CONFIG_MAIN
#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 {

View File

@ -1,4 +1,4 @@
#include <catch2/catch_default_main.hpp> #define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp> #include <catch2/catch.hpp>
TEST_CASE("Tests that run") { TEST_CASE("Tests that run") {

View File

@ -1,4 +1,6 @@
#include <catch2/catch_default_main.hpp> #define CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp> #include <catch2/catch.hpp>
namespace Catch { namespace Catch {

View File

@ -9,7 +9,7 @@ std::string fallbackStringifier(T const&) {
return "{ !!! }"; return "{ !!! }";
} }
#include <catch2/catch_default_main.hpp> #define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp> #include <catch2/catch.hpp>
struct foo { struct foo {

View File

@ -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 :-)
#include <catch2/catch_default_main.hpp> #define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp> #include <catch2/catch.hpp>
struct Hidden {}; struct Hidden {};

View File

@ -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
#include <catch2/catch_default_main.hpp> #define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp> #include <catch2/catch.hpp>
namespace { namespace {

View File

@ -4,7 +4,7 @@
// wrong. // wrong.
#include <windows.h> #include <windows.h>
#include <catch2/catch_default_main.hpp> #define CATCH_CONFIG_MAIN
#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]") {