1. 06 4月, 2022 3 次提交
    • N
    • F
      CI: speedup AppVeyor builds by ~30% (#3422) · fa91409a
      Florian Albrechtskirchinger 提交于
      AppVeyor build VMs should provide at least two cores. Parallelize builds
      and tests.
      In addition, enable output on failure and disable verbose test output.
      fa91409a
    • F
      Restore disabled check for #3070 (except on MSVC) (#3421) · c2054b96
      Florian Albrechtskirchinger 提交于
      Restore the previously disabled check for regression #3070 on all
      compilers but MSVC.
      
      To summarize the issue:
      Given namespace fs = std::filesystem.
      On MSVC attempting to construct an fs::path from json results in an
      ambiguous overload resolution because fs::path can be constructed from
      both a std::string as well as another fs::path.
      To the best of my knowledge there is no way to fix an ambiguous overload
      situation involving a type we do not control and with json implicitly
      converting to both std::string and fs::path.
      
      Re-enabling the check where it compiles and keeping it disabled for MSVC
      is the best we can do.
      
      Closes #3377 and #3382.
      c2054b96
  2. 05 4月, 2022 1 次提交
  3. 04 4月, 2022 2 次提交
  4. 01 4月, 2022 1 次提交
  5. 25 3月, 2022 3 次提交
  6. 24 3月, 2022 2 次提交
    • K
      Refactor unit tests to use more convenient doctest assertion macros (#3393) · ce352568
      Krzysiek Karbowiak 提交于
      * Add missing check
      
      * Refactor assertions in unit-algorithms.cpp
      
      * Refactor assertions in unit-bson.cpp
      
      * Refactor assertions in unit-cbor.cpp
      
      * Refactor assertions in unit-class_const_iterator.cpp
      
      * Refactor assertions in unit-class_iterator.cpp
      
      * Refactor assertions in unit-class_parser.cpp
      
      * Refactor assertions in unit-constructor1.cpp
      
      * Refactor assertions in unit-convenience.cpp
      
      * Refactor assertions in unit-conversions.cpp
      
      * Refactor assertions in unit-deserialization.cpp
      
      * Refactor assertions in unit-element_access1.cpp
      
      * Refactor assertions in unit-element_access2.cpp
      
      * Refactor assertions in unit-iterators1.cpp
      
      * Refactor assertions in unit-iterators2.cpp
      
      * Refactor assertions in unit-json_patch.cpp
      
      * Refactor assertions in unit-json_pointer.cpp
      
      * Refactor assertions in unit-modifiers.cpp
      
      * Refactor assertions in unit-msgpack.cpp
      
      * Refactor assertions in unit-reference_access.cpp
      
      * Refactor assertions in unit-regression1.cpp
      
      * Refactor assertions in unit-serialization.cpp
      
      * Refactor assertions in unit-ubjson.cpp
      
      * Refactor assertions in unit-unicode1.cpp
      
      * Apply formatting
      ce352568
    • F
      Improve unit testing (Part 1) (#3380) · ad103e5b
      Florian Albrechtskirchinger 提交于
      * Refactor unit test creation
      
      Add functions for creating tests and to supply test- and
      standard-specific build settings.
      
      Raises minimum CMake version to 3.13 in test directory.
      
      json_test_add_test_for(
          <file>
          MAIN <main>
          [CXX_STANDARDS <version_number>...] [FORCE])
      
      Given a <file> unit-foo.cpp, produces
      
          test-foo_cpp<version_number>
      
      if C++ standard <version_number> is supported by the compiler and
      thesource file contains JSON_HAS_CPP_<version_number>.  Use FORCE to
      create the test regardless of the file containing
      JSON_HAS_CPP_<version_number>.  Test targets are linked against <main>.
      CXX_STANDARDS defaults to "11".
      
      json_test_set_test_options(
          all|<tests>
          [CXX_STANDARDS all|<args>...]
          [COMPILE_DEFINITIONS <args>...]
          [COMPILE_FEATURES <args>...]
          [COMPILE_OPTIONS <args>...]
          [LINK_LIBRARIES <args>...]
          [LINK_OPTIONS <args>...])
      
      Supply test- and standard-specific build settings.
      Specify multiple tests using a list e.g., "test-foo;test-bar".
      
      Must be called BEFORE the test is created.
      
      * Use CMAKE_MODULE_PATH
      
      * Don't undef some macros if JSON_TEST_KEEP_MACROS is defined
      
      * Use JSON_TEST_KEEP_MACROS
      
      Incidentally enables the regression tests for #2546 and #3070.
      
      A CHECK_THROWS_WITH_AS in #3070 was disabled which is tracked in #3377
      and a line in from_json(..., std_fs::path&) was marked with LCOV_EXCL_LINE.
      
      * Add three-way comparison feature test macro
      
      * Disable broken comparison if JSON_HAS_THREE_WAY_COMPARISON
      
      * Fix redefinition of inline constexpr statics
      
      Redelcaration of inline constexpr static data members in namespace scope
      was deprecated in C++17. Fixes -Werror=deprecated compilation failures.
      
      * Fix more test build failures due to missing noexcept
      
      * CI: update cmake_flags test to use CMake 3.13 in test directory
      
      Also change default for JSON_BuildTests option to depend on CMake
      version.
      
      * CI: turn *_CXXFLAGS into CMake lists
      
      * CI: use JSON_TestStandards to set CXX_STANDARD
      
      * CI: pass extra CXXFLAGS to standards tests
      ad103e5b
  7. 08 3月, 2022 2 次提交
    • F
      Make iterator operator++/--(int) equality-preserving (#3332) · 700b95f4
      Florian Albrechtskirchinger 提交于
      Commit f28fc226 introduced const qualifiers on post-(inc-/dec-)rement
      operators of iterators. These qualifiers prevent the use of basic_json
      in place of std::ranges::range, which requires the post-increment
      operator to be equality-preserving.
      
      These changes appear to be the result of ICC compiler suggestions, and
      no further explanation is discernible from the PR discussion (#858).
      Further testing revealed, that clang-tidy also suggests adding const to
      prevent "accidental mutation of a temporary object".
      
      As an alternative, this commit partially reverts f28fc226, removing all
      added const qualifiers from return types and adds lvalue reference
      qualifiers to the operator member functions instead.
      
      Unit tests ensure the operators remain equality-preserving and
      accidental mutation of temporaries following post-(inc-/dec-)rement is
      prohibited.
      
      Fixes #3331.
      700b95f4
    • F
      Fix C++20/gcc-12 issues (Part 1) (#3379) · f208a9c1
      Florian Albrechtskirchinger 提交于
      * 🔧 use proper GCC binary
      
      * 🔧 add more GCC warning flags
      
      *  try fix from https://github.com/nlohmann/json/issues/3138#issuecomment-1015562666
      
      * Fix custom allocator test build failures (C++20)
      
      Allocator tests fail to compile in C++20 mode with clang+MS STL due
      to missing copy constructors.
      
      * Fix test build failures due to missing noexcept (gcc-12)
      
      * alt_string has multiple member functions that should be marked noexcept.
      * nlohmann::ordered_map constructors can be noexcept.
      
      Compilation failures result from the warning flag -Werror=noexcept and
      gcc-12.
      
      * Disable broken comparison tests in C++20 mode
      Co-authored-by: NNiels Lohmann <mail@nlohmann.me>
      f208a9c1
  8. 07 3月, 2022 3 次提交
  9. 06 3月, 2022 2 次提交
    • N
      FetchContent_MakeAvailable (#3351) · c6d8892e
      Niels Lohmann 提交于
      * 🔧 use FetchContent_MakeAvailable
      
      * 💚 fix test names
      c6d8892e
    • F
      Fix and update CI (#3368) · d1e57df4
      Florian Albrechtskirchinger 提交于
      * CI: add workflow_dispatch trigger
      
      * CI: change msvc2019*/clang* runners to windows-2019
      
      GitHub updated their runners. windows-latest is now based on Windows
      Server 2022 and comes with different tool versions.
      MSVC 2019 is still available via the windows-2019 runner.
      d1e57df4
  10. 19 2月, 2022 1 次提交
  11. 12 2月, 2022 1 次提交
  12. 09 2月, 2022 1 次提交
  13. 31 1月, 2022 1 次提交
    • P
      Add macros NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and ..._NON_INTRUSIVE_WITH_DEFAULT (#3143) · eec79d4e
      pketelsen 提交于
      * Added new macros NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT.
      
      * Updated docs for NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT accordingly
      
      * Rephrased docs for NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT
      
      * Updated docs for NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT
      
      * Renamed default_obj in to avoid name clashes
      
      * Added test for serialization of default constructed object
      
      * Add const to getters for macro tests
      Co-authored-by: NChaoya Li <harry75369@gmail.com>
      eec79d4e
  14. 30 1月, 2022 1 次提交
  15. 26 1月, 2022 2 次提交
  16. 13 1月, 2022 1 次提交
  17. 12 1月, 2022 1 次提交
  18. 09 1月, 2022 1 次提交
  19. 06 1月, 2022 2 次提交
  20. 05 1月, 2022 2 次提交
  21. 04 1月, 2022 3 次提交
  22. 03 1月, 2022 3 次提交
  23. 02 1月, 2022 1 次提交