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

summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMartin Hořeňovský2025-07-14 12:05:03 +0200
committerMartin Hořeňovský2025-07-14 12:15:25 +0200
commit050e14dce05b93965ecf60ec524fa4cb3f91bb70 (patch)
tree3538774e8bb79a5acc32da15c738976ec3772ec5
parent6097bd6ee910f4ebb6216e0d1817fb84a51a7efb (diff)
downloadcatch3-050e14dce05b93965ecf60ec524fa4cb3f91bb70.tar.gz
Disable Wmissing-noreturn for test files
Adding unreachable to `FAIL` and `SKIP` made Clang become very good at figuring out that tests of `FAIL` and `SKIP` will never return and thus could be marked as [[noreturn]]. To avoid introducing lot of warning suppression noise into the test files, we just disable it instead.
-rw-r--r--CMakeLists.txt8
-rw-r--r--examples/CMakeLists.txt4
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--tests/CMakeLists.txt4
-rw-r--r--tests/ExtraTests/CMakeLists.txt6
5 files changed, 16 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bc1022af..bdc6c30c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -103,7 +103,13 @@ if(CATCH_BUILD_FUZZERS)
endif()
if(CATCH_DEVELOPMENT_BUILD)
- add_warnings_to_targets("${CATCH_WARNING_TARGETS}")
+ set(CATCH_ALL_TARGETS ${CATCH_IMPL_TARGETS} ${CATCH_TEST_TARGETS})
+ add_warnings_to_targets("${CATCH_ALL_TARGETS}")
+ # After we added the noreturn hint to FAIL and SKIP, Clang became
+ # extremely good at diagnosing tests that test these macros as being
+ # noreturn, but not marked as such. This made the warning useless for
+ # our test files.
+ add_cxx_flag_if_supported_to_targets("-Wno-missing-noreturn" "${CATCH_TEST_TARGETS}")
endif()
# Only perform the installation steps when Catch is not being used as
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 4035a025..74b65995 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -54,5 +54,5 @@ 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)
+list(APPEND CATCH_TEST_TARGETS ${ALL_EXAMPLE_TARGETS})
+set(CATCH_TEST_TARGETS ${CATCH_TEST_TARGETS} PARENT_SCOPE)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d8015737..49b2d1d1 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -451,8 +451,8 @@ if(CATCH_BUILD_EXAMPLES OR CATCH_BUILD_EXTRA_TESTS)
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)
+list(APPEND CATCH_IMPL_TARGETS Catch2 Catch2WithMain)
+set(CATCH_IMPL_TARGETS ${CATCH_IMPL_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
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 72df0beb..8f8a3755 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -662,5 +662,5 @@ foreach(reporterName # "Automake" - the simple .trs format does not support any
)
endforeach()
-list(APPEND CATCH_WARNING_TARGETS SelfTest)
-set(CATCH_WARNING_TARGETS ${CATCH_WARNING_TARGETS} PARENT_SCOPE)
+list(APPEND CATCH_TEST_TARGETS SelfTest)
+set(CATCH_TEST_TARGETS ${CATCH_TEST_TARGETS} PARENT_SCOPE)
diff --git a/tests/ExtraTests/CMakeLists.txt b/tests/ExtraTests/CMakeLists.txt
index dc1e74ef..bb7292d6 100644
--- a/tests/ExtraTests/CMakeLists.txt
+++ b/tests/ExtraTests/CMakeLists.txt
@@ -215,7 +215,7 @@ if(MSVC)
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)
+ list(APPEND CATCH_TEST_TARGETS ${EXTRA_TEST_BINARIES} WindowsHeader)
endif()
add_executable(PartialTestCaseEvents ${TESTS_DIR}/X21-PartialTestCaseEvents.cpp)
@@ -502,8 +502,8 @@ set(EXTRA_TEST_BINARIES
# Notice that we are modifying EXTRA_TEST_BINARIES destructively, do not
# use it after this point!
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)
+list(APPEND CATCH_TEST_TARGETS ${EXTRA_TEST_BINARIES})
+set(CATCH_TEST_TARGETS ${CATCH_TEST_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