mirror of
https://github.com/nlohmann/json.git
synced 2026-09-29 11:10:30 +00:00
Match ABI tag order in namespace tests to abi_macros.hpp (#5551)
* Match ABI tag order in namespace tests to abi_macros.hpp NLOHMANN_JSON_ABI_TAGS concatenates the tags as _diag, _ldvcmp, _dp, but the default and noversion ABI tests expected _diag, _dp, _ldvcmp. The tests therefore failed whenever both JSON_DIAGNOSTIC_POSITIONS and JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON were enabled, a combination CI never exercises. Reorder the expectations to match the header. Also document the _dp tag in the namespace feature page, which listed only _diag and _ldvcmp. Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Test the ABI namespace with all ABI tags enabled Build the default and noversion ABI config tests a second time with JSON_DIAGNOSTICS, JSON_DIAGNOSTIC_POSITIONS and JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON all set, so the expected tag order is checked on every test run instead of depending on which CMake options a CI job happens to enable. Signed-off-by: Niels Lohmann <mail@nlohmann.me> --------- Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
@@ -15,6 +15,7 @@ The complete default namespace name is derived as follows:
|
|||||||
- [`JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md) defined non-zero appends `_diag`.
|
- [`JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md) defined non-zero appends `_diag`.
|
||||||
- [`JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON`](../api/macros/json_use_legacy_discarded_value_comparison.md)
|
- [`JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON`](../api/macros/json_use_legacy_discarded_value_comparison.md)
|
||||||
defined non-zero appends `_ldvcmp`.
|
defined non-zero appends `_ldvcmp`.
|
||||||
|
- [`JSON_DIAGNOSTIC_POSITIONS`](../api/macros/json_diagnostic_positions.md) defined non-zero appends `_dp`.
|
||||||
- The inline namespace ends with the suffix `_v` followed by the 3 components of the version number separated by
|
- The inline namespace ends with the suffix `_v` followed by the 3 components of the version number separated by
|
||||||
underscores. To omit the version component, see [Disabling the version component](#disabling-the-version-component)
|
underscores. To omit the version component, see [Disabling the version component](#disabling-the-version-component)
|
||||||
below.
|
below.
|
||||||
|
|||||||
@@ -14,6 +14,20 @@ add_test(
|
|||||||
NAME test-abi_config_noversion
|
NAME test-abi_config_noversion
|
||||||
COMMAND abi_config_noversion ${DOCTEST_TEST_FILTER})
|
COMMAND abi_config_noversion ${DOCTEST_TEST_FILTER})
|
||||||
|
|
||||||
|
# test default and no version namespace with all ABI tags enabled, so the
|
||||||
|
# expected tag order is checked regardless of the JSON_* CMake options
|
||||||
|
foreach(test default noversion)
|
||||||
|
add_executable(abi_config_${test}_all_tags ${test}.cpp)
|
||||||
|
target_compile_definitions(abi_config_${test}_all_tags PRIVATE
|
||||||
|
JSON_DIAGNOSTICS=1
|
||||||
|
JSON_DIAGNOSTIC_POSITIONS=1
|
||||||
|
JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON=1)
|
||||||
|
target_link_libraries(abi_config_${test}_all_tags PRIVATE abi_compat_main)
|
||||||
|
add_test(
|
||||||
|
NAME test-abi_config_${test}_all_tags
|
||||||
|
COMMAND abi_config_${test}_all_tags ${DOCTEST_TEST_FILTER})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
# test custom namespace
|
# test custom namespace
|
||||||
add_executable(abi_config_custom custom.cpp)
|
add_executable(abi_config_custom custom.cpp)
|
||||||
target_link_libraries(abi_config_custom PRIVATE abi_compat_main)
|
target_link_libraries(abi_config_custom PRIVATE abi_compat_main)
|
||||||
|
|||||||
@@ -24,14 +24,14 @@ TEST_CASE("default namespace")
|
|||||||
expected += "_diag";
|
expected += "_diag";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if JSON_DIAGNOSTIC_POSITIONS
|
|
||||||
expected += "_dp";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
|
#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
|
||||||
expected += "_ldvcmp";
|
expected += "_ldvcmp";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if JSON_DIAGNOSTIC_POSITIONS
|
||||||
|
expected += "_dp";
|
||||||
|
#endif
|
||||||
|
|
||||||
expected += "_v" STRINGIZE(NLOHMANN_JSON_VERSION_MAJOR);
|
expected += "_v" STRINGIZE(NLOHMANN_JSON_VERSION_MAJOR);
|
||||||
expected += "_" STRINGIZE(NLOHMANN_JSON_VERSION_MINOR);
|
expected += "_" STRINGIZE(NLOHMANN_JSON_VERSION_MINOR);
|
||||||
expected += "_" STRINGIZE(NLOHMANN_JSON_VERSION_PATCH) "::basic_json";
|
expected += "_" STRINGIZE(NLOHMANN_JSON_VERSION_PATCH) "::basic_json";
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ TEST_CASE("default namespace without version component")
|
|||||||
expected += "_diag";
|
expected += "_diag";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if JSON_DIAGNOSTIC_POSITIONS
|
|
||||||
expected += "_dp";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
|
#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
|
||||||
expected += "_ldvcmp";
|
expected += "_ldvcmp";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if JSON_DIAGNOSTIC_POSITIONS
|
||||||
|
expected += "_dp";
|
||||||
|
#endif
|
||||||
|
|
||||||
expected += "::basic_json";
|
expected += "::basic_json";
|
||||||
|
|
||||||
// fallback for Clang
|
// fallback for Clang
|
||||||
|
|||||||
Reference in New Issue
Block a user