Use DOCTEST_* compiler macros and suppress pragmas warning (#3550)

Use DOCTEST_* macros in place of predefined compiler macros for compiler
detection and version checks.

The suppression of warning -Wrange-loop-construct in unit-items.cpp
causes GCC<11 to warn about pragmas. Suppressed by adding a version
check.
This commit is contained in:
Florian Albrechtskirchinger 2022-06-21 16:57:47 +02:00 committed by GitHub
parent 87cda1d664
commit 39e27684ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 5 deletions

View File

@ -34,7 +34,9 @@ using nlohmann::json;
// This test suite uses range for loops where values are copied. This is inefficient in usual code, but required to achieve 100% coverage. // This test suite uses range for loops where values are copied. This is inefficient in usual code, but required to achieve 100% coverage.
DOCTEST_GCC_SUPPRESS_WARNING_PUSH DOCTEST_GCC_SUPPRESS_WARNING_PUSH
DOCTEST_GCC_SUPPRESS_WARNING("-Wrange-loop-construct") #if DOCTEST_GCC >= DOCTEST_COMPILER(11, 0, 0)
DOCTEST_GCC_SUPPRESS_WARNING("-Wrange-loop-construct")
#endif
DOCTEST_CLANG_SUPPRESS_WARNING_PUSH DOCTEST_CLANG_SUPPRESS_WARNING_PUSH
DOCTEST_CLANG_SUPPRESS_WARNING("-Wrange-loop-construct") DOCTEST_CLANG_SUPPRESS_WARNING("-Wrange-loop-construct")

View File

@ -916,7 +916,7 @@ TEST_CASE("iterators 2")
} }
// libstdc++ algorithms don't work with Clang 15 (04/2022) // libstdc++ algorithms don't work with Clang 15 (04/2022)
#if !defined(__clang__) || (defined(__clang__) && defined(__GLIBCXX__)) #if !DOCTEST_CLANG || (DOCTEST_CLANG && defined(__GLIBCXX__))
SECTION("algorithms") SECTION("algorithms")
{ {
SECTION("copy") SECTION("copy")
@ -955,7 +955,7 @@ TEST_CASE("iterators 2")
// libstdc++ views don't work with Clang 15 (04/2022) // libstdc++ views don't work with Clang 15 (04/2022)
// libc++ hides limited ranges implementation behind guard macro // libc++ hides limited ranges implementation behind guard macro
#if !(defined(__clang__) && (defined(__GLIBCXX__) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES))) #if !(DOCTEST_CLANG && (defined(__GLIBCXX__) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES)))
SECTION("views") SECTION("views")
{ {
SECTION("reverse") SECTION("reverse")

View File

@ -1520,7 +1520,7 @@ TEST_CASE("regression tests, exceptions dependent")
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
// the code below fails with Clang on Windows, so we need to exclude it there // the code below fails with Clang on Windows, so we need to exclude it there
#if defined(__clang__) && (defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)) #if DOCTEST_CLANG && (defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__))
#else #else
template <typename T> class array {}; template <typename T> class array {};
template <typename T> class object {}; template <typename T> class object {};

View File

@ -803,7 +803,7 @@ TEST_CASE("regression tests 2")
const auto j_path = j.get<nlohmann::detail::std_fs::path>(); const auto j_path = j.get<nlohmann::detail::std_fs::path>();
CHECK(j_path == text_path); CHECK(j_path == text_path);
#if defined(__clang__) || ((defined(__GNUC__) && !defined(__INTEL_COMPILER)) && (__GNUC__ > 8 || (__GNUC__ == 8 && __GNUC_MINOR__ >= 4))) #if DOCTEST_CLANG || DOCTEST_GCC >= DOCTEST_COMPILER(8, 4, 0)
// only known to work on Clang and GCC >=8.4 // only known to work on Clang and GCC >=8.4
CHECK_THROWS_WITH_AS(nlohmann::detail::std_fs::path(json(1)), "[json.exception.type_error.302] type must be string, but is number", json::type_error); CHECK_THROWS_WITH_AS(nlohmann::detail::std_fs::path(json(1)), "[json.exception.type_error.302] type must be string, but is number", json::type_error);
#endif #endif