Fix formatting of CMake files

2 spaces seems to be the more common indentation level so that's what
I unified around.
This commit is contained in:
Chris Thrasher 2025-04-07 22:09:59 -06:00
parent 6aac11e17d
commit 8cfca70ae8
No known key found for this signature in database
GPG Key ID: 56FB686C9DFC8E2C
16 changed files with 676 additions and 779 deletions

View File

@ -1,6 +1,5 @@
@PACKAGE_INIT@
# Avoid repeatedly including the targets
if(NOT TARGET Catch2::Catch2)
# Provide path for scripts

View File

@ -14,7 +14,6 @@
#
# For detailed docs look into docs/configuration.md
macro(AddOverridableConfigOption OptionBaseName)
option(CATCH_CONFIG_${OptionBaseName} "Read docs/configuration.md for details" OFF)
option(CATCH_CONFIG_NO_${OptionBaseName} "Read docs/configuration.md for details" OFF)

View File

@ -8,10 +8,10 @@
include(CheckCXXCompilerFlag)
function(add_cxx_flag_if_supported_to_targets flagname targets)
string(MAKE_C_IDENTIFIER ${flagname} flag_identifier )
string(MAKE_C_IDENTIFIER ${flagname} flag_identifier)
check_cxx_compiler_flag("${flagname}" HAVE_FLAG_${flag_identifier})
if (HAVE_FLAG_${flag_identifier})
if(HAVE_FLAG_${flag_identifier})
foreach(target ${targets})
target_compile_options(${target} PRIVATE ${flagname})
endforeach()
@ -24,25 +24,24 @@ function(add_warnings_to_targets targets)
LIST(LENGTH targets TARGETS_LEN)
# For now we just assume 2 possibilities: msvc and msvc-like compilers,
# and other.
if (MSVC)
if(MSVC)
foreach(target ${targets})
# Force MSVC to consider everything as encoded in utf-8
target_compile_options( ${target} PRIVATE /utf-8 )
target_compile_options(${target} PRIVATE /utf-8)
# Enable Werror equivalent
if (CATCH_ENABLE_WERROR)
target_compile_options( ${target} PRIVATE /WX )
if(CATCH_ENABLE_WERROR)
target_compile_options(${target} PRIVATE /WX)
endif()
# MSVC is currently handled specially
if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
STRING(REGEX REPLACE "/W[0-9]" "/W4" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # override default warning level
target_compile_options( ${target} PRIVATE /w44265 /w44061 /w44062 /w45038 )
target_compile_options(${target} PRIVATE /w44265 /w44061 /w44062 /w45038)
endif()
endforeach()
endif()
if (NOT MSVC)
if(NOT MSVC)
set(CHECKED_WARNING_FLAGS
"-Wabsolute-value"
"-Wall"
@ -103,10 +102,10 @@ function(add_warnings_to_targets targets)
add_cxx_flag_if_supported_to_targets(${warning} "${targets}")
endforeach()
if (CATCH_ENABLE_WERROR)
if(CATCH_ENABLE_WERROR)
foreach(target ${targets})
# Enable Werror equivalent
target_compile_options( ${target} PRIVATE -Werror )
target_compile_options(${target} PRIVATE -Werror)
endforeach()
endif()
endif()

View File

@ -26,11 +26,10 @@ cmake_dependent_option(CATCH_BUILD_SURROGATES "Enable generating and building su
cmake_dependent_option(CATCH_ENABLE_CONFIGURE_TESTS "Enable CMake configuration tests. WARNING: VERY EXPENSIVE" OFF "CATCH_DEVELOPMENT_BUILD" OFF)
cmake_dependent_option(CATCH_ENABLE_CMAKE_HELPER_TESTS "Enable CMake helper tests. WARNING: VERY EXPENSIVE" OFF "CATCH_DEVELOPMENT_BUILD" OFF)
# Catch2's build breaks if done in-tree. You probably should not build
# things in tree anyway, but we can allow projects that include Catch2
# as a subproject to build in-tree as long as it is not in our tree.
if (CMAKE_BINARY_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
if(CMAKE_BINARY_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt")
endif()
@ -46,7 +45,7 @@ project(Catch2
# Then we also add path that we use to configure the project, but is of
# no use to top level projects.
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/extras")
if (NOT NOT_SUBPROJECT)
if(NOT NOT_SUBPROJECT)
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" PARENT_SCOPE)
endif()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake")
@ -70,7 +69,6 @@ if(CATCH_TEST_USE_WMAIN)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ENTRY:wmainCRTStartup")
endif()
# Basic paths
set(CATCH_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(SOURCES_DIR ${CATCH_DIR}/src/catch2)
@ -80,9 +78,9 @@ set(SELF_TEST_DIR ${CATCH_DIR}/tests/SelfTest)
add_subdirectory(src)
# 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)
find_package(PythonInterp 3 REQUIRED)
if (NOT PYTHONINTERP_FOUND)
if(NOT PYTHONINTERP_FOUND)
message(FATAL_ERROR "Python not found, but required for tests")
endif()
set(CMAKE_FOLDER "tests")
@ -104,14 +102,14 @@ if(CATCH_BUILD_FUZZERS)
add_subdirectory(fuzzing)
endif()
if (CATCH_DEVELOPMENT_BUILD)
if(CATCH_DEVELOPMENT_BUILD)
add_warnings_to_targets("${CATCH_WARNING_TARGETS}")
endif()
# Only perform the installation steps when Catch is not being used as
# a subproject via `add_subdirectory`, or the destinations will break,
# see https://github.com/catchorg/Catch2/issues/1373
if (NOT_SUBPROJECT)
if(NOT_SUBPROJECT)
configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/CMake/Catch2Config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/Catch2Config.cmake
@ -192,7 +190,5 @@ if (NOT_SUBPROJECT)
set(CPACK_PACKAGE_CONTACT "https://github.com/catchorg/Catch2/")
include( CPack )
include(CPack)
endif()

View File

@ -1,18 +1,16 @@
cmake_minimum_required( VERSION 3.16 )
project( Catch2Examples LANGUAGES CXX )
message( STATUS "Examples included" )
cmake_minimum_required(VERSION 3.16)
project(Catch2Examples LANGUAGES CXX)
message(STATUS "Examples included")
# Some one-offs first:
# 1) Tests and main in one file
add_executable( 010-TestCase
add_executable(010-TestCase
010-TestCase.cpp
)
# 2) Tests and main across two files
add_executable( 020-MultiFile
add_executable(020-MultiFile
020-TestCase-1.cpp
020-TestCase-2.cpp
)
@ -24,7 +22,7 @@ target_link_libraries(231-Cfg_OutputStreams Catch2_buildall_interface)
target_compile_definitions(231-Cfg_OutputStreams PUBLIC CATCH_CONFIG_NOSTDOUT)
# These examples use the standard separate compilation
set( SOURCES_IDIOMATIC_EXAMPLES
set(SOURCES_IDIOMATIC_EXAMPLES
030-Asn-Require-Check.cpp
100-Fix-Section.cpp
110-Fix-ClassFixture.cpp
@ -39,12 +37,11 @@ set( SOURCES_IDIOMATIC_EXAMPLES
311-Gen-CustomCapture.cpp
)
string( REPLACE ".cpp" "" BASENAMES_IDIOMATIC_EXAMPLES "${SOURCES_IDIOMATIC_EXAMPLES}" )
set( TARGETS_IDIOMATIC_EXAMPLES ${BASENAMES_IDIOMATIC_EXAMPLES} )
string(REPLACE ".cpp" "" BASENAMES_IDIOMATIC_EXAMPLES "${SOURCES_IDIOMATIC_EXAMPLES}")
set(TARGETS_IDIOMATIC_EXAMPLES ${BASENAMES_IDIOMATIC_EXAMPLES})
foreach( name ${TARGETS_IDIOMATIC_EXAMPLES} )
add_executable( ${name} ${name}.cpp )
foreach(name ${TARGETS_IDIOMATIC_EXAMPLES})
add_executable(${name} ${name}.cpp)
endforeach()
set(ALL_EXAMPLE_TARGETS
@ -53,10 +50,9 @@ set(ALL_EXAMPLE_TARGETS
020-MultiFile
)
foreach( name ${ALL_EXAMPLE_TARGETS} )
target_link_libraries( ${name} Catch2WithMain )
foreach(name ${ALL_EXAMPLE_TARGETS})
target_link_libraries(${name} Catch2WithMain)
endforeach()
list(APPEND CATCH_WARNING_TARGETS ${ALL_EXAMPLE_TARGETS})
set(CATCH_WARNING_TARGETS ${CATCH_WARNING_TARGETS} PARENT_SCOPE)

View File

@ -165,7 +165,7 @@ function(catch_discover_tests TARGET)
${ARGN}
)
if (${CMAKE_VERSION} VERSION_LESS "3.19")
if(${CMAKE_VERSION} VERSION_LESS "3.19")
message(FATAL_ERROR "This script requires JSON support from CMake version 3.19 or greater.")
endif()
@ -187,7 +187,7 @@ function(catch_discover_tests TARGET)
endif()
set(_DISCOVERY_MODE ${CMAKE_CATCH_DISCOVER_TESTS_DISCOVERY_MODE})
endif()
if (NOT _DISCOVERY_MODE MATCHES "^(POST_BUILD|PRE_TEST)$")
if(NOT _DISCOVERY_MODE MATCHES "^(POST_BUILD|PRE_TEST)$")
message(FATAL_ERROR "Unknown DISCOVERY_MODE: ${_DISCOVERY_MODE}")
endif()
@ -204,7 +204,7 @@ function(catch_discover_tests TARGET)
TARGET ${TARGET}
PROPERTY CROSSCOMPILING_EMULATOR
)
if (NOT _SKIP_IS_FAILURE)
if(NOT _SKIP_IS_FAILURE)
set(_PROPERTIES ${_PROPERTIES} SKIP_RETURN_CODE 4)
endif()

View File

@ -136,7 +136,7 @@ function(catch_discover_tests_impl)
# Parse JSON output for list of tests/class names/tags
string(JSON version GET "${listing_output}" "version")
if (NOT version STREQUAL "1")
if(NOT version STREQUAL "1")
message(FATAL_ERROR "Unsupported catch output version: '${version}'")
endif()
@ -186,11 +186,11 @@ function(catch_discover_tests_impl)
${properties}
)
if (add_tags)
if(add_tags)
string(JSON num_tags LENGTH "${test_tags}")
math(EXPR num_tags "${num_tags} - 1")
set(tag_list "")
if (num_tags GREATER_EQUAL "0")
if(num_tags GREATER_EQUAL "0")
foreach(tag_idx RANGE ${num_tags})
string(JSON a_tag GET "${test_tags}" "${tag_idx}")
# Catch2's tags can contain semicolons, which are list element separators

View File

@ -11,7 +11,7 @@
# * REPORTER - reporter spec to use for tests
# * TEST_SPEC - test spec used for filtering tests
function(catch_add_sharded_tests TARGET)
if (${CMAKE_VERSION} VERSION_LESS "3.10.0")
if(${CMAKE_VERSION} VERSION_LESS "3.10.0")
message(FATAL_ERROR "add_sharded_catch_tests only supports CMake versions 3.10.0 and up")
endif()
@ -23,7 +23,7 @@ function(catch_add_sharded_tests TARGET)
${ARGN}
)
if (NOT DEFINED _SHARD_COUNT)
if(NOT DEFINED _SHARD_COUNT)
set(_SHARD_COUNT 2)
endif()
@ -61,8 +61,6 @@ function(catch_add_sharded_tests TARGET)
-P "${shard_impl_script_file}"
VERBATIM
)
endfunction()

View File

@ -25,10 +25,10 @@ if(NOT EXISTS "${TEST_BINARY}")
endif()
set(other_args "")
if (TEST_SPEC)
if(TEST_SPEC)
set(other_args "${other_args} ${TEST_SPEC}")
endif()
if (REPORTER_SPEC)
if(REPORTER_SPEC)
set(other_args "${other_args} --reporter ${REPORTER_SPEC}")
endif()

View File

@ -56,7 +56,7 @@
# #
#==================================================================================================#
if (CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8)
if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8)
message(FATAL_ERROR "ParseAndAddCatchTests requires CMake 2.8.8 or newer")
endif()
@ -155,7 +155,7 @@ function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget)
if("${TestType}" STREQUAL "SCENARIO")
set(Name "Scenario: ${Name}")
endif()
if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND "${TestType}" MATCHES "(CATCH_)?TEST_CASE_METHOD" AND TestFixture )
if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND "${TestType}" MATCHES "(CATCH_)?TEST_CASE_METHOD" AND TestFixture)
set(CTestName "${TestFixture}:${Name}")
else()
set(CTestName "${Name}")
@ -234,8 +234,6 @@ function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget)
APPEND
PROPERTY ParseAndAddCatchTests_TESTS "${CTestName}")
endif()
endforeach()
endfunction()

View File

@ -15,6 +15,6 @@ target_compile_features(fuzzhelper PUBLIC cxx_std_17)
target_link_options(fuzzhelper PUBLIC "-fsanitize=fuzzer")
foreach(fuzzer TestSpecParser XmlWriter textflow)
add_executable(fuzz_${fuzzer} fuzz_${fuzzer}.cpp)
target_link_libraries(fuzz_${fuzzer} PRIVATE fuzzhelper)
add_executable(fuzz_${fuzzer} fuzz_${fuzzer}.cpp)
target_link_libraries(fuzz_${fuzzer} PRIVATE fuzzhelper)
endforeach()

View File

@ -40,7 +40,6 @@ set(BENCHMARK_SOURCES
)
set(BENCHMARK_FILES ${BENCHMARK_HEADERS} ${BENCHMARK_SOURCES})
set(IMPL_HEADERS
"${PROJECT_BINARY_DIR}/generated-includes/catch2/catch_user_config.hpp"
${SOURCES_DIR}/catch_user_config.hpp.in
@ -348,25 +347,23 @@ source_group("generated headers"
)
add_library(Catch2 ${ALL_FILES})
if (CATCH_ENABLE_REPRODUCIBLE_BUILD)
if(CATCH_ENABLE_REPRODUCIBLE_BUILD)
add_build_reproducibility_settings(Catch2)
endif()
add_library(Catch2::Catch2 ALIAS Catch2)
if (ANDROID)
if(ANDROID)
target_link_libraries(Catch2 PRIVATE log)
endif()
set_target_properties(Catch2 PROPERTIES
DEBUG_POSTFIX "d"
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION})
SOVERSION ${PROJECT_VERSION}
)
# require C++14
target_compile_features(Catch2
PUBLIC
cxx_std_14
)
target_compile_features(Catch2 PUBLIC cxx_std_14)
configure_file(
"${SOURCES_DIR}/catch_user_config.hpp.in"
@ -384,7 +381,7 @@ target_include_directories(Catch2
add_library(Catch2WithMain
${SOURCES_DIR}/internal/catch_main.cpp
)
if (CATCH_ENABLE_REPRODUCIBLE_BUILD)
if(CATCH_ENABLE_REPRODUCIBLE_BUILD)
add_build_reproducibility_settings(Catch2WithMain)
endif()
add_library(Catch2::Catch2WithMain ALIAS Catch2WithMain)
@ -397,7 +394,7 @@ set_target_properties(Catch2WithMain
)
set_target_properties(Catch2WithMain PROPERTIES DEBUG_POSTFIX "d")
if (NOT_SUBPROJECT)
if(NOT_SUBPROJECT)
# create and install an export set for catch target as Catch2::Catch
install(
TARGETS
@ -413,7 +410,6 @@ if (NOT_SUBPROJECT)
${CMAKE_INSTALL_BINDIR}
)
install(
EXPORT
Catch2Targets
@ -437,7 +433,7 @@ endif()
# Some tests require a full recompilation of Catch2 lib with different
# compilation flags. They can link against this target to recompile all
# the sources into the binary.
if (CATCH_BUILD_EXAMPLES OR CATCH_BUILD_EXTRA_TESTS)
if(CATCH_BUILD_EXAMPLES OR CATCH_BUILD_EXTRA_TESTS)
add_library(Catch2_buildall_interface INTERFACE)
target_sources(Catch2_buildall_interface INTERFACE
${ALL_FILES}
@ -450,31 +446,24 @@ if (CATCH_BUILD_EXAMPLES OR CATCH_BUILD_EXTRA_TESTS)
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/generated-includes>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_compile_definitions(Catch2_buildall_interface
INTERFACE
CATCH_CONFIG_STATIC
)
target_compile_features(Catch2_buildall_interface
INTERFACE
cxx_std_14
)
target_compile_definitions(Catch2_buildall_interface INTERFACE CATCH_CONFIG_STATIC)
target_compile_features(Catch2_buildall_interface INTERFACE cxx_std_14)
endif()
list(APPEND CATCH_WARNING_TARGETS Catch2 Catch2WithMain)
set(CATCH_WARNING_TARGETS ${CATCH_WARNING_TARGETS} PARENT_SCOPE)
# We still do not support building dynamic library with hidden visibility
# so we want to check & warn users if they do this. However, we won't abort
# the configuration step so that we don't have to also provide an override.
if (BUILD_SHARED_LIBS)
if(BUILD_SHARED_LIBS)
set_target_properties(Catch2 Catch2WithMain
PROPERTIES
WINDOWS_EXPORT_ALL_SYMBOLS ON
)
get_target_property(_VisPreset Catch2 CXX_VISIBILITY_PRESET)
if (NOT MSVC AND _VisPreset STREQUAL "hidden")
if(NOT MSVC AND _VisPreset STREQUAL "hidden")
set_target_properties(Catch2 Catch2WithMain
PROPERTIES
CXX_VISIBILITY_PRESET "default"

View File

@ -1,6 +1,6 @@
include(CatchMiscFunctions)
if (CATCH_BUILD_SURROGATES)
if(CATCH_BUILD_SURROGATES)
message(STATUS "Configuring targets for surrogate TUs")
# If the folder does not exist before we ask for output redirect to
@ -11,11 +11,9 @@ if (CATCH_BUILD_SURROGATES)
# Returns the path to the generated file.
function(createSurrogateFileTarget sourceHeader pathToFile)
set(pathPrefix ${PROJECT_SOURCE_DIR}/src)
file(RELATIVE_PATH includePath ${pathPrefix} ${sourceHeader})
get_filename_component(basicFileName "${sourceHeader}" NAME_WE)
set(surrogateFilePath ${CMAKE_CURRENT_BINARY_DIR}/surrogates/surrogate_${basicFileName}.cpp)
add_custom_command(
@ -41,10 +39,9 @@ if (CATCH_BUILD_SURROGATES)
set(${OutArg} ${AllHeaders} PARENT_SCOPE)
endfunction()
ExtractCatch2Headers(mainHeaders)
if (NOT mainHeaders)
if(NOT mainHeaders)
message(FATAL_ERROR "No headers in the main target were detected. Something is broken.")
endif()
@ -53,12 +50,10 @@ if (CATCH_BUILD_SURROGATES)
list(APPEND surrogateFiles ${pathToGeneratedFile})
endforeach()
add_executable(Catch2SurrogateTarget
${surrogateFiles}
)
target_link_libraries(Catch2SurrogateTarget PRIVATE Catch2WithMain)
endif()
####
@ -66,13 +61,10 @@ endif()
# We need to disable <UseFullPaths> property, but CMake doesn't support it
# until 3.13 (not yet released)
####
if (MSVC)
configure_file(${CATCH_DIR}/tools/misc/SelfTest.vcxproj.user
${CMAKE_BINARY_DIR}/tests
COPYONLY)
if(MSVC)
configure_file(${CATCH_DIR}/tools/misc/SelfTest.vcxproj.user ${CMAKE_BINARY_DIR}/tests COPYONLY)
endif() #Temporary workaround
# define the sources of the self test
# Please keep these ordered alphabetically
set(TEST_SOURCES
@ -134,7 +126,7 @@ set(TEST_SOURCES
${SELF_TEST_DIR}/UsageTests/VariadicMacros.tests.cpp
${SELF_TEST_DIR}/UsageTests/MatchersRanges.tests.cpp
${SELF_TEST_DIR}/UsageTests/Matchers.tests.cpp
)
)
set(TEST_HEADERS
${SELF_TEST_DIR}/helpers/parse_test_spec.hpp
@ -142,7 +134,6 @@ set(TEST_HEADERS
${SELF_TEST_DIR}/helpers/type_with_lit_0_comparisons.hpp
)
# Specify the headers, too, so CLion recognises them as project files
set(HEADERS
${TOP_LEVEL_HEADERS}
@ -154,22 +145,22 @@ set(HEADERS
)
# Provide some groupings for IDEs
#SOURCE_GROUP("benchmark" FILES ${BENCHMARK_HEADERS} ${BENCHMARK_SOURCES})
#SOURCE_GROUP("Tests" FILES ${TEST_SOURCES})
#source_group("benchmark" FILES ${BENCHMARK_HEADERS} ${BENCHMARK_SOURCES})
#source_group("Tests" FILES ${TEST_SOURCES})
include(CTest)
add_executable(SelfTest ${TEST_SOURCES} ${TEST_HEADERS})
target_include_directories(SelfTest PRIVATE ${SELF_TEST_DIR})
target_link_libraries(SelfTest PRIVATE Catch2WithMain)
if (BUILD_SHARED_LIBS AND WIN32)
if(BUILD_SHARED_LIBS AND WIN32)
add_custom_command(TARGET SelfTest PRE_LINK
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Catch2>
$<TARGET_FILE:Catch2WithMain> $<TARGET_FILE_DIR:SelfTest>
)
endif()
if (CATCH_ENABLE_COVERAGE)
if(CATCH_ENABLE_COVERAGE)
set(ENABLE_COVERAGE ON CACHE BOOL "Enable coverage build." FORCE)
find_package(codecov)
add_coverage(SelfTest)
@ -219,7 +210,6 @@ set_tests_properties(List::Tags::XmlOutput PROPERTIES
FAIL_REGULAR_EXPRESSION "[0-9]+ tags"
)
add_test(NAME List::Reporters::Output COMMAND $<TARGET_FILE:SelfTest> --list-reporters)
set_tests_properties(List::Reporters::Output PROPERTIES PASS_REGULAR_EXPRESSION "Available reporters:")
add_test(NAME List::Reporters::ExitCode COMMAND $<TARGET_FILE:SelfTest> --list-reporters)
@ -447,7 +437,6 @@ set_tests_properties("Benchmarking::SkipBenchmarkMacros"
FAIL_REGULAR_EXPRESSION "benchmark name"
)
add_test(NAME "Benchmarking::FailureReporting::OptimizedOut"
COMMAND
$<TARGET_FILE:SelfTest> "Failing benchmarks" -c "empty" -r xml
@ -510,7 +499,7 @@ set_tests_properties("ErrorHandling::InvalidTestSpecExitsEarly"
FAIL_REGULAR_EXPRESSION "No tests ran"
)
if (MSVC)
if(MSVC)
set(_NullFile "NUL")
else()
set(_NullFile "/dev/null")
@ -519,7 +508,7 @@ endif()
# This test checks that there is nothing written out from the process,
# but if CMake is running the tests under Valgrind or similar tool, then
# that will write its own output to stdout and the test would fail.
if (NOT MEMORYCHECK_COMMAND)
if(NOT MEMORYCHECK_COMMAND)
add_test(NAME "MultiReporter::CapturingReportersDontPropagateStdOut"
COMMAND
$<TARGET_FILE:SelfTest> "Sends stuff to stdout and stderr"
@ -608,10 +597,9 @@ set_tests_properties("Reporters::JUnit::NamespacesAreNormalized"
PASS_REGULAR_EXPRESSION "testcase classname=\"SelfTest(\.exe)?\\.A\\.B\\.TestClass\""
)
if (CATCH_ENABLE_CONFIGURE_TESTS)
if(CATCH_ENABLE_CONFIGURE_TESTS)
foreach(testName "DefaultReporter" "Disable" "DisableStringification"
"ExperimentalRedirect")
add_test(NAME "CMakeConfig::${testName}"
COMMAND
"${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_LIST_DIR}/TestScripts/testConfigure${testName}.py" "${CATCH_DIR}" "${CMAKE_CURRENT_BINARY_DIR}"
@ -621,11 +609,10 @@ if (CATCH_ENABLE_CONFIGURE_TESTS)
COST 240
LABELS "uses-python"
)
endforeach()
endif()
if (CATCH_ENABLE_CMAKE_HELPER_TESTS)
if(CATCH_ENABLE_CMAKE_HELPER_TESTS)
add_test(NAME "CMakeHelper::DiscoverTests"
COMMAND
"${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_LIST_DIR}/TestScripts/DiscoverTests/VerifyRegistration.py" "${CATCH_DIR}" "${CMAKE_CURRENT_BINARY_DIR}"
@ -637,7 +624,7 @@ if (CATCH_ENABLE_CMAKE_HELPER_TESTS)
)
endif()
foreach (reporterName # "Automake" - the simple .trs format does not support any kind of comments/metadata
foreach(reporterName # "Automake" - the simple .trs format does not support any kind of comments/metadata
"compact"
"console"
"JUnit"
@ -646,14 +633,13 @@ foreach (reporterName # "Automake" - the simple .trs format does not support any
# "TeamCity" - does not seem to support test suite-level metadata/comments
"XML"
"JSON")
add_test(NAME "Reporters:Filters:${reporterName}"
COMMAND
$<TARGET_FILE:SelfTest> [comparisons][string-case] "CaseInsensitiveLess is case insensitive"
--reporter ${reporterName}
)
# Different regex for these two reporters, because the commas end up xml-escaped
if (reporterName MATCHES "JUnit|XML")
if(reporterName MATCHES "JUnit|XML")
set(testCaseNameFormat "&quot;CaseInsensitiveLess is case insensitive&quot;")
elseif(reporterName MATCHES "JSON")
set(testCaseNameFormat "\\\\\"CaseInsensitiveLess is case insensitive\\\\\"")
@ -675,9 +661,7 @@ foreach (reporterName # "Automake" - the simple .trs format does not support any
PROPERTIES
PASS_REGULAR_EXPRESSION "18181818"
)
endforeach()
list(APPEND CATCH_WARNING_TARGETS SelfTest)
set(CATCH_WARNING_TARGETS ${CATCH_WARNING_TARGETS} PARENT_SCOPE)

View File

@ -1,12 +1,7 @@
#
# Build extra tests.
#
cmake_minimum_required(VERSION 3.16)
project(Catch2ExtraTests LANGUAGES CXX)
cmake_minimum_required( VERSION 3.16 )
project( Catch2ExtraTests LANGUAGES CXX )
message( STATUS "Extra tests included" )
message(STATUS "Extra tests included")
add_test(
NAME TestShardingIntegration
@ -21,8 +16,7 @@ add_test(
NAME TestSharding::OverlyLargeShardIndex
COMMAND $<TARGET_FILE:SelfTest> --shard-index 5 --shard-count 5
)
set_tests_properties(
TestSharding::OverlyLargeShardIndex
set_tests_properties(TestSharding::OverlyLargeShardIndex
PROPERTIES
PASS_REGULAR_EXPRESSION "The shard count \\(5\\) must be greater than the shard index \\(5\\)"
)
@ -31,8 +25,7 @@ set_tests_properties(
# they have non-trivial execution time, so they are categorized as
# extra tests, so that they are run less.
add_test(NAME MinDuration::SimpleThreshold COMMAND $<TARGET_FILE:SelfTest> --min-duration 0.950 [min_duration_test])
set_tests_properties(
MinDuration::SimpleThreshold
set_tests_properties(MinDuration::SimpleThreshold
PROPERTIES
PASS_REGULAR_EXPRESSION "s: sleep_for_1000ms"
FAIL_REGULAR_EXPRESSION "sleep_for_100ms"
@ -43,8 +36,7 @@ set_tests_properties(
# -d yes overrides the threshold, so we should see the faster test even
# with a ridiculous high min duration threshold
add_test(NAME MinDuration::DurationOverrideYes COMMAND $<TARGET_FILE:SelfTest> --min-duration 1.0 -d yes [min_duration_test])
set_tests_properties(
MinDuration::DurationOverrideYes
set_tests_properties(MinDuration::DurationOverrideYes
PROPERTIES
PASS_REGULAR_EXPRESSION "s: sleep_for_100ms"
)
@ -52,27 +44,24 @@ set_tests_properties(
# -d no overrides the threshold, so we should never see any tests even
# with ridiculously low min duration threshold
add_test(NAME MinDuration::DurationOverrideNo COMMAND $<TARGET_FILE:SelfTest> --min-duration 0.0001 -d no [min_duration_test])
set_tests_properties(
MinDuration::DurationOverrideNo
set_tests_properties(MinDuration::DurationOverrideNo
PROPERTIES
FAIL_REGULAR_EXPRESSION "sleep_for_250ms"
)
# ------------ end of duration reporting tests
# define folders used:
set( TESTS_DIR ${CATCH_DIR}/tests/ExtraTests )
set(TESTS_DIR ${CATCH_DIR}/tests/ExtraTests)
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 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 Catch2WithMain )
target_link_libraries(PrefixedMacros Catch2WithMain)
add_test(NAME CATCH_CONFIG_PREFIX_ALL COMMAND PrefixedMacros -s)
set_tests_properties(
CATCH_CONFIG_PREFIX_ALL
set_tests_properties(CATCH_CONFIG_PREFIX_ALL
PROPERTIES
PASS_REGULAR_EXPRESSION "CATCH_"
FAIL_REGULAR_EXPRESSION
@ -81,51 +70,47 @@ 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 )
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 Catch2WithMain )
target_link_libraries(DisabledMacros Catch2WithMain)
add_test(NAME CATCH_CONFIG_DISABLE-1 COMMAND DisabledMacros -s)
set_tests_properties(
CATCH_CONFIG_DISABLE-1
set_tests_properties(CATCH_CONFIG_DISABLE-1
PROPERTIES
PASS_REGULAR_EXPRESSION "No tests ran"
FAIL_REGULAR_EXPRESSION "This should not happen"
)
add_test(NAME CATCH_CONFIG_DISABLE-2 COMMAND DisabledMacros --list-tests)
set_tests_properties(
CATCH_CONFIG_DISABLE-2
set_tests_properties(CATCH_CONFIG_DISABLE-2
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 )
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}
target_compile_options(${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_buildall_interface)
endforeach()
target_compile_definitions( DisabledExceptions-CustomHandler PUBLIC CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER )
target_compile_definitions(DisabledExceptions-CustomHandler PUBLIC CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER)
add_test(NAME CATCH_CONFIG_DISABLE_EXCEPTIONS-1 COMMAND DisabledExceptions-DefaultHandler "Tests that run")
set_tests_properties(
CATCH_CONFIG_DISABLE_EXCEPTIONS-1
set_tests_properties(CATCH_CONFIG_DISABLE_EXCEPTIONS-1
PROPERTIES
PASS_REGULAR_EXPRESSION "assertions: 4 \| 2 passed \| 2 failed"
FAIL_REGULAR_EXPRESSION "abort;terminate;fatal"
)
add_executable( BazelReporter ${TESTS_DIR}/X30-BazelReporter.cpp )
target_compile_definitions( BazelReporter PRIVATE CATCH_CONFIG_BAZEL_SUPPORT )
add_executable(BazelReporter ${TESTS_DIR}/X30-BazelReporter.cpp)
target_compile_definitions(BazelReporter PRIVATE CATCH_CONFIG_BAZEL_SUPPORT)
target_link_libraries(BazelReporter Catch2_buildall_interface)
add_test(NAME CATCH_CONFIG_BAZEL_REPORTER-1
COMMAND
@ -137,7 +122,7 @@ set_tests_properties(CATCH_CONFIG_BAZEL_REPORTER-1
)
# We must now test this works without the build flag.
add_executable( BazelReporterNoCatchConfig ${TESTS_DIR}/X30-BazelReporter.cpp )
add_executable(BazelReporterNoCatchConfig ${TESTS_DIR}/X30-BazelReporter.cpp)
target_link_libraries(BazelReporterNoCatchConfig Catch2WithMain)
add_test(NAME NO_CATCH_CONFIG_BAZEL_REPORTER-1
COMMAND
@ -159,7 +144,6 @@ set_tests_properties(BazelEnv::TESTBRIDGE_TEST_ONLY
PASS_REGULAR_EXPRESSION "All tests passed \\(1 assertion in 1 test case\\)"
)
add_test(NAME BazelEnv::Sharding
COMMAND
"${PYTHON_EXECUTABLE}" "${CATCH_DIR}/tests/TestScripts/testBazelSharding.py"
@ -171,82 +155,69 @@ set_tests_properties(BazelEnv::Sharding
LABELS "uses-python"
)
# The default handler on Windows leads to the just-in-time debugger firing,
# which makes this test unsuitable for CI and headless runs, as it opens
# up an interactive dialog.
if (NOT WIN32)
if(NOT WIN32)
add_test(NAME CATCH_CONFIG_DISABLE_EXCEPTIONS-2 COMMAND DisabledExceptions-DefaultHandler "Tests that abort")
set_tests_properties(
CATCH_CONFIG_DISABLE_EXCEPTIONS-2
set_tests_properties(CATCH_CONFIG_DISABLE_EXCEPTIONS-2
PROPERTIES
PASS_REGULAR_EXPRESSION "Catch will terminate"
)
endif()
add_test(NAME CATCH_CONFIG_DISABLE_EXCEPTIONS-3 COMMAND DisabledExceptions-CustomHandler "Tests that run")
set_tests_properties(
CATCH_CONFIG_DISABLE_EXCEPTIONS-3
set_tests_properties(CATCH_CONFIG_DISABLE_EXCEPTIONS-3
PROPERTIES
PASS_REGULAR_EXPRESSION "assertions: 4 \| 2 passed \| 2 failed"
FAIL_REGULAR_EXPRESSION "====== CUSTOM HANDLER ======"
)
add_test(NAME CATCH_CONFIG_DISABLE_EXCEPTIONS-4 COMMAND DisabledExceptions-CustomHandler "Tests that abort")
set_tests_properties(
CATCH_CONFIG_DISABLE_EXCEPTIONS-4
set_tests_properties(CATCH_CONFIG_DISABLE_EXCEPTIONS-4
PROPERTIES
PASS_REGULAR_EXPRESSION "====== CUSTOM HANDLER ======"
)
add_executable(DeferredStaticChecks ${TESTS_DIR}/X05-DeferredStaticChecks.cpp)
target_link_libraries(DeferredStaticChecks PRIVATE Catch2WithMain)
target_compile_definitions(DeferredStaticChecks PRIVATE "CATCH_CONFIG_RUNTIME_STATIC_REQUIRE")
add_test(NAME DeferredStaticChecks COMMAND DeferredStaticChecks -r compact)
set_tests_properties(
DeferredStaticChecks
set_tests_properties(DeferredStaticChecks
PROPERTIES
PASS_REGULAR_EXPRESSION "test cases: 1 \\| 1 failed\nassertions: 3 \\| 3 failed"
)
add_executable(FallbackStringifier ${TESTS_DIR}/X10-FallbackStringifier.cpp)
target_compile_definitions( FallbackStringifier PRIVATE CATCH_CONFIG_FALLBACK_STRINGIFIER=fallbackStringifier )
target_link_libraries( FallbackStringifier Catch2WithMain )
target_compile_definitions(FallbackStringifier PRIVATE CATCH_CONFIG_FALLBACK_STRINGIFIER=fallbackStringifier)
target_link_libraries(FallbackStringifier Catch2WithMain)
add_test(NAME FallbackStringifier COMMAND FallbackStringifier -r compact -s)
set_tests_properties(
FallbackStringifier
set_tests_properties(FallbackStringifier
PROPERTIES
PASS_REGULAR_EXPRESSION "foo{} for: { !!! }"
)
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 Catch2WithMain)
add_test(NAME CATCH_CONFIG_DISABLE_STRINGIFICATION COMMAND DisableStringification -r compact -s)
set_tests_properties(
CATCH_CONFIG_DISABLE_STRINGIFICATION
set_tests_properties(CATCH_CONFIG_DISABLE_STRINGIFICATION
PROPERTIES
PASS_REGULAR_EXPRESSION "Disabled by CATCH_CONFIG_DISABLE_STRINGIFICATION"
FAIL_REGULAR_EXPRESSION "Hidden{} == Hidden{}"
)
# This test touches windows.h, so it should only be compiled under msvc
if (MSVC)
if(MSVC)
# This test fails if it does not compile and succeeds otherwise
add_executable(WindowsHeader ${TESTS_DIR}/X90-WindowsHeaderInclusion.cpp)
target_link_libraries( WindowsHeader Catch2WithMain )
target_link_libraries(WindowsHeader Catch2WithMain)
add_test(NAME WindowsHeader COMMAND WindowsHeader -r compact)
list(APPEND CATCH_WARNING_TARGETS ${EXTRA_TEST_BINARIES} WindowsHeader)
endif()
add_executable(PartialTestCaseEvents ${TESTS_DIR}/X21-PartialTestCaseEvents.cpp)
target_link_libraries(PartialTestCaseEvents PRIVATE Catch2WithMain)
add_test(
@ -264,22 +235,19 @@ add_test(
NAME BenchmarksInCumulativeReporter
COMMAND BenchmarksInCumulativeReporter --reporter testReporter
)
set_tests_properties(
BenchmarksInCumulativeReporter
set_tests_properties(BenchmarksInCumulativeReporter
PROPERTIES
PASS_REGULAR_EXPRESSION "1\n2\n3\n4\n5\n"
COST 30
)
add_executable(CasingInReporterNames ${TESTS_DIR}/X23-CasingInReporterNames.cpp)
target_link_libraries(CasingInReporterNames PRIVATE Catch2::Catch2WithMain)
add_test(
NAME Reporters::registration-is-case-preserving
COMMAND CasingInReporterNames --list-reporters
)
set_tests_properties(
Reporters::registration-is-case-preserving
set_tests_properties(Reporters::registration-is-case-preserving
PROPERTIES
PASS_REGULAR_EXPRESSION "testReporterCASED"
)
@ -287,8 +255,7 @@ add_test(
NAME Reporters::selection-is-case-insensitive
COMMAND CasingInReporterNames -r testReportercased
)
set_tests_properties(
Reporters::selection-is-case-insensitive
set_tests_properties(Reporters::selection-is-case-insensitive
PROPERTIES
PASS_REGULAR_EXPRESSION "TestReporter constructed"
)
@ -300,15 +267,13 @@ add_test(
COMMAND CapturedStdoutInTestCaseEvents
--reporter test-reporter
)
set_tests_properties(
Reporters::CapturedStdOutInEvents
set_tests_properties(Reporters::CapturedStdOutInEvents
PROPERTIES
PASS_REGULAR_EXPRESSION "X27 - TestReporter constructed"
FAIL_REGULAR_EXPRESSION "X27 ERROR"
)
if (MSVC)
if(MSVC)
set(_NullFile "NUL")
else()
set(_NullFile "/dev/null")
@ -320,7 +285,7 @@ target_link_libraries(ListenerStdoutCaptureInMultireporter PRIVATE Catch2::Catch
# This test checks that there is nothing written out from the process,
# but if CMake is running the tests under Valgrind or similar tool, then
# that will write its own output to stdout and the test would fail.
if (NOT MEMORYCHECK_COMMAND)
if(NOT MEMORYCHECK_COMMAND)
add_test(
NAME MultiReporter::NoncapturingListenerDoesntCauseStdoutPassThrough
COMMAND ListenerStdoutCaptureInMultireporter
@ -328,15 +293,13 @@ if (NOT MEMORYCHECK_COMMAND)
--reporter junit::out=${_NullFile}
)
set_tests_properties(
MultiReporter::NoncapturingListenerDoesntCauseStdoutPassThrough
set_tests_properties(MultiReporter::NoncapturingListenerDoesntCauseStdoutPassThrough
PROPERTIES
PASS_REGULAR_EXPRESSION "X24 - NonCapturingListener initialized"
FAIL_REGULAR_EXPRESSION "X24 - FooBarBaz"
)
endif()
add_executable(ListenerCanAskForCapturedStdout ${TESTS_DIR}/X25-ListenerCanAskForCapturedStdout.cpp)
target_link_libraries(ListenerCanAskForCapturedStdout PRIVATE Catch2::Catch2WithMain)
add_test(
@ -345,8 +308,7 @@ add_test(
--reporter compact::out=${_NullFile}
--reporter console::out=${_NullFile}
)
set_tests_properties(
MultiReporter::CapturingListenerCausesStdoutCapture
set_tests_properties(MultiReporter::CapturingListenerCausesStdoutCapture
PROPERTIES
PASS_REGULAR_EXPRESSION "CapturingListener initialized"
FAIL_REGULAR_EXPRESSION "X25 - ERROR"
@ -359,8 +321,7 @@ add_test(
COMMAND ReporterPreferencesForPassingAssertionsIsRespected
--reporter test-reporter
)
set_tests_properties(
Reporters::PreferencesForPassingAssertionsIsRespected
set_tests_properties(Reporters::PreferencesForPassingAssertionsIsRespected
PROPERTIES
PASS_REGULAR_EXPRESSION "X26 - TestReporter constructed"
FAIL_REGULAR_EXPRESSION "X26 - assertionEnded"
@ -371,8 +332,7 @@ add_test(
--reporter test-reporter
--reporter console::out=${_NullFile}
)
set_tests_properties(
MultiReporter::PreferencesForPassingAssertionsIsRespected
set_tests_properties(MultiReporter::PreferencesForPassingAssertionsIsRespected
PROPERTIES
PASS_REGULAR_EXPRESSION "X26 - TestReporter constructed"
FAIL_REGULAR_EXPRESSION "X26 - assertionEnded"
@ -384,8 +344,7 @@ add_test(
NAME ListenersGetEventsBeforeReporters
COMMAND ListenersGetEventsBeforeReporters --reporter test-reporter
)
set_tests_properties(
ListenersGetEventsBeforeReporters
set_tests_properties(ListenersGetEventsBeforeReporters
PROPERTIES
PASS_REGULAR_EXPRESSION "X28 - TestReporter constructed"
FAIL_REGULAR_EXPRESSION "X28 - ERROR"
@ -398,21 +357,18 @@ add_test(
COMMAND CustomArgumentsForReporters
--reporter "test-reporter::Xa b=c 1::Xz:e = 1234"
)
set_tests_properties(
CustomArgumentsForReporters
set_tests_properties(CustomArgumentsForReporters
PROPERTIES
PASS_REGULAR_EXPRESSION "Xa b=c 1::Xz:e = 1234"
)
add_executable(DuplicatedTestCases-SameNameAndTags ${TESTS_DIR}/X31-DuplicatedTestCases.cpp)
target_link_libraries(DuplicatedTestCases-SameNameAndTags PRIVATE Catch2::Catch2WithMain)
add_test(
NAME DuplicatedTestCases::SameNameAndTags
COMMAND $<TARGET_FILE:DuplicatedTestCases-SameNameAndTags>
)
set_tests_properties(
DuplicatedTestCases::SameNameAndTags
set_tests_properties(DuplicatedTestCases::SameNameAndTags
PROPERTIES
PASS_REGULAR_EXPRESSION "error: .* already defined\\."
)
@ -423,8 +379,7 @@ add_test(
NAME DuplicatedTestCases::SameNameDifferentTags
COMMAND $<TARGET_FILE:DuplicatedTestCases-SameNameDifferentTags>
)
set_tests_properties(
DuplicatedTestCases::SameNameDifferentTags
set_tests_properties(DuplicatedTestCases::SameNameDifferentTags
PROPERTIES
FAIL_REGULAR_EXPRESSION "error: .* already defined\\."
)
@ -435,8 +390,7 @@ add_test(
NAME DuplicatedTestCases::DuplicatedTestCaseMethods
COMMAND $<TARGET_FILE:DuplicatedTestCases-DuplicatedTestCaseMethods>
)
set_tests_properties(
DuplicatedTestCases::DuplicatedTestCaseMethods
set_tests_properties(DuplicatedTestCases::DuplicatedTestCaseMethods
PROPERTIES
PASS_REGULAR_EXPRESSION "error: .* already defined\\."
)
@ -447,21 +401,18 @@ add_test(
NAME DuplicatedTestCases::DuplicatedTestCaseMethodsDifferentFixtures
COMMAND $<TARGET_FILE:DuplicatedTestCases-DifferentFixtures>
)
set_tests_properties(
DuplicatedTestCases::DuplicatedTestCaseMethodsDifferentFixtures
set_tests_properties(DuplicatedTestCases::DuplicatedTestCaseMethodsDifferentFixtures
PROPERTIES
FAIL_REGULAR_EXPRESSION "error: .* already defined\\."
)
add_executable(DuplicatedReporters ${TESTS_DIR}/X35-DuplicatedReporterNames.cpp)
target_link_libraries(DuplicatedReporters PRIVATE Catch2::Catch2WithMain)
add_test(
NAME Reporters::RegistrationErrorsAreCaught
COMMAND $<TARGET_FILE:DuplicatedReporters>
)
set_tests_properties(
Reporters::RegistrationErrorsAreCaught
set_tests_properties(Reporters::RegistrationErrorsAreCaught
PROPERTIES
PASS_REGULAR_EXPRESSION "Errors occurred during startup!"
)
@ -472,8 +423,7 @@ add_test(
NAME Reporters::CrashInJunitReporter
COMMAND ${CMAKE_COMMAND} -E env $<TARGET_FILE:ReportingCrashWithJunitReporter> --reporter JUnit
)
set_tests_properties(
Reporters::CrashInJunitReporter
set_tests_properties(Reporters::CrashInJunitReporter
PROPERTIES
PASS_REGULAR_EXPRESSION "</testsuites>"
LABELS "uses-signals"
@ -493,8 +443,7 @@ add_test(
#add_executable(DebugBreakMacros ${TESTS_DIR}/X12-CustomDebugBreakMacro.cpp)
#target_link_libraries(DebugBreakMacros Catch2)
#add_test(NAME DebugBreakMacros COMMAND DebugBreakMacros --break)
#set_tests_properties(
# DebugBreakMacros
#set_tests_properties(DebugBreakMacros
# PROPERTIES
# PASS_REGULAR_EXPRESSION "Pretty please, break into debugger"
#)
@ -521,7 +470,6 @@ add_test(
COMMAND $<TARGET_FILE:NoTests> --list-listeners
)
add_executable(AllSkipped ${TESTS_DIR}/X93-AllSkipped.cpp)
target_link_libraries(AllSkipped PRIVATE Catch2::Catch2WithMain)
@ -534,7 +482,7 @@ set_tests_properties(TestSpecs::SkippingAllTestsFails
WILL_FAIL ON
)
set( EXTRA_TEST_BINARIES
set(EXTRA_TEST_BINARIES
AllSkipped
PrefixedMacros
DisabledMacros
@ -557,7 +505,6 @@ list(FILTER EXTRA_TEST_BINARIES EXCLUDE REGEX "DisabledExceptions.*")
list(APPEND CATCH_WARNING_TARGETS ${EXTRA_TEST_BINARIES})
set(CATCH_WARNING_TARGETS ${CATCH_WARNING_TARGETS} PARENT_SCOPE)
# This sets up a one-off executable that compiles against the amalgamated
# files, and then runs it for a super simple check that the amalgamated
# files are usable.
@ -570,8 +517,7 @@ target_include_directories(AmalgamatedTestCompilation PRIVATE ${CATCH_DIR}/extra
target_compile_features(AmalgamatedTestCompilation PRIVATE cxx_std_14)
add_test(NAME AmalgamatedFileTest COMMAND AmalgamatedTestCompilation)
set_tests_properties(
AmalgamatedFileTest
set_tests_properties(AmalgamatedFileTest
PROPERTIES
PASS_REGULAR_EXPRESSION "All tests passed \\(14 assertions in 3 test cases\\)"
)

View File

@ -1,24 +1,18 @@
cmake_minimum_required(VERSION 3.16)
project(discover-tests-test LANGUAGES CXX)
project(discover-tests-test
LANGUAGES CXX
)
add_executable(tests
register-tests.cpp
)
add_executable(tests register-tests.cpp)
add_subdirectory(${CATCH2_PATH} catch2-build)
target_link_libraries(tests PRIVATE Catch2::Catch2WithMain)
enable_testing()
include(Catch)
set(extra_args)
if (CMAKE_VERSION GREATER_EQUAL 3.27)
if(CMAKE_VERSION GREATER_EQUAL 3.27)
list(APPEND extra_args
DL_PATHS "${CMAKE_CURRENT_LIST_DIR};${CMAKE_CURRENT_LIST_DIR}/.."
)
endif ()
endif()
catch_discover_tests(
tests
ADD_TAGS_AS_LABELS

View File

@ -1,11 +1,10 @@
cmake_minimum_required(VERSION 3.16)
project(CatchCoverageHelper)
add_executable(CoverageHelper coverage-helper.cpp)
set_property(TARGET CoverageHelper PROPERTY CXX_STANDARD 11)
set_property(TARGET CoverageHelper PROPERTY CXX_STANDARD_REQUIRED ON)
set_property(TARGET CoverageHelper PROPERTY CXX_EXTENSIONS OFF)
if (MSVC)
target_compile_options( CoverageHelper PRIVATE /W4 /w44265 /WX /w44061 /w44062 )
if(MSVC)
target_compile_options(CoverageHelper PRIVATE /W4 /w44265 /WX /w44061 /w44062)
endif()