diff --git a/cmake/test.cmake b/cmake/test.cmake index adb3530d6..383dabbcd 100644 --- a/cmake/test.cmake +++ b/cmake/test.cmake @@ -416,11 +416,9 @@ function(json_test_add_unity_tests) endforeach() # files that must not be merged into a batch: unit-32bit.cpp is only built - # for 32bit targets, unit-no-macro-leak.cpp checks that including the - # library defines no unprefixed macro, which any other file would disturb, - # and unit-noexcept.cpp suppresses GCC's -Wnoexcept around its include of - # the library, which has no effect once another file included it first - set(standalone_files unit-32bit.cpp unit-no-macro-leak.cpp unit-noexcept.cpp) + # for 32bit targets, and unit-no-macro-leak.cpp checks that including the + # library defines no unprefixed macro, which any other file would disturb + set(standalone_files unit-32bit.cpp unit-no-macro-leak.cpp) set(harmless_macros "^(DOCTEST_.*|SKIP_TESTS_FOR_.*|JSON_TEST_DEPRECATED_FUNCTIONS_DELETED|JSON_TEST_STRICT_NUL_HANDLING_ENABLED|JSON_TEST_STRINGIZE)$") @@ -446,6 +444,17 @@ function(json_test_add_unity_tests) endif() endforeach() + # files that suppress GCC's -Wnoexcept around their include of the + # library: the suppression has no effect once another file of the + # batch included the library first + if(batchable) + file(READ ${file} file_content) + string(FIND "${file_content}" "SUPPRESS_WARNING(\"-Wnoexcept\")" suppresses_noexcept) + if(NOT ${suppresses_noexcept} EQUAL -1) + set(batchable FALSE) + endif() + endif() + set(pool plain) if(batchable) # collect the macros (un)defined before the library is included diff --git a/tests/src/unit-comparison.cpp b/tests/src/unit-comparison.cpp index 8048f9fe7..e6fcd699a 100644 --- a/tests/src/unit-comparison.cpp +++ b/tests/src/unit-comparison.cpp @@ -544,6 +544,8 @@ TEST_CASE("lexicographical comparison operators") namespace unit_comparison_detail { +namespace +{ // orders keys ascending or descending, as chosen when a map is created template class directed_less @@ -595,7 +597,7 @@ struct unordered_object_t : std::map, Allocator> using unordered_json = nlohmann::json::with_object_t; // the entries "0" to "9", enumerated in ascending or in descending order -inline unordered_json make_unordered_object(const bool descending) +unordered_json make_unordered_object(const bool descending) { unordered_json j = unordered_json::object_t(directed_less(descending)); for (int i = 0; i < 10; ++i) @@ -674,6 +676,7 @@ struct case_insensitive_less template using case_insensitive_map = std::map; using ci_json = nlohmann::json::with_object_t; +} // namespace } // namespace unit_comparison_detail // using-declarations rather than a using-directive, as this file may be