mirror of
https://github.com/catchorg/Catch2.git
synced 2025-01-15 14:48:00 +00:00
Compare commits
2 Commits
70ef2f7f12
...
8b42acc328
Author | SHA1 | Date | |
---|---|---|---|
|
8b42acc328 | ||
|
29b441949c |
@ -8,6 +8,7 @@ endif()
|
||||
|
||||
option(CATCH_BUILD_TESTING "Build SelfTest project" ON)
|
||||
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
|
||||
@ -34,7 +35,8 @@ set(SELF_TEST_DIR ${CATCH_DIR}/tests/SelfTest)
|
||||
set(BENCHMARK_DIR ${CATCH_DIR}/tests/Benchmark)
|
||||
set(EXAMPLES_DIR ${CATCH_DIR}/examples)
|
||||
|
||||
add_subdirectory(src)
|
||||
# We need to bring-in the variables defined there to this scope
|
||||
include(src/CMakeLists.txt)
|
||||
|
||||
# Build tests only if requested
|
||||
if (BUILD_TESTING AND CATCH_BUILD_TESTING AND NOT_SUBPROJECT)
|
||||
@ -49,9 +51,11 @@ if(CATCH_BUILD_EXAMPLES)
|
||||
add_subdirectory(examples)
|
||||
endif()
|
||||
|
||||
if(CATCH_BUILD_EXTRA_TESTS)
|
||||
add_subdirectory(tests/ExtraTests)
|
||||
endif()
|
||||
|
||||
#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_WERROR "Enable all warnings as errors" ON)
|
||||
#option(CATCH_INSTALL_DOCS "Install documentation alongside library" ON)
|
||||
|
@ -6,10 +6,12 @@
|
||||
// there is no important difference between having `std::cerr` buffered
|
||||
// or unbuffered.
|
||||
|
||||
#define CATCH_CONFIG_NOSTDOUT
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include <catch2/catch_default_main.hpp>
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
#include <sstream>
|
||||
#include <cstdio>
|
||||
|
||||
class out_buff : public std::stringbuf {
|
||||
std::FILE* m_stream;
|
||||
|
@ -17,8 +17,11 @@ add_executable( 020-MultiFile
|
||||
020-TestCase-2.cpp
|
||||
)
|
||||
|
||||
# TODO: How to handle differently configured libraries?
|
||||
# Needed in 231-Cfg-OutputStreams
|
||||
add_executable(231-Cfg_OutputStreams
|
||||
231-Cfg-OutputStreams.cpp
|
||||
)
|
||||
StampOutLibrary(231-Cfg_OutputStreams)
|
||||
target_compile_definitions(Catch2_231-Cfg_OutputStreams PUBLIC CATCH_CONFIG_NOSTDOUT)
|
||||
|
||||
# These examples use the standard separate compilation
|
||||
set( SOURCES_IDIOMATIC_EXAMPLES
|
||||
|
@ -229,3 +229,20 @@ target_include_directories(Catch2
|
||||
$<BUILD_INTERFACE:${SOURCES_DIR}/..>
|
||||
$<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()
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <catch2/catch_interfaces_runner.h>
|
||||
#include <catch2/catch_interfaces_config.h>
|
||||
#include <catch2/catch_context.h>
|
||||
#include <catch2/catch_enforce.h>
|
||||
#include <catch2/catch_debugger.h>
|
||||
#include <catch2/catch_interfaces_registry_hub.h>
|
||||
#include <catch2/catch_capture_matchers.h>
|
||||
|
@ -9,6 +9,7 @@
|
||||
#define TWOBLUECUBES_CATCH_INTERFACES_EXCEPTION_H_INCLUDED
|
||||
|
||||
#include <catch2/catch_interfaces_registry_hub.h>
|
||||
#include <catch2/catch_compiler_capabilities.h>
|
||||
|
||||
#if defined(CATCH_CONFIG_DISABLE)
|
||||
#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 {
|
||||
#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
|
||||
try {
|
||||
if( it == itEnd )
|
||||
std::rethrow_exception(std::current_exception());
|
||||
@ -55,6 +57,9 @@ namespace Catch {
|
||||
catch( T& ex ) {
|
||||
return m_translateFunction( ex );
|
||||
}
|
||||
#else
|
||||
return "You should never get here!";
|
||||
#endif
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -1,8 +1,6 @@
|
||||
#
|
||||
# Build extra tests.
|
||||
#
|
||||
# Requires CATCH_BUILD_EXTRA_TESTS to be defined 'true', see ../CMakeLists.txt.
|
||||
#
|
||||
|
||||
cmake_minimum_required( VERSION 3.5 )
|
||||
|
||||
@ -11,13 +9,13 @@ project( Catch2ExtraTests LANGUAGES CXX )
|
||||
message( STATUS "Extra tests included" )
|
||||
|
||||
# define folders used:
|
||||
|
||||
set( TESTS_DIR ${CATCH_DIR}/projects/ExtraTests )
|
||||
set( SINGLE_INCLUDE_PATH ${CATCH_DIR}/single_include )
|
||||
|
||||
set( TESTS_DIR ${CATCH_DIR}/tests/ExtraTests )
|
||||
|
||||
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)
|
||||
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"
|
||||
)
|
||||
|
||||
|
||||
add_executable(DisabledMacros ${TESTS_DIR}/X02-DisabledMacros.cpp)
|
||||
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)
|
||||
set_tests_properties(
|
||||
@ -47,19 +49,19 @@ set_tests_properties(
|
||||
PASS_REGULAR_EXPRESSION "0 test cases"
|
||||
)
|
||||
|
||||
|
||||
add_executable( DisabledExceptions-DefaultHandler ${TESTS_DIR}/X03-DisabledExceptions-DefaultHandler.cpp )
|
||||
add_executable( DisabledExceptions-CustomHandler ${TESTS_DIR}/X04-DisabledExceptions-CustomHandler.cpp )
|
||||
|
||||
foreach(target DisabledExceptions-DefaultHandler DisabledExceptions-CustomHandler)
|
||||
target_compile_options( ${target}
|
||||
PRIVATE
|
||||
$<$<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>
|
||||
# $<$<CXX_COMPILER_ID:Clang>:-fno-exceptions>
|
||||
# $<$<CXX_COMPILER_ID:GNU>:-fno-exceptions>
|
||||
)
|
||||
StampOutLibrary(${target})
|
||||
target_compile_options( Catch2_${target}
|
||||
PUBLIC
|
||||
$<$<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>
|
||||
)
|
||||
target_link_libraries(${target} Catch2_${target})
|
||||
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")
|
||||
@ -96,6 +98,7 @@ set_tests_properties(
|
||||
|
||||
add_executable(FallbackStringifier ${TESTS_DIR}/X10-FallbackStringifier.cpp)
|
||||
target_compile_definitions( FallbackStringifier PRIVATE CATCH_CONFIG_FALLBACK_STRINGIFIER=fallbackStringifier )
|
||||
target_link_libraries( FallbackStringifier Catch2 )
|
||||
|
||||
add_test(NAME FallbackStringifier COMMAND FallbackStringifier -r compact -s)
|
||||
set_tests_properties(
|
||||
@ -107,6 +110,7 @@ set_tests_properties(
|
||||
|
||||
add_executable(DisableStringification ${TESTS_DIR}/X11-DisableStringification.cpp)
|
||||
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)
|
||||
set_tests_properties(
|
||||
CATCH_CONFIG_DISABLE_STRINGIFICATION
|
||||
@ -117,7 +121,9 @@ set_tests_properties(
|
||||
|
||||
|
||||
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)
|
||||
set_tests_properties(
|
||||
@ -133,7 +139,7 @@ if (MSVC)
|
||||
set_property( TARGET WindowsHeader PROPERTY CXX_STANDARD 14 )
|
||||
set_property( TARGET WindowsHeader PROPERTY CXX_STANDARD_REQUIRED ON )
|
||||
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)
|
||||
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_REQUIRED ON )
|
||||
set_property( TARGET ${test} PROPERTY CXX_EXTENSIONS OFF )
|
||||
target_include_directories( ${test} PRIVATE ${SINGLE_INCLUDE_PATH} )
|
||||
endforeach()
|
||||
|
||||
|
||||
|
@ -1,10 +1,9 @@
|
||||
// X11-DisableStringification.cpp
|
||||
// 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
|
||||
// the other branch as well
|
||||
#define CATCH_CONFIG_RUNTIME_STATIC_REQUIRE
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
#include <type_traits>
|
||||
|
@ -2,14 +2,9 @@
|
||||
// Test that CATCH_CONFIG_DISABLE turns off TEST_CASE autoregistration
|
||||
// and expressions in assertion macros are not run.
|
||||
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include <catch2/catch_default_main.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>
|
||||
|
||||
struct foo {
|
||||
|
@ -1,4 +1,4 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include <catch2/catch_default_main.hpp>
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
TEST_CASE("Tests that run") {
|
||||
|
@ -1,6 +1,4 @@
|
||||
#define CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER
|
||||
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include <catch2/catch_default_main.hpp>
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
namespace Catch {
|
||||
|
@ -9,7 +9,7 @@ std::string fallbackStringifier(T const&) {
|
||||
return "{ !!! }";
|
||||
}
|
||||
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include <catch2/catch_default_main.hpp>
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
struct foo {
|
||||
|
@ -4,7 +4,7 @@
|
||||
// and preprocessor token pasting. In other words, hopefully this test
|
||||
// will be deleted soon :-)
|
||||
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include <catch2/catch_default_main.hpp>
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
struct Hidden {};
|
||||
|
@ -1,7 +1,7 @@
|
||||
// X20-BenchmarkingMacros.cpp
|
||||
// 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>
|
||||
|
||||
namespace {
|
||||
|
@ -4,7 +4,7 @@
|
||||
// wrong.
|
||||
|
||||
#include <windows.h>
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include <catch2/catch_default_main.hpp>
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
TEST_CASE("Catch2 did survive compilation with windows.h", "[compile-test]") {
|
||||
|
Loading…
Reference in New Issue
Block a user