Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorChris Thrasher2025-04-07 22:09:59 -0600
committerChris Thrasher2025-04-26 10:38:36 -0600
commit8cfca70ae879ba59699b224e8d371b8bb9fa12ff (patch)
treee53b243d3d2b7acc41c27cbd21624e1e28b655cb /tests
parent6aac11e17d4fe662e430a8bbfd4bf6886ca7f935 (diff)
downloadcatch3-8cfca70ae879ba59699b224e8d371b8bb9fa12ff.tar.gz
Fix formatting of CMake files
2 spaces seems to be the more common indentation level so that's what I unified around.
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt326
-rw-r--r--tests/ExtraTests/CMakeLists.txt202
-rw-r--r--tests/TestScripts/DiscoverTests/CMakeLists.txt20
3 files changed, 236 insertions, 312 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 37a5977e..bdd66a47 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -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,75 +61,72 @@ 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
- ${SELF_TEST_DIR}/TestRegistrations.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Algorithms.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/AssertionHandler.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Clara.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/CmdLine.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/CmdLineHelpers.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/ColourImpl.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Details.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/FloatingPoint.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/GeneratorsImpl.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Integer.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/InternalBenchmark.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Json.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Parse.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/PartTracker.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/RandomNumberGeneration.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Reporters.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Tag.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/TestCaseInfoHasher.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/TestSpec.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/TestSpecParser.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/TextFlow.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Sharding.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Stream.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/String.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/StringManip.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Xml.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/Traits.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/ToString.tests.cpp
- ${SELF_TEST_DIR}/IntrospectiveTests/UniquePtr.tests.cpp
- ${SELF_TEST_DIR}/helpers/parse_test_spec.cpp
- ${SELF_TEST_DIR}/TimingTests/Sleep.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Approx.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/BDD.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Benchmark.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Class.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Compilation.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Condition.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Decomposition.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/EnumToString.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Exception.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Generators.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Message.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Misc.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Skip.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/ToStringByte.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/ToStringChrono.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/ToStringGeneral.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/ToStringOptional.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/ToStringPair.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/ToStringTuple.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/ToStringVariant.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/ToStringVector.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/ToStringWhich.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Tricky.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/VariadicMacros.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/MatchersRanges.tests.cpp
- ${SELF_TEST_DIR}/UsageTests/Matchers.tests.cpp
- )
+ ${SELF_TEST_DIR}/TestRegistrations.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Algorithms.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/AssertionHandler.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Clara.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/CmdLine.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/CmdLineHelpers.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/ColourImpl.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Details.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/FloatingPoint.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/GeneratorsImpl.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Integer.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/InternalBenchmark.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Json.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Parse.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/PartTracker.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/RandomNumberGeneration.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Reporters.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Tag.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/TestCaseInfoHasher.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/TestSpec.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/TestSpecParser.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/TextFlow.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Sharding.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Stream.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/String.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/StringManip.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Xml.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/Traits.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/ToString.tests.cpp
+ ${SELF_TEST_DIR}/IntrospectiveTests/UniquePtr.tests.cpp
+ ${SELF_TEST_DIR}/helpers/parse_test_spec.cpp
+ ${SELF_TEST_DIR}/TimingTests/Sleep.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Approx.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/BDD.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Benchmark.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Class.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Compilation.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Condition.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Decomposition.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/EnumToString.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Exception.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Generators.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Message.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Misc.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Skip.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/ToStringByte.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/ToStringChrono.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/ToStringGeneral.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/ToStringOptional.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/ToStringPair.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/ToStringTuple.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/ToStringVariant.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/ToStringVector.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/ToStringWhich.tests.cpp
+ ${SELF_TEST_DIR}/UsageTests/Tricky.tests.cpp
+ ${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,46 +134,45 @@ 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}
- ${EXTERNAL_HEADERS}
- ${INTERNAL_HEADERS}
- ${REPORTER_HEADERS}
- ${BENCHMARK_HEADERS}
- ${BENCHMARK_SOURCES}
+ ${TOP_LEVEL_HEADERS}
+ ${EXTERNAL_HEADERS}
+ ${INTERNAL_HEADERS}
+ ${REPORTER_HEADERS}
+ ${BENCHMARK_HEADERS}
+ ${BENCHMARK_SOURCES}
)
# 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)
- add_custom_command(TARGET SelfTest PRE_LINK
- COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Catch2>
- $<TARGET_FILE:Catch2WithMain> $<TARGET_FILE_DIR:SelfTest>
- )
+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)
- set(ENABLE_COVERAGE ON CACHE BOOL "Enable coverage build." FORCE)
- find_package(codecov)
- add_coverage(SelfTest)
- list(APPEND LCOV_REMOVE_PATTERNS "'/usr/*'")
- coverage_evaluate()
+if(CATCH_ENABLE_COVERAGE)
+ set(ENABLE_COVERAGE ON CACHE BOOL "Enable coverage build." FORCE)
+ find_package(codecov)
+ add_coverage(SelfTest)
+ list(APPEND LCOV_REMOVE_PATTERNS "'/usr/*'")
+ coverage_evaluate()
endif()
# configure unit tests via CTest
add_test(NAME RunTests COMMAND $<TARGET_FILE:SelfTest> --order rand --rng-seed time)
set_tests_properties(RunTests PROPERTIES
- FAIL_REGULAR_EXPRESSION "Filters:"
- COST 15
+ FAIL_REGULAR_EXPRESSION "Filters:"
+ COST 15
)
# Because CTest does not allow us to check both return code _and_ expected
@@ -189,8 +180,8 @@ set_tests_properties(RunTests PROPERTIES
# the output, the second time we check the exit code.
add_test(NAME List::Tests::Output COMMAND $<TARGET_FILE:SelfTest> --list-tests --verbosity high)
set_tests_properties(List::Tests::Output PROPERTIES
- PASS_REGULAR_EXPRESSION "[0-9]+ test cases"
- FAIL_REGULAR_EXPRESSION "Hidden Test"
+ PASS_REGULAR_EXPRESSION "[0-9]+ test cases"
+ FAIL_REGULAR_EXPRESSION "Hidden Test"
)
# This should be equivalent to the old --list-test-names-only and be usable
# with --input-file.
@@ -198,35 +189,34 @@ add_test(NAME List::Tests::Quiet COMMAND $<TARGET_FILE:SelfTest> --list-tests --
# Sadly we cannot ask for start-of-line and end-of-line in a ctest regex,
# so we fail if we see space/tab at the start...
set_tests_properties(List::Tests::Quiet PROPERTIES
- PASS_REGULAR_EXPRESSION "\"#1905 -- test spec parser properly clears internal state between compound tests\"[\r\n]"
- FAIL_REGULAR_EXPRESSION "[ \t]\"#1905 -- test spec parser properly clears internal state between compound tests\""
+ PASS_REGULAR_EXPRESSION "\"#1905 -- test spec parser properly clears internal state between compound tests\"[\r\n]"
+ FAIL_REGULAR_EXPRESSION "[ \t]\"#1905 -- test spec parser properly clears internal state between compound tests\""
)
add_test(NAME List::Tests::ExitCode COMMAND $<TARGET_FILE:SelfTest> --list-tests --verbosity high)
add_test(NAME List::Tests::XmlOutput COMMAND $<TARGET_FILE:SelfTest> --list-tests --verbosity high -r xml)
set_tests_properties(List::Tests::XmlOutput PROPERTIES
- PASS_REGULAR_EXPRESSION "<Line>[0-9]+</Line>"
- FAIL_REGULAR_EXPRESSION "[0-9]+ test cases"
+ PASS_REGULAR_EXPRESSION "<Line>[0-9]+</Line>"
+ FAIL_REGULAR_EXPRESSION "[0-9]+ test cases"
)
add_test(NAME List::Tags::Output COMMAND $<TARGET_FILE:SelfTest> --list-tags)
set_tests_properties(List::Tags::Output PROPERTIES
- PASS_REGULAR_EXPRESSION "[0-9]+ tags"
- FAIL_REGULAR_EXPRESSION "\\[\\.\\]")
+ PASS_REGULAR_EXPRESSION "[0-9]+ tags"
+ FAIL_REGULAR_EXPRESSION "\\[\\.\\]")
add_test(NAME List::Tags::ExitCode COMMAND $<TARGET_FILE:SelfTest> --list-tags)
add_test(NAME List::Tags::XmlOutput COMMAND $<TARGET_FILE:SelfTest> --list-tags -r xml)
set_tests_properties(List::Tags::XmlOutput PROPERTIES
- PASS_REGULAR_EXPRESSION "<Count>18</Count>"
- FAIL_REGULAR_EXPRESSION "[0-9]+ tags"
+ PASS_REGULAR_EXPRESSION "<Count>18</Count>"
+ 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)
add_test(NAME List::Reporters::XmlOutput COMMAND $<TARGET_FILE:SelfTest> --list-reporters -r xml)
set_tests_properties(List::Reporters::XmlOutput PROPERTIES
- PASS_REGULAR_EXPRESSION "<Name>compact</Name>"
- FAIL_REGULAR_EXPRESSION "Available reporters:"
+ PASS_REGULAR_EXPRESSION "<Name>compact</Name>"
+ FAIL_REGULAR_EXPRESSION "Available reporters:"
)
add_test(NAME List::Listeners::Output
@@ -263,8 +253,8 @@ add_test(NAME TestSpecs::CombiningMatchingAndNonMatchingIsOk-1 COMMAND $<TARGET_
add_test(NAME TestSpecs::CombiningMatchingAndNonMatchingIsOk-2 COMMAND $<TARGET_FILE:SelfTest> Tracker, "___nonexistent_test___")
set_tests_properties(TestSpecs::CombiningMatchingAndNonMatchingIsOk-2 PROPERTIES
- PASS_REGULAR_EXPRESSION "No test cases matched '\"___nonexistent_test___\"'"
- FAIL_REGULAR_EXPRESSION "No tests ran"
+ PASS_REGULAR_EXPRESSION "No test cases matched '\"___nonexistent_test___\"'"
+ FAIL_REGULAR_EXPRESSION "No tests ran"
)
add_test(NAME TestSpecs::NoMatchedTestsFail
@@ -283,7 +273,7 @@ add_test(NAME TestSpecs::OverrideAllSkipFailure
)
add_test(NAME TestSpecs::NonMatchingTestSpecIsRoundTrippable
- COMMAND $<TARGET_FILE:SelfTest> Tracker, "this test does not exist" "[nor does this tag]"
+ COMMAND $<TARGET_FILE:SelfTest> Tracker, "this test does not exist" "[nor does this tag]"
)
set_tests_properties(TestSpecs::NonMatchingTestSpecIsRoundTrippable
PROPERTIES
@@ -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,76 +597,71 @@ set_tests_properties("Reporters::JUnit::NamespacesAreNormalized"
PASS_REGULAR_EXPRESSION "testcase classname=\"SelfTest(\.exe)?\\.A\\.B\\.TestClass\""
)
-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}"
- )
- set_tests_properties("CMakeConfig::${testName}"
- PROPERTIES
- COST 240
- LABELS "uses-python"
- )
-
- endforeach()
-endif()
-
-if (CATCH_ENABLE_CMAKE_HELPER_TESTS)
- add_test(NAME "CMakeHelper::DiscoverTests"
+if(CATCH_ENABLE_CONFIGURE_TESTS)
+ foreach(testName "DefaultReporter" "Disable" "DisableStringification"
+ "ExperimentalRedirect")
+ add_test(NAME "CMakeConfig::${testName}"
COMMAND
- "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_LIST_DIR}/TestScripts/DiscoverTests/VerifyRegistration.py" "${CATCH_DIR}" "${CMAKE_CURRENT_BINARY_DIR}"
+ "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_LIST_DIR}/TestScripts/testConfigure${testName}.py" "${CATCH_DIR}" "${CMAKE_CURRENT_BINARY_DIR}"
)
- set_tests_properties("CMakeHelper::DiscoverTests"
+ set_tests_properties("CMakeConfig::${testName}"
PROPERTIES
COST 240
LABELS "uses-python"
)
+ endforeach()
endif()
-foreach (reporterName # "Automake" - the simple .trs format does not support any kind of comments/metadata
- "compact"
- "console"
- "JUnit"
- "SonarQube"
- "TAP"
- # "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")
- set(testCaseNameFormat "&quot;CaseInsensitiveLess is case insensitive&quot;")
- elseif(reporterName MATCHES "JSON")
- set(testCaseNameFormat "\\\\\"CaseInsensitiveLess is case insensitive\\\\\"")
- else()
- set(testCaseNameFormat "\"CaseInsensitiveLess is case insensitive\"")
- endif()
- set_tests_properties("Reporters:Filters:${reporterName}"
- PROPERTIES
- PASS_REGULAR_EXPRESSION "[fF]ilters.+\\[comparisons\\] \\[string-case\\] ${testCaseNameFormat}"
- )
+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}"
+ )
+ set_tests_properties("CMakeHelper::DiscoverTests"
+ PROPERTIES
+ COST 240
+ LABELS "uses-python"
+ )
+endif()
- add_test(NAME "Reporters:RngSeed:${reporterName}"
- COMMAND
- $<TARGET_FILE:SelfTest> "Factorials are computed"
- --reporter ${reporterName}
- --rng-seed 18181818
- )
- set_tests_properties("Reporters:RngSeed:${reporterName}"
- PROPERTIES
- PASS_REGULAR_EXPRESSION "18181818"
- )
+foreach(reporterName # "Automake" - the simple .trs format does not support any kind of comments/metadata
+ "compact"
+ "console"
+ "JUnit"
+ "SonarQube"
+ "TAP"
+ # "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")
+ set(testCaseNameFormat "&quot;CaseInsensitiveLess is case insensitive&quot;")
+ elseif(reporterName MATCHES "JSON")
+ set(testCaseNameFormat "\\\\\"CaseInsensitiveLess is case insensitive\\\\\"")
+ else()
+ set(testCaseNameFormat "\"CaseInsensitiveLess is case insensitive\"")
+ endif()
+ set_tests_properties("Reporters:Filters:${reporterName}"
+ PROPERTIES
+ PASS_REGULAR_EXPRESSION "[fF]ilters.+\\[comparisons\\] \\[string-case\\] ${testCaseNameFormat}"
+ )
+ add_test(NAME "Reporters:RngSeed:${reporterName}"
+ COMMAND
+ $<TARGET_FILE:SelfTest> "Factorials are computed"
+ --reporter ${reporterName}
+ --rng-seed 18181818
+ )
+ set_tests_properties("Reporters:RngSeed:${reporterName}"
+ PROPERTIES
+ PASS_REGULAR_EXPRESSION "18181818"
+ )
endforeach()
-
list(APPEND CATCH_WARNING_TARGETS SelfTest)
set(CATCH_WARNING_TARGETS ${CATCH_WARNING_TARGETS} PARENT_SCOPE)
diff --git a/tests/ExtraTests/CMakeLists.txt b/tests/ExtraTests/CMakeLists.txt
index 3c38d675..77e8f756 100644
--- a/tests/ExtraTests/CMakeLists.txt
+++ b/tests/ExtraTests/CMakeLists.txt
@@ -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)
- # This test fails if it does not compile and succeeds otherwise
- add_executable(WindowsHeader ${TESTS_DIR}/X90-WindowsHeaderInclusion.cpp)
- target_link_libraries( WindowsHeader Catch2WithMain )
- add_test(NAME WindowsHeader COMMAND WindowsHeader -r compact)
- list(APPEND CATCH_WARNING_TARGETS ${EXTRA_TEST_BINARIES} WindowsHeader)
+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)
+ 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,