From 2566828ed5c5cb5b33a5a4173c8fdcaa26c64410 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 22 Oct 2025 11:14:01 +0200 Subject: [PATCH] Fix CI (#4954) * :rotating_light: suppress readability-redundant-parentheses Signed-off-by: Niels Lohmann * :rotating_light: suppress google-runtime-float Signed-off-by: Niels Lohmann * :rotating_light: suppress bugprone-throwing-static-initialization Signed-off-by: Niels Lohmann * :rotating_light: suppress bugprone-throwing-static-initialization Signed-off-by: Niels Lohmann * :rotating_light: suppress bugprone-throwing-static-initialization Signed-off-by: Niels Lohmann * :rotating_light: suppress bugprone-throwing-static-initialization Signed-off-by: Niels Lohmann * :rotating_light: suppress bugprone-throwing-static-initialization Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :wastebasket: do not use macos-13 image Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: use more Xcode versions Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :alembic: fix Clang build Signed-off-by: Niels Lohmann * :hammer: clean up Signed-off-by: Niels Lohmann --------- Signed-off-by: Niels Lohmann --- .clang-tidy | 2 + .github/workflows/macos.yml | 37 ++++++++++--------- .github/workflows/windows.yml | 13 ++++++- .../docs/community/quality_assurance.md | 5 +-- tests/src/unit-bjdata.cpp | 2 + tests/src/unit-deserialization.cpp | 8 ++-- tests/src/unit-element_access2.cpp | 6 +-- tests/src/unit-iterators3.cpp | 2 +- tests/src/unit-regression2.cpp | 2 +- tests/src/unit-serialization.cpp | 2 +- tests/src/unit-udt_macro.cpp | 14 +++---- 11 files changed, 54 insertions(+), 39 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 72d1de5eb..29b3e9302 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -35,6 +35,7 @@ Checks: '*, -fuchsia-overloaded-operator, -google-explicit-constructor, -google-readability-function-size, + -google-runtime-float, -google-runtime-int, -google-runtime-references, -hicpp-avoid-goto, @@ -69,6 +70,7 @@ Checks: '*, -readability-identifier-length, -readability-magic-numbers, -readability-redundant-access-specifiers, + -readability-redundant-parentheses, -readability-simplify-boolean-expr, -readability-uppercase-literal-suffix, -readability-use-concise-preprocessor-directives' diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index bf8c7da81..1b3f9f709 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -53,28 +53,29 @@ jobs: # - name: Test # run: cd build ; ctest -j 10 --output-on-failure - macos-13: - runs-on: macos-13 # https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md - strategy: - matrix: - xcode: ['14.1', '14.2', '14.3', '14.3.1', '15.0.1', '15.1', '15.2'] - env: - DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer - - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - name: Run CMake - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON - - name: Build - run: cmake --build build --parallel 10 - - name: Test - run: cd build ; ctest -j 10 --output-on-failure +# macos-13 is deprecated (https://github.com/actions/runner-images/issues/13046) +# macos-13: +# runs-on: macos-13 # https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md +# strategy: +# matrix: +# xcode: ['14.1', '14.2', '14.3', '14.3.1', '15.0.1', '15.1', '15.2'] +# env: +# DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer +# +# steps: +# - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 +# - name: Run CMake +# run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON +# - name: Build +# run: cmake --build build --parallel 10 +# - name: Test +# run: cd build ; ctest -j 10 --output-on-failure macos-14: runs-on: macos-14 # https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md strategy: matrix: - xcode: ['15.3', '15.4'] + xcode: ['15.0.1', '15.1', '15.2', '15.3', '15.4'] env: DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer @@ -91,7 +92,7 @@ jobs: runs-on: macos-15 # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md strategy: matrix: - xcode: ['16.0', '16.1', '16.2', '16.3'] + xcode: ['16.0', '16.1', '16.2', '16.3', '16.4', '26.0.1'] env: DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index b4c816cad..cb78c9294 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -80,8 +80,19 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Install Clang run: curl -fsSL -o LLVM${{ matrix.version }}.exe https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ matrix.version }}/LLVM-${{ matrix.version }}-win64.exe ; 7z x LLVM${{ matrix.version }}.exe -y -o"C:/Program Files/LLVM" + - name: Set up MinGW + uses: egor-tensin/setup-mingw@84c781b557efd538dec66bde06988d81cd3138cf # v2.2.0 + with: + platform: x64 + version: 12.2.0 # https://github.com/egor-tensin/setup-mingw/issues/14 - name: Run CMake - run: cmake -S . -B build -DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang++.exe" -DCMAKE_CXX_FLAGS="--target=x86_64-w64-mingw32 -stdlib=libstdc++ -pthread" -DCMAKE_EXE_LINKER_FLAGS="-lwinpthread" -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On + run: cmake -S . -B build ^ + -DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang++.exe" ^ + -DCMAKE_CXX_FLAGS="--target=x86_64-w64-mingw32 -stdlib=libstdc++ -pthread" ^ + -DCMAKE_EXE_LINKER_FLAGS="-lwinpthread" ^ + -G"MinGW Makefiles" ^ + -DCMAKE_BUILD_TYPE=Debug ^ + -DJSON_BuildTests=On - name: Build run: cmake --build build --parallel 10 - name: Test diff --git a/docs/mkdocs/docs/community/quality_assurance.md b/docs/mkdocs/docs/community/quality_assurance.md index a57cb41a9..7ddd93871 100644 --- a/docs/mkdocs/docs/community/quality_assurance.md +++ b/docs/mkdocs/docs/community/quality_assurance.md @@ -17,9 +17,6 @@ violations will result in a failed build. | Compiler | Architecture | Operating System | CI | |----------------------------------------------|--------------|-----------------------------------|-----------| - | AppleClang 14.0.0.14000029; Xcode 14.1 | x86_64 | macOS 13.7.2 (Ventura) | GitHub | - | AppleClang 14.0.0.14000029; Xcode 14.2 | x86_64 | macOS 13.7.2 (Ventura) | GitHub | - | AppleClang 14.0.3.14030022; Xcode 14.3.1 | x86_64 | macOS 13.7.2 (Ventura) | GitHub | | AppleClang 15.0.0.15000040; Xcode 15.0.1 | x86_64 | macOS 13.7.2 (Ventura) | GitHub | | AppleClang 15.0.0.15000100; Xcode 15.1 | x86_64 | macOS 13.7.2 (Ventura) | GitHub | | AppleClang 15.0.0.15000100; Xcode 15.2 | x86_64 | macOS 13.7.2 (Ventura) | GitHub | @@ -29,6 +26,8 @@ violations will result in a failed build. | AppleClang 16.0.0.16000026; Xcode 16.1 | arm64 | macOS 15.2 (Sequoia) | GitHub | | AppleClang 16.0.0.16000026; Xcode 16.2 | arm64 | macOS 15.2 (Sequoia) | GitHub | | AppleClang 17.0.0.17000013; Xcode 16.3 | arm64 | macOS 15.5 (Sequoia) | GitHub | + | AppleClang 17.0.0.17000013; Xcode 16.4 | arm64 | macOS 15.5 (Sequoia) | GitHub | + | AppleClang 17.0.0.17000319; Xcode 26.0.1 | arm64 | macOS 15.5 (Sequoia) | GitHub | | Clang 3.5.2 | x86_64 | Ubuntu 22.04.1 LTS | GitHub | | Clang 3.6.2 | x86_64 | Ubuntu 22.04.1 LTS | GitHub | | Clang 3.7.1 | x86_64 | Ubuntu 22.04.1 LTS | GitHub | diff --git a/tests/src/unit-bjdata.cpp b/tests/src/unit-bjdata.cpp index 666c0be52..1ee933799 100644 --- a/tests/src/unit-bjdata.cpp +++ b/tests/src/unit-bjdata.cpp @@ -173,6 +173,7 @@ TEST_CASE_TEMPLATE_DEFINE("value_in_range_of trait", T, value_in_range_of_test) } } +// NOLINTNEXTLINE(bugprone-throwing-static-initialization) TEST_CASE_TEMPLATE_INVOKE(value_in_range_of_test, \ trait_test_arg, \ trait_test_arg, \ @@ -198,6 +199,7 @@ TEST_CASE_TEMPLATE_INVOKE(value_in_range_of_test, \ trait_test_arg, \ trait_test_arg); #else +// NOLINTNEXTLINE(bugprone-throwing-static-initialization) TEST_CASE_TEMPLATE_INVOKE(value_in_range_of_test, \ trait_test_arg, \ trait_test_arg, \ diff --git a/tests/src/unit-deserialization.cpp b/tests/src/unit-deserialization.cpp index ef5386659..58fe958ea 100644 --- a/tests/src/unit-deserialization.cpp +++ b/tests/src/unit-deserialization.cpp @@ -1143,7 +1143,7 @@ TEST_CASE("deserialization") #define ASCII_TYPES TYPE_LIST(char, wchar_t, char16_t, char32_t) #endif -TEST_CASE_TEMPLATE("deserialization of different character types (ASCII)", T, ASCII_TYPES) // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("deserialization of different character types (ASCII)", T, ASCII_TYPES) // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) { std::vector const v = {'t', 'r', 'u', 'e'}; CHECK(json::parse(v) == json(true)); @@ -1155,7 +1155,7 @@ TEST_CASE_TEMPLATE("deserialization of different character types (ASCII)", T, AS CHECK(l.events == std::vector({"boolean(true)"})); } -TEST_CASE_TEMPLATE("deserialization of different character types (UTF-8)", T, char, unsigned char, std::uint8_t) // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("deserialization of different character types (UTF-8)", T, char, unsigned char, std::uint8_t) // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) { // a star emoji std::vector const v = {'"', static_cast(0xe2u), static_cast(0xadu), static_cast(0x90u), static_cast(0xefu), static_cast(0xb8u), static_cast(0x8fu), '"'}; @@ -1167,7 +1167,7 @@ TEST_CASE_TEMPLATE("deserialization of different character types (UTF-8)", T, ch CHECK(l.events.size() == 1); } -TEST_CASE_TEMPLATE("deserialization of different character types (UTF-16)", T, char16_t) // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("deserialization of different character types (UTF-16)", T, char16_t) // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) { // a star emoji std::vector const v = {static_cast('"'), static_cast(0x2b50), static_cast(0xfe0f), static_cast('"')}; @@ -1179,7 +1179,7 @@ TEST_CASE_TEMPLATE("deserialization of different character types (UTF-16)", T, c CHECK(l.events.size() == 1); } -TEST_CASE_TEMPLATE("deserialization of different character types (UTF-32)", T, char32_t) // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("deserialization of different character types (UTF-32)", T, char32_t) // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) { // a star emoji std::vector const v = {static_cast('"'), static_cast(0x2b50), static_cast(0xfe0f), static_cast('"')}; diff --git a/tests/src/unit-element_access2.cpp b/tests/src/unit-element_access2.cpp index 61984ddf6..04f791615 100644 --- a/tests/src/unit-element_access2.cpp +++ b/tests/src/unit-element_access2.cpp @@ -16,7 +16,7 @@ // build test with C++14 // JSON_HAS_CPP_14 -TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_json) // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_json) // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) { SECTION("object") { @@ -1455,7 +1455,7 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j } #if !defined(JSON_NOEXCEPTION) -TEST_CASE_TEMPLATE("element access 2 (throwing tests)", Json, nlohmann::json, nlohmann::ordered_json) // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("element access 2 (throwing tests)", Json, nlohmann::json, nlohmann::ordered_json) // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) { SECTION("object") { @@ -1491,7 +1491,7 @@ TEST_CASE_TEMPLATE("element access 2 (throwing tests)", Json, nlohmann::json, nl #endif // TODO(falbrechtskirchinger) merge with the other test case; clean up -TEST_CASE_TEMPLATE("element access 2 (additional value() tests)", Json, nlohmann::json, nlohmann::ordered_json) // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("element access 2 (additional value() tests)", Json, nlohmann::json, nlohmann::ordered_json) // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) { using string_t = typename Json::string_t; using number_integer_t = typename Json::number_integer_t; diff --git a/tests/src/unit-iterators3.cpp b/tests/src/unit-iterators3.cpp index b9b9c5097..a766aa709 100644 --- a/tests/src/unit-iterators3.cpp +++ b/tests/src/unit-iterators3.cpp @@ -20,7 +20,7 @@ using nlohmann::json; #endif #ifdef JSON_HAS_CPP_14 -TEST_CASE_TEMPLATE("checking forward-iterators", T, // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("checking forward-iterators", T, // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) std::vector, std::string, nlohmann::json) { auto it1 = typename T::iterator{}; diff --git a/tests/src/unit-regression2.cpp b/tests/src/unit-regression2.cpp index 3df444a34..94fcd6712 100644 --- a/tests/src/unit-regression2.cpp +++ b/tests/src/unit-regression2.cpp @@ -1121,7 +1121,7 @@ TEST_CASE("regression tests 2") #endif } -TEST_CASE_TEMPLATE("issue #4798 - nlohmann::json::to_msgpack() encode float NaN as double", T, double, float) // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("issue #4798 - nlohmann::json::to_msgpack() encode float NaN as double", T, double, float) // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) { // With issue #4798, we encode NaN, infinity, and -infinity as float instead // of double to allow for smaller encodings. diff --git a/tests/src/unit-serialization.cpp b/tests/src/unit-serialization.cpp index 14e4a7007..7cbb26297 100644 --- a/tests/src/unit-serialization.cpp +++ b/tests/src/unit-serialization.cpp @@ -165,7 +165,7 @@ TEST_CASE("serialization") } } -TEST_CASE_TEMPLATE("serialization for extreme integer values", T, int32_t, uint32_t, int64_t, uint64_t) // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("serialization for extreme integer values", T, int32_t, uint32_t, int64_t, uint64_t) // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) { SECTION("minimum") { diff --git a/tests/src/unit-udt_macro.cpp b/tests/src/unit-udt_macro.cpp index 63a38b785..9285a55ca 100644 --- a/tests/src/unit-udt_macro.cpp +++ b/tests/src/unit-udt_macro.cpp @@ -462,7 +462,7 @@ class derived_person_only_serialize_private : person_without_default_constructor } // namespace persons -TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE", Pair, // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE", Pair, // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) std::pair, std::pair, std::pair, @@ -497,7 +497,7 @@ TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRU } } -TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE and NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE", Pair, // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE and NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE", Pair, // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) std::pair, std::pair, std::pair, @@ -532,7 +532,7 @@ TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_DERIVED_TY } } -TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT", Pair, // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT", Pair, // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) std::pair, std::pair, std::pair, @@ -583,7 +583,7 @@ TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRU } } -TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT", Pair, // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT", Pair, // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) std::pair, std::pair, std::pair, @@ -629,7 +629,7 @@ TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_DERIVED_TY } } -TEST_CASE_TEMPLATE("Serialization/deserialization of classes with 26 public/private member variables via NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE", Pair, // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("Serialization/deserialization of classes with 26 public/private member variables via NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE", Pair, // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) std::pair, std::pair, std::pair, @@ -648,7 +648,7 @@ TEST_CASE_TEMPLATE("Serialization/deserialization of classes with 26 public/priv } } -TEST_CASE_TEMPLATE("Serialization of non-default-constructible classes via NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE", Pair, // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("Serialization of non-default-constructible classes via NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE", Pair, // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) std::pair, std::pair, std::pair, @@ -678,7 +678,7 @@ TEST_CASE_TEMPLATE("Serialization of non-default-constructible classes via NLOHM } } -TEST_CASE_TEMPLATE("Serialization of non-default-constructible classes via NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE and NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE", Pair, // NOLINT(readability-math-missing-parentheses) +TEST_CASE_TEMPLATE("Serialization of non-default-constructible classes via NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE and NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE", Pair, // NOLINT(readability-math-missing-parentheses, bugprone-throwing-static-initialization) std::pair, std::pair, std::pair,