From 5f2d6655d9ef185617d383cd4942d45f74774f00 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Thu, 21 May 2026 15:01:17 -0400 Subject: [PATCH 1/2] Extract bundling logic into its own module Signed-off-by: Juan Cruz Viotti --- .github/workflows/website-build.yml | 1 + .github/workflows/website-deploy.yml | 1 + CMakeLists.txt | 9 ++ benchmark/CMakeLists.txt | 6 +- benchmark/foundation.cc | 2 + config.cmake.in | 8 ++ doxygen/index.markdown | 1 + src/bundle/CMakeLists.txt | 16 ++++ src/{foundation => bundle}/bundle.cc | 2 + src/bundle/helpers.h | 86 +++++++++++++++++++ .../include/sourcemeta/blaze/bundle.h} | 40 +++++---- src/codegen/CMakeLists.txt | 2 + src/codegen/codegen.cc | 1 + src/compiler/CMakeLists.txt | 2 + src/compiler/compile.cc | 2 +- src/configuration/CMakeLists.txt | 1 + src/configuration/fetch.cc | 3 +- src/foundation/CMakeLists.txt | 4 +- .../include/sourcemeta/blaze/foundation.h | 1 - test/bundle/CMakeLists.txt | 23 +++++ .../bundle_2019_09_test.cc} | 34 ++++---- .../bundle_2020_12_test.cc} | 72 ++++++++-------- .../bundle_dependencies_test.cc} | 36 ++++---- .../bundle_draft0_test.cc} | 8 +- .../bundle_draft1_test.cc} | 8 +- .../bundle_draft2_test.cc} | 8 +- .../bundle_draft3_test.cc} | 22 ++--- .../bundle_draft4_test.cc} | 42 ++++----- .../bundle_draft6_test.cc} | 38 ++++---- .../bundle_draft7_test.cc} | 44 +++++----- .../bundle_test.cc} | 28 +++--- test/editor/CMakeLists.txt | 2 + test/editor/editor_test.cc | 1 + test/evaluator/CMakeLists.txt | 2 + test/evaluator/evaluator_test.cc | 3 +- test/foundation/CMakeLists.txt | 11 --- test/packaging/find_package/CMakeLists.txt | 1 + test/packaging/find_package/hello.cc | 13 ++- 38 files changed, 386 insertions(+), 198 deletions(-) create mode 100644 src/bundle/CMakeLists.txt rename src/{foundation => bundle}/bundle.cc (99%) create mode 100644 src/bundle/helpers.h rename src/{foundation/include/sourcemeta/blaze/foundation_bundle.h => bundle/include/sourcemeta/blaze/bundle.h} (89%) create mode 100644 test/bundle/CMakeLists.txt rename test/{foundation/foundation_bundle_2019_09_test.cc => bundle/bundle_2019_09_test.cc} (95%) rename test/{foundation/foundation_bundle_2020_12_test.cc => bundle/bundle_2020_12_test.cc} (95%) rename test/{foundation/foundation_dependencies_test.cc => bundle/bundle_dependencies_test.cc} (95%) rename test/{foundation/foundation_bundle_draft0_test.cc => bundle/bundle_draft0_test.cc} (92%) rename test/{foundation/foundation_bundle_draft1_test.cc => bundle/bundle_draft1_test.cc} (92%) rename test/{foundation/foundation_bundle_draft2_test.cc => bundle/bundle_draft2_test.cc} (92%) rename test/{foundation/foundation_bundle_draft3_test.cc => bundle/bundle_draft3_test.cc} (95%) rename test/{foundation/foundation_bundle_draft4_test.cc => bundle/bundle_draft4_test.cc} (95%) rename test/{foundation/foundation_bundle_draft6_test.cc => bundle/bundle_draft6_test.cc} (95%) rename test/{foundation/foundation_bundle_draft7_test.cc => bundle/bundle_draft7_test.cc} (95%) rename test/{foundation/foundation_bundle_test.cc => bundle/bundle_test.cc} (95%) diff --git a/.github/workflows/website-build.yml b/.github/workflows/website-build.yml index 3dfbb5176..3773ee799 100644 --- a/.github/workflows/website-build.yml +++ b/.github/workflows/website-build.yml @@ -26,6 +26,7 @@ jobs: -DBLAZE_DOCUMENTATION:BOOL=OFF -DBLAZE_EDITOR:BOOL=OFF -DBLAZE_FOUNDATION:BOOL=OFF + -DBLAZE_BUNDLE:BOOL=OFF -DBLAZE_TESTS:BOOL=OFF -DBLAZE_DOCS:BOOL=ON - run: cmake --build ./build --config Release --target doxygen diff --git a/.github/workflows/website-deploy.yml b/.github/workflows/website-deploy.yml index d331c67b3..f3bbcc95e 100644 --- a/.github/workflows/website-deploy.yml +++ b/.github/workflows/website-deploy.yml @@ -37,6 +37,7 @@ jobs: -DBLAZE_DOCUMENTATION:BOOL=OFF -DBLAZE_EDITOR:BOOL=OFF -DBLAZE_FOUNDATION:BOOL=OFF + -DBLAZE_BUNDLE:BOOL=OFF -DBLAZE_TESTS:BOOL=OFF -DBLAZE_DOCS:BOOL=ON - run: cmake --build ./build --config Release --target doxygen diff --git a/CMakeLists.txt b/CMakeLists.txt index 3369d4d8a..86025f872 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ option(BLAZE_CODEGEN "Build the Blaze codegen library" ON) option(BLAZE_DOCUMENTATION "Build the Blaze documentation generator library" ON) option(BLAZE_EDITOR "Build the Blaze editor schema compatibility library" ON) option(BLAZE_FOUNDATION "Build the Blaze foundation JSON Schema library" ON) +option(BLAZE_BUNDLE "Build the Blaze bundle library" ON) option(BLAZE_TESTS "Build the Blaze tests" OFF) option(BLAZE_BENCHMARK "Build the Blaze benchmarks" OFF) option(BLAZE_CONTRIB "Build the Blaze contrib programs" OFF) @@ -51,6 +52,10 @@ if(BLAZE_FOUNDATION) add_subdirectory(src/foundation) endif() +if(BLAZE_BUNDLE) + add_subdirectory(src/bundle) +endif() + if(BLAZE_COMPILER) add_subdirectory(src/compiler) endif() @@ -137,6 +142,10 @@ if(BLAZE_TESTS) add_subdirectory(test/foundation) endif() + if(BLAZE_BUNDLE) + add_subdirectory(test/bundle) + endif() + if(BLAZE_COMPILER) add_subdirectory(test/compiler) endif() diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index 7e41098d4..65bb36931 100644 --- a/benchmark/CMakeLists.txt +++ b/benchmark/CMakeLists.txt @@ -1,6 +1,6 @@ set(BENCHMARK_SOURCES) -if(BLAZE_FOUNDATION) +if(BLAZE_FOUNDATION AND BLAZE_BUNDLE) list(APPEND BENCHMARK_SOURCES foundation.cc) endif() @@ -53,6 +53,10 @@ if(BENCHMARK_SOURCES) target_link_libraries(sourcemeta_blaze_benchmark PRIVATE sourcemeta::blaze::foundation) endif() + if(BLAZE_BUNDLE) + target_link_libraries(sourcemeta_blaze_benchmark + PRIVATE sourcemeta::blaze::bundle) + endif() add_custom_target(benchmark_all COMMAND sourcemeta_blaze_benchmark diff --git a/benchmark/foundation.cc b/benchmark/foundation.cc index d42da0ee0..76cccf103 100644 --- a/benchmark/foundation.cc +++ b/benchmark/foundation.cc @@ -4,7 +4,9 @@ #include // std::filesystem #include // std::vector +#include #include + #include #include diff --git a/config.cmake.in b/config.cmake.in index 695683bcd..99ff725a7 100644 --- a/config.cmake.in +++ b/config.cmake.in @@ -14,6 +14,7 @@ if(NOT BLAZE_COMPONENTS) list(APPEND BLAZE_COMPONENTS codegen) list(APPEND BLAZE_COMPONENTS documentation) list(APPEND BLAZE_COMPONENTS editor) + list(APPEND BLAZE_COMPONENTS bundle) endif() include(CMakeFindDependencyMacro) @@ -24,6 +25,7 @@ foreach(component ${BLAZE_COMPONENTS}) include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_foundation.cmake") elseif(component STREQUAL "compiler") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_foundation.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_bundle.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_evaluator.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_compiler.cmake") elseif(component STREQUAL "evaluator") @@ -31,6 +33,7 @@ foreach(component ${BLAZE_COMPONENTS}) include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_evaluator.cmake") elseif(component STREQUAL "test") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_foundation.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_bundle.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_evaluator.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_compiler.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_test.cmake") @@ -40,6 +43,7 @@ foreach(component ${BLAZE_COMPONENTS}) include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_output.cmake") elseif(component STREQUAL "configuration") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_foundation.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_bundle.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_configuration.cmake") elseif(component STREQUAL "alterschema") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_foundation.cmake") @@ -49,6 +53,7 @@ foreach(component ${BLAZE_COMPONENTS}) include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_alterschema.cmake") elseif(component STREQUAL "codegen") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_foundation.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_bundle.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_evaluator.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_compiler.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_output.cmake") @@ -60,6 +65,9 @@ foreach(component ${BLAZE_COMPONENTS}) elseif(component STREQUAL "editor") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_foundation.cmake") include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_editor.cmake") + elseif(component STREQUAL "bundle") + include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_foundation.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_blaze_bundle.cmake") else() message(FATAL_ERROR "Unknown Blaze component: ${component}") endif() diff --git a/doxygen/index.markdown b/doxygen/index.markdown index 0822b3cd7..e1e920be1 100644 --- a/doxygen/index.markdown +++ b/doxygen/index.markdown @@ -74,6 +74,7 @@ CMake | `BLAZE_DOCUMENTATION` | Boolean | `ON` | Build the Blaze documentation library | | `BLAZE_EDITOR` | Boolean | `ON` | Build the Blaze editor library | | `BLAZE_FOUNDATION` | Boolean | `ON` | Build the Blaze foundation library | +| `BLAZE_BUNDLE` | Boolean | `ON` | Build the Blaze bundle library | | `BLAZE_TESTS` | Boolean | `OFF` | Build the Blaze tests | | `BLAZE_BENCHMARK` | Boolean | `OFF` | Build the Blaze benchmarks | | `BLAZE_CONTRIB` | Boolean | `OFF` | Build the Blaze contrib programs | diff --git a/src/bundle/CMakeLists.txt b/src/bundle/CMakeLists.txt new file mode 100644 index 000000000..42096c775 --- /dev/null +++ b/src/bundle/CMakeLists.txt @@ -0,0 +1,16 @@ +sourcemeta_library(NAMESPACE sourcemeta PROJECT blaze NAME bundle + FOLDER "Blaze/Bundle" + SOURCES bundle.cc helpers.h) + +if(BLAZE_INSTALL) + sourcemeta_library_install(NAMESPACE sourcemeta PROJECT blaze NAME bundle) +endif() + +target_link_libraries(sourcemeta_blaze_bundle PUBLIC + sourcemeta::core::json) +target_link_libraries(sourcemeta_blaze_bundle PUBLIC + sourcemeta::core::jsonpointer) +target_link_libraries(sourcemeta_blaze_bundle PUBLIC + sourcemeta::blaze::foundation) +target_link_libraries(sourcemeta_blaze_bundle PRIVATE + sourcemeta::core::uri) diff --git a/src/foundation/bundle.cc b/src/bundle/bundle.cc similarity index 99% rename from src/foundation/bundle.cc rename to src/bundle/bundle.cc index 16e416cf3..d28a00dd9 100644 --- a/src/foundation/bundle.cc +++ b/src/bundle/bundle.cc @@ -1,3 +1,5 @@ +#include + #include #include "helpers.h" diff --git a/src/bundle/helpers.h b/src/bundle/helpers.h new file mode 100644 index 000000000..d6dacfa17 --- /dev/null +++ b/src/bundle/helpers.h @@ -0,0 +1,86 @@ +#ifndef SOURCEMETA_BLAZE_BUNDLE_HELPERS_H +#define SOURCEMETA_BLAZE_BUNDLE_HELPERS_H + +#include + +#include // assert +#include // std::string_view + +namespace sourcemeta::blaze { + +inline auto id_keyword(const SchemaBaseDialect base_dialect) + -> std::string_view { + switch (base_dialect) { + case SchemaBaseDialect::JSON_Schema_2020_12: + case SchemaBaseDialect::JSON_Schema_2020_12_Hyper: + case SchemaBaseDialect::JSON_Schema_2019_09: + case SchemaBaseDialect::JSON_Schema_2019_09_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_7: + case SchemaBaseDialect::JSON_Schema_Draft_7_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_6: + case SchemaBaseDialect::JSON_Schema_Draft_6_Hyper: + return "$id"; + case SchemaBaseDialect::JSON_Schema_Draft_4: + case SchemaBaseDialect::JSON_Schema_Draft_4_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_3: + case SchemaBaseDialect::JSON_Schema_Draft_3_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_2_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_1_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_0_Hyper: + return "id"; + } + + assert(false); + return "$id"; +} + +inline auto definitions_keyword(const SchemaBaseDialect base_dialect) + -> std::string_view { + switch (base_dialect) { + case SchemaBaseDialect::JSON_Schema_2020_12: + case SchemaBaseDialect::JSON_Schema_2020_12_Hyper: + case SchemaBaseDialect::JSON_Schema_2019_09: + case SchemaBaseDialect::JSON_Schema_2019_09_Hyper: + return "$defs"; + case SchemaBaseDialect::JSON_Schema_Draft_7: + case SchemaBaseDialect::JSON_Schema_Draft_7_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_6: + case SchemaBaseDialect::JSON_Schema_Draft_6_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_4: + case SchemaBaseDialect::JSON_Schema_Draft_4_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_3: + case SchemaBaseDialect::JSON_Schema_Draft_3_Hyper: + return "definitions"; + case SchemaBaseDialect::JSON_Schema_Draft_2_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_1_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_0_Hyper: + return ""; + } + + assert(false); + return "$defs"; +} + +// In older drafts, the presence of `$ref` would override any sibling keywords +// See +// https://json-schema.org/draft-07/draft-handrews-json-schema-01#rfc.section.8.3 +inline auto +ref_overrides_adjacent_keywords(const SchemaBaseDialect base_dialect) -> bool { + switch (base_dialect) { + case SchemaBaseDialect::JSON_Schema_Draft_7: + case SchemaBaseDialect::JSON_Schema_Draft_7_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_6: + case SchemaBaseDialect::JSON_Schema_Draft_6_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_4: + case SchemaBaseDialect::JSON_Schema_Draft_4_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_3: + case SchemaBaseDialect::JSON_Schema_Draft_3_Hyper: + return true; + default: + return false; + } +} + +} // namespace sourcemeta::blaze + +#endif diff --git a/src/foundation/include/sourcemeta/blaze/foundation_bundle.h b/src/bundle/include/sourcemeta/blaze/bundle.h similarity index 89% rename from src/foundation/include/sourcemeta/blaze/foundation_bundle.h rename to src/bundle/include/sourcemeta/blaze/bundle.h index b439736e0..311a2189c 100644 --- a/src/foundation/include/sourcemeta/blaze/foundation_bundle.h +++ b/src/bundle/include/sourcemeta/blaze/bundle.h @@ -1,24 +1,31 @@ -#ifndef SOURCEMETA_BLAZE_FOUNDATION_BUNDLE_H -#define SOURCEMETA_BLAZE_FOUNDATION_BUNDLE_H +#ifndef SOURCEMETA_BLAZE_BUNDLE_H_ +#define SOURCEMETA_BLAZE_BUNDLE_H_ -#ifndef SOURCEMETA_BLAZE_FOUNDATION_EXPORT -#include +/// @defgroup bundle Bundle +/// @brief Bundle JSON Schemas by inlining their external references. +/// +/// This functionality is included as follows: +/// +/// ```cpp +/// #include +/// ``` + +#ifndef SOURCEMETA_BLAZE_BUNDLE_EXPORT +#include #endif #include #include -// NOLINTBEGIN(misc-include-cleaner) -#include -#include -// NOLINTEND(misc-include-cleaner) +#include #include // std::function +#include // std::optional, std::nullopt #include // std::string_view namespace sourcemeta::blaze { -/// @ingroup foundation +/// @ingroup bundle /// A callback to get dependency information /// - Origin URI (empty if none) /// - Pointer (reference keyword from the origin) @@ -28,13 +35,14 @@ using DependencyCallback = std::function; -/// @ingroup foundation +/// @ingroup bundle /// /// This function recursively traverses and reports the external references in a /// schema. For example: /// /// ```cpp /// #include +/// #include /// #include /// /// // A custom resolver that knows about an additional schema @@ -66,7 +74,7 @@ using DependencyCallback = /// // Do something with the information /// }); /// ``` -SOURCEMETA_BLAZE_FOUNDATION_EXPORT +SOURCEMETA_BLAZE_BUNDLE_EXPORT auto dependencies(const sourcemeta::core::JSON &schema, const SchemaWalker &walker, const SchemaResolver &resolver, const DependencyCallback &callback, @@ -75,7 +83,7 @@ auto dependencies(const sourcemeta::core::JSON &schema, const SchemaFrame::Paths &paths = { sourcemeta::core::empty_weak_pointer}) -> void; -/// @ingroup foundation +/// @ingroup bundle /// /// This function bundles a JSON Schema (starting from Draft 4) by embedding /// every remote reference into the top level schema resource, handling circular @@ -83,6 +91,7 @@ auto dependencies(const sourcemeta::core::JSON &schema, /// /// ```cpp /// #include +/// #include /// #include /// #include /// @@ -124,7 +133,7 @@ auto dependencies(const sourcemeta::core::JSON &schema, /// /// assert(document == expected); /// ``` -SOURCEMETA_BLAZE_FOUNDATION_EXPORT +SOURCEMETA_BLAZE_BUNDLE_EXPORT auto bundle(sourcemeta::core::JSON &schema, const SchemaWalker &walker, const SchemaResolver &resolver, std::string_view default_dialect = "", @@ -134,7 +143,7 @@ auto bundle(sourcemeta::core::JSON &schema, const SchemaWalker &walker, const SchemaFrame::Paths &paths = { sourcemeta::core::empty_weak_pointer}) -> void; -/// @ingroup foundation +/// @ingroup bundle /// /// This function bundles a JSON Schema (starting from Draft 4) by embedding /// every remote reference into the top level schema resource, handling circular @@ -143,6 +152,7 @@ auto bundle(sourcemeta::core::JSON &schema, const SchemaWalker &walker, /// /// ```cpp /// #include +/// #include /// #include /// #include /// @@ -185,7 +195,7 @@ auto bundle(sourcemeta::core::JSON &schema, const SchemaWalker &walker, /// /// assert(result == expected); /// ``` -SOURCEMETA_BLAZE_FOUNDATION_EXPORT +SOURCEMETA_BLAZE_BUNDLE_EXPORT auto bundle( const sourcemeta::core::JSON &schema, const SchemaWalker &walker, const SchemaResolver &resolver, std::string_view default_dialect = "", diff --git a/src/codegen/CMakeLists.txt b/src/codegen/CMakeLists.txt index a570b15b4..c4dcfc252 100644 --- a/src/codegen/CMakeLists.txt +++ b/src/codegen/CMakeLists.txt @@ -16,5 +16,7 @@ target_link_libraries(sourcemeta_blaze_codegen PUBLIC sourcemeta::core::json) target_link_libraries(sourcemeta_blaze_codegen PUBLIC sourcemeta::blaze::foundation) +target_link_libraries(sourcemeta_blaze_codegen PRIVATE + sourcemeta::blaze::bundle) target_link_libraries(sourcemeta_blaze_codegen PRIVATE sourcemeta::blaze::alterschema) diff --git a/src/codegen/codegen.cc b/src/codegen/codegen.cc index c7831daae..334758ac7 100644 --- a/src/codegen/codegen.cc +++ b/src/codegen/codegen.cc @@ -1,4 +1,5 @@ #include +#include #include #include // std::ranges::sort diff --git a/src/compiler/CMakeLists.txt b/src/compiler/CMakeLists.txt index d0d0da5e1..b6a1dfd96 100644 --- a/src/compiler/CMakeLists.txt +++ b/src/compiler/CMakeLists.txt @@ -26,5 +26,7 @@ target_link_libraries(sourcemeta_blaze_compiler PRIVATE sourcemeta::core::uri) target_link_libraries(sourcemeta_blaze_compiler PUBLIC sourcemeta::blaze::foundation) +target_link_libraries(sourcemeta_blaze_compiler PRIVATE + sourcemeta::blaze::bundle) target_link_libraries(sourcemeta_blaze_compiler PUBLIC sourcemeta::blaze::evaluator) diff --git a/src/compiler/compile.cc b/src/compiler/compile.cc index 857719669..8a6bf7cb6 100644 --- a/src/compiler/compile.cc +++ b/src/compiler/compile.cc @@ -1,6 +1,6 @@ +#include #include #include - #include #include // std::move, std::sort, std::unique diff --git a/src/configuration/CMakeLists.txt b/src/configuration/CMakeLists.txt index 0b7ed316c..ab58ed041 100644 --- a/src/configuration/CMakeLists.txt +++ b/src/configuration/CMakeLists.txt @@ -11,3 +11,4 @@ target_link_libraries(sourcemeta_blaze_configuration PRIVATE sourcemeta::core::u target_link_libraries(sourcemeta_blaze_configuration PRIVATE sourcemeta::core::io) target_link_libraries(sourcemeta_blaze_configuration PRIVATE sourcemeta::core::crypto) target_link_libraries(sourcemeta_blaze_configuration PRIVATE sourcemeta::blaze::foundation) +target_link_libraries(sourcemeta_blaze_configuration PRIVATE sourcemeta::blaze::bundle) diff --git a/src/configuration/fetch.cc b/src/configuration/fetch.cc index 8de8e3c18..126c5b235 100644 --- a/src/configuration/fetch.cc +++ b/src/configuration/fetch.cc @@ -1,6 +1,7 @@ +#include #include - #include + #include #include diff --git a/src/foundation/CMakeLists.txt b/src/foundation/CMakeLists.txt index 33b479e01..119c057bf 100644 --- a/src/foundation/CMakeLists.txt +++ b/src/foundation/CMakeLists.txt @@ -4,10 +4,10 @@ include(./known_resolver.cmake) sourcemeta_library(NAMESPACE sourcemeta PROJECT blaze NAME foundation FOLDER "Blaze/Foundation" - PRIVATE_HEADERS bundle.h walker.h frame.h error.h + PRIVATE_HEADERS walker.h frame.h error.h types.h vocabularies.h SOURCES foundation.cc vocabularies.cc known_walker.cc - frame.cc walker.cc bundle.cc format.cc helpers.h + frame.cc walker.cc format.cc helpers.h "${CMAKE_CURRENT_BINARY_DIR}/known_resolver.cc") if(BLAZE_INSTALL) diff --git a/src/foundation/include/sourcemeta/blaze/foundation.h b/src/foundation/include/sourcemeta/blaze/foundation.h index e8b78b328..ae95f7638 100644 --- a/src/foundation/include/sourcemeta/blaze/foundation.h +++ b/src/foundation/include/sourcemeta/blaze/foundation.h @@ -9,7 +9,6 @@ #include // NOLINTBEGIN(misc-include-cleaner) -#include #include #include #include diff --git a/test/bundle/CMakeLists.txt b/test/bundle/CMakeLists.txt new file mode 100644 index 000000000..af08f4afb --- /dev/null +++ b/test/bundle/CMakeLists.txt @@ -0,0 +1,23 @@ +sourcemeta_googletest(NAMESPACE sourcemeta PROJECT blaze NAME bundle + FOLDER "Blaze/Bundle" + SOURCES + bundle_2020_12_test.cc + bundle_2019_09_test.cc + bundle_draft7_test.cc + bundle_draft6_test.cc + bundle_draft4_test.cc + bundle_draft3_test.cc + bundle_draft2_test.cc + bundle_draft1_test.cc + bundle_draft0_test.cc + bundle_test.cc + bundle_dependencies_test.cc) + +target_link_libraries(sourcemeta_blaze_bundle_unit + PRIVATE sourcemeta::core::json) +target_link_libraries(sourcemeta_blaze_bundle_unit + PRIVATE sourcemeta::core::jsonpointer) +target_link_libraries(sourcemeta_blaze_bundle_unit + PRIVATE sourcemeta::blaze::foundation) +target_link_libraries(sourcemeta_blaze_bundle_unit + PRIVATE sourcemeta::blaze::bundle) diff --git a/test/foundation/foundation_bundle_2019_09_test.cc b/test/bundle/bundle_2019_09_test.cc similarity index 95% rename from test/foundation/foundation_bundle_2019_09_test.cc rename to test/bundle/bundle_2019_09_test.cc index 9cd6044f9..235ae4214 100644 --- a/test/foundation/foundation_bundle_2019_09_test.cc +++ b/test/bundle/bundle_2019_09_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -87,7 +89,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle_2019_09, no_references_no_id) { +TEST(Bundle_2019_09, no_references_no_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema" })JSON"); @@ -102,7 +104,7 @@ TEST(Foundation_bundle_2019_09, no_references_no_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, const_no_references_no_id) { +TEST(Bundle_2019_09, const_no_references_no_id) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema" })JSON"); @@ -117,7 +119,7 @@ TEST(Foundation_bundle_2019_09, const_no_references_no_id) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle_2019_09, simple_with_id) { +TEST(Bundle_2019_09, simple_with_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2019-09/schema", @@ -168,7 +170,7 @@ TEST(Foundation_bundle_2019_09, simple_with_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, simple_without_id) { +TEST(Bundle_2019_09, simple_without_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { @@ -217,7 +219,7 @@ TEST(Foundation_bundle_2019_09, simple_without_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, schema_not_found) { +TEST(Bundle_2019_09, schema_not_found) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2019-09/schema", @@ -231,7 +233,7 @@ TEST(Foundation_bundle_2019_09, schema_not_found) { sourcemeta::blaze::SchemaResolutionError); } -TEST(Foundation_bundle_2019_09, idempotency) { +TEST(Bundle_2019_09, idempotency) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2019-09/schema", @@ -275,7 +277,7 @@ TEST(Foundation_bundle_2019_09, idempotency) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, pre_embedded) { +TEST(Bundle_2019_09, pre_embedded) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2019-09/schema", @@ -322,7 +324,7 @@ TEST(Foundation_bundle_2019_09, pre_embedded) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, taken_definitions_entry) { +TEST(Bundle_2019_09, taken_definitions_entry) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2019-09/schema", @@ -369,7 +371,7 @@ TEST(Foundation_bundle_2019_09, taken_definitions_entry) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, recursive) { +TEST(Bundle_2019_09, recursive) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "https://www.sourcemeta.com/recursive" @@ -395,7 +397,7 @@ TEST(Foundation_bundle_2019_09, recursive) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, recursive_empty_fragment) { +TEST(Bundle_2019_09, recursive_empty_fragment) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "https://www.sourcemeta.com/recursive-empty-fragment#" @@ -421,7 +423,7 @@ TEST(Foundation_bundle_2019_09, recursive_empty_fragment) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, anonymous_no_dialect) { +TEST(Bundle_2019_09, anonymous_no_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$ref": "https://www.sourcemeta.com/anonymous" })JSON"); @@ -443,7 +445,7 @@ TEST(Foundation_bundle_2019_09, anonymous_no_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, metaschema) { +TEST(Bundle_2019_09, metaschema) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://example.com/meta/1.json", "type": "string" @@ -472,7 +474,7 @@ TEST(Foundation_bundle_2019_09, metaschema) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, relative_base_uri_with_ref) { +TEST(Bundle_2019_09, relative_base_uri_with_ref) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "common", @@ -501,7 +503,7 @@ TEST(Foundation_bundle_2019_09, relative_base_uri_with_ref) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2019_09, hyperschema_smoke) { +TEST(Bundle_2019_09, hyperschema_smoke) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "https://json-schema.org/draft/2019-09/hyper-schema" @@ -513,7 +515,7 @@ TEST(Foundation_bundle_2019_09, hyperschema_smoke) { EXPECT_TRUE(document.is_object()); } -TEST(Foundation_bundle_2019_09, hyperschema_1) { +TEST(Bundle_2019_09, hyperschema_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ @@ -551,7 +553,7 @@ TEST(Foundation_bundle_2019_09, hyperschema_1) { "https://json-schema.org/draft/2019-09/hyper-schema")); } -TEST(Foundation_bundle_2019_09, hyperschema_2) { +TEST(Bundle_2019_09, hyperschema_2) { sourcemeta::core::JSON document = sourcemeta::blaze::schema_resolver( "https://json-schema.org/draft/2019-09/hyper-schema") diff --git a/test/foundation/foundation_bundle_2020_12_test.cc b/test/bundle/bundle_2020_12_test.cc similarity index 95% rename from test/foundation/foundation_bundle_2020_12_test.cc rename to test/bundle/bundle_2020_12_test.cc index 74ab41be4..bbf04cd9f 100644 --- a/test/foundation/foundation_bundle_2020_12_test.cc +++ b/test/bundle/bundle_2020_12_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -254,7 +256,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle_2020_12, no_references_no_id) { +TEST(Bundle_2020_12, no_references_no_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema" })JSON"); @@ -269,7 +271,7 @@ TEST(Foundation_bundle_2020_12, no_references_no_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, const_no_references_no_id) { +TEST(Bundle_2020_12, const_no_references_no_id) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema" })JSON"); @@ -284,7 +286,7 @@ TEST(Foundation_bundle_2020_12, const_no_references_no_id) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle_2020_12, simple_with_id) { +TEST(Bundle_2020_12, simple_with_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -342,7 +344,7 @@ TEST(Foundation_bundle_2020_12, simple_with_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, simple_without_id) { +TEST(Bundle_2020_12, simple_without_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { @@ -398,7 +400,7 @@ TEST(Foundation_bundle_2020_12, simple_without_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, schema_not_found) { +TEST(Bundle_2020_12, schema_not_found) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -412,7 +414,7 @@ TEST(Foundation_bundle_2020_12, schema_not_found) { sourcemeta::blaze::SchemaResolutionError); } -TEST(Foundation_bundle_2020_12, anchor_not_found) { +TEST(Bundle_2020_12, anchor_not_found) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -426,7 +428,7 @@ TEST(Foundation_bundle_2020_12, anchor_not_found) { sourcemeta::blaze::SchemaReferenceError); } -TEST(Foundation_bundle_2020_12, idempotency) { +TEST(Bundle_2020_12, idempotency) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -470,7 +472,7 @@ TEST(Foundation_bundle_2020_12, idempotency) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, pre_embedded) { +TEST(Bundle_2020_12, pre_embedded) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -517,7 +519,7 @@ TEST(Foundation_bundle_2020_12, pre_embedded) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, taken_definitions_entry) { +TEST(Bundle_2020_12, taken_definitions_entry) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -564,7 +566,7 @@ TEST(Foundation_bundle_2020_12, taken_definitions_entry) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, recursive) { +TEST(Bundle_2020_12, recursive) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://www.sourcemeta.com/recursive" @@ -590,7 +592,7 @@ TEST(Foundation_bundle_2020_12, recursive) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, recursive_empty_fragment) { +TEST(Bundle_2020_12, recursive_empty_fragment) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://www.sourcemeta.com/recursive-empty-fragment#" @@ -616,7 +618,7 @@ TEST(Foundation_bundle_2020_12, recursive_empty_fragment) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, anonymous_no_dialect) { +TEST(Bundle_2020_12, anonymous_no_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$ref": "https://www.sourcemeta.com/anonymous" })JSON"); @@ -638,7 +640,7 @@ TEST(Foundation_bundle_2020_12, anonymous_no_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, relative_in_target_without_id) { +TEST(Bundle_2020_12, relative_in_target_without_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com/test", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -669,7 +671,7 @@ TEST(Foundation_bundle_2020_12, relative_in_target_without_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, relative_base_uri_with_ref) { +TEST(Bundle_2020_12, relative_base_uri_with_ref) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "common", @@ -698,7 +700,7 @@ TEST(Foundation_bundle_2020_12, relative_base_uri_with_ref) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, metaschema) { +TEST(Bundle_2020_12, metaschema) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://example.com/meta/1.json", "type": "string" @@ -727,7 +729,7 @@ TEST(Foundation_bundle_2020_12, metaschema) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, openapi_3_1_dialect) { +TEST(Bundle_2020_12, openapi_3_1_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://spec.openapis.org/oas/3.1/dialect/base", "type": "object" @@ -794,7 +796,7 @@ TEST(Foundation_bundle_2020_12, openapi_3_1_dialect) { .value()); } -TEST(Foundation_bundle_2020_12, hyperschema_smoke) { +TEST(Bundle_2020_12, hyperschema_smoke) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://json-schema.org/draft/2020-12/hyper-schema" @@ -806,7 +808,7 @@ TEST(Foundation_bundle_2020_12, hyperschema_smoke) { EXPECT_TRUE(document.is_object()); } -TEST(Foundation_bundle_2020_12, hyperschema_1) { +TEST(Bundle_2020_12, hyperschema_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ @@ -846,7 +848,7 @@ TEST(Foundation_bundle_2020_12, hyperschema_1) { "https://json-schema.org/draft/2020-12/hyper-schema")); } -TEST(Foundation_bundle_2020_12, bundle_to_definitions) { +TEST(Bundle_2020_12, bundle_to_definitions) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://www.sourcemeta.com/recursive" @@ -873,7 +875,7 @@ TEST(Foundation_bundle_2020_12, bundle_to_definitions) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, custom_nested_object_path_non_existent) { +TEST(Bundle_2020_12, custom_nested_object_path_non_existent) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://www.sourcemeta.com/recursive" @@ -904,7 +906,7 @@ TEST(Foundation_bundle_2020_12, custom_nested_object_path_non_existent) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, custom_nested_object_path_half_existent) { +TEST(Bundle_2020_12, custom_nested_object_path_half_existent) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://www.sourcemeta.com/recursive", @@ -936,8 +938,7 @@ TEST(Foundation_bundle_2020_12, custom_nested_object_path_half_existent) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, - custom_nested_object_path_half_existent_with_array) { +TEST(Bundle_2020_12, custom_nested_object_path_half_existent_with_array) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://www.sourcemeta.com/recursive", @@ -971,7 +972,7 @@ TEST(Foundation_bundle_2020_12, EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, custom_nested_object_path_not_object) { +TEST(Bundle_2020_12, custom_nested_object_path_not_object) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://www.sourcemeta.com/recursive", @@ -985,7 +986,7 @@ TEST(Foundation_bundle_2020_12, custom_nested_object_path_not_object) { sourcemeta::blaze::SchemaError); } -TEST(Foundation_bundle_2020_12, default_id_with_different_ref_target_id) { +TEST(Bundle_2020_12, default_id_with_different_ref_target_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Entry", @@ -1016,8 +1017,7 @@ TEST(Foundation_bundle_2020_12, default_id_with_different_ref_target_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, - default_id_with_different_ref_target_id_duplicate_refs) { +TEST(Bundle_2020_12, default_id_with_different_ref_target_id_duplicate_refs) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { @@ -1052,8 +1052,7 @@ TEST(Foundation_bundle_2020_12, EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, - default_id_with_different_ref_target_id_with_fragment) { +TEST(Bundle_2020_12, default_id_with_different_ref_target_id_with_fragment) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { @@ -1086,7 +1085,7 @@ TEST(Foundation_bundle_2020_12, EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, deduplicate_embedded_from_prebundled) { +TEST(Bundle_2020_12, deduplicate_embedded_from_prebundled) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/dedup-entry", @@ -1128,7 +1127,7 @@ TEST(Foundation_bundle_2020_12, deduplicate_embedded_from_prebundled) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, conflicting_embedded_from_prebundled) { +TEST(Bundle_2020_12, conflicting_embedded_from_prebundled) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/dedup-conflict-entry", @@ -1143,7 +1142,7 @@ TEST(Foundation_bundle_2020_12, conflicting_embedded_from_prebundled) { sourcemeta::blaze::SchemaError); } -TEST(Foundation_bundle_2020_12, elevate_embedded_from_single_prebundled) { +TEST(Bundle_2020_12, elevate_embedded_from_single_prebundled) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/elevate-entry", @@ -1174,7 +1173,7 @@ TEST(Foundation_bundle_2020_12, elevate_embedded_from_single_prebundled) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, direct_and_embedded_reference_no_duplicate) { +TEST(Bundle_2020_12, direct_and_embedded_reference_no_duplicate) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/direct-and-embedded-entry", @@ -1211,7 +1210,7 @@ TEST(Foundation_bundle_2020_12, direct_and_embedded_reference_no_duplicate) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, elevate_embedded_cross_dialect) { +TEST(Bundle_2020_12, elevate_embedded_cross_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/cross-dialect-entry", @@ -1242,7 +1241,7 @@ TEST(Foundation_bundle_2020_12, elevate_embedded_cross_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, no_elevate_relative_id) { +TEST(Bundle_2020_12, no_elevate_relative_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/relative-entry", @@ -1274,8 +1273,7 @@ TEST(Foundation_bundle_2020_12, no_elevate_relative_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_2020_12, - deduplicate_embedded_with_preexisting_key_collision) { +TEST(Bundle_2020_12, deduplicate_embedded_with_preexisting_key_collision) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/collision-entry", diff --git a/test/foundation/foundation_dependencies_test.cc b/test/bundle/bundle_dependencies_test.cc similarity index 95% rename from test/foundation/foundation_dependencies_test.cc rename to test/bundle/bundle_dependencies_test.cc index 3436a3bde..d9babe287 100644 --- a/test/foundation/foundation_dependencies_test.cc +++ b/test/bundle/bundle_dependencies_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -87,7 +89,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_dependencies, multiple_refs) { +TEST(Bundle_dependencies, multiple_refs) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -124,7 +126,7 @@ TEST(Foundation_dependencies, multiple_refs) { "/allOf/0/$ref", "https://www.sourcemeta.com/test-4"); } -TEST(Foundation_dependencies, across_dialects) { +TEST(Bundle_dependencies, across_dialects) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -152,7 +154,7 @@ TEST(Foundation_dependencies, across_dialects) { "/allOf/0/$ref", "https://www.sourcemeta.com/test-4"); } -TEST(Foundation_dependencies, across_dialects_top_level_ref_draft) { +TEST(Bundle_dependencies, across_dialects_top_level_ref_draft) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -179,8 +181,7 @@ TEST(Foundation_dependencies, across_dialects_top_level_ref_draft) { "https://www.sourcemeta.com/test-4"); } -TEST(Foundation_dependencies, - across_dialects_from_top_level_ref_draft_absolute) { +TEST(Bundle_dependencies, across_dialects_from_top_level_ref_draft_absolute) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -204,8 +205,7 @@ TEST(Foundation_dependencies, "https://www.sourcemeta.com/test-4"); } -TEST(Foundation_dependencies, - across_dialects_from_top_level_ref_draft_relative) { +TEST(Bundle_dependencies, across_dialects_from_top_level_ref_draft_relative) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -225,7 +225,7 @@ TEST(Foundation_dependencies, sourcemeta::blaze::SchemaResolutionError); } -TEST(Foundation_dependencies, +TEST(Bundle_dependencies, across_dialects_from_top_level_ref_draft_with_default_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$ref": "https://www.sourcemeta.com/test-4" @@ -249,7 +249,7 @@ TEST(Foundation_dependencies, "https://www.sourcemeta.com/test-4"); } -TEST(Foundation_dependencies, across_dialects_const) { +TEST(Bundle_dependencies, across_dialects_const) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -277,7 +277,7 @@ TEST(Foundation_dependencies, across_dialects_const) { "/allOf/0/$ref", "https://www.sourcemeta.com/test-4"); } -TEST(Foundation_dependencies, with_default_id) { +TEST(Bundle_dependencies, with_default_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "items": { "$ref": "test-2" } @@ -305,7 +305,7 @@ TEST(Foundation_dependencies, with_default_id) { "/allOf/0/$ref", "https://www.sourcemeta.com/test-4"); } -TEST(Foundation_dependencies, with_default_dialect) { +TEST(Bundle_dependencies, with_default_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "properties": { "foo": { "$ref": "https://www.sourcemeta.com/test-1" } @@ -330,7 +330,7 @@ TEST(Foundation_dependencies, with_default_dialect) { "https://www.sourcemeta.com/test-1"); } -TEST(Foundation_dependencies, without_default_dialect) { +TEST(Bundle_dependencies, without_default_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "properties": { "foo": { "$ref": "https://www.sourcemeta.com/test-1" } @@ -344,7 +344,7 @@ TEST(Foundation_dependencies, without_default_dialect) { sourcemeta::blaze::SchemaUnknownBaseDialectError); } -TEST(Foundation_dependencies, target_no_dialect) { +TEST(Bundle_dependencies, target_no_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { @@ -359,7 +359,7 @@ TEST(Foundation_dependencies, target_no_dialect) { sourcemeta::blaze::SchemaReferenceError); } -TEST(Foundation_dependencies, target_array) { +TEST(Bundle_dependencies, target_array) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { @@ -374,7 +374,7 @@ TEST(Foundation_dependencies, target_array) { sourcemeta::blaze::SchemaReferenceError); } -TEST(Foundation_dependencies, custom_paths_no_external) { +TEST(Bundle_dependencies, custom_paths_no_external) { auto document{sourcemeta::core::parse_json(R"JSON({ "wrapper": { "$ref": "#/common/test" @@ -414,7 +414,7 @@ TEST(Foundation_dependencies, custom_paths_no_external) { EXPECT_EQ(traces.size(), 0); } -TEST(Foundation_dependencies, custom_paths_with_externals) { +TEST(Bundle_dependencies, custom_paths_with_externals) { auto document{sourcemeta::core::parse_json(R"JSON({ "wrapper": { "$ref": "#/common/test" @@ -462,7 +462,7 @@ TEST(Foundation_dependencies, custom_paths_with_externals) { "/allOf/0/$ref", "https://www.sourcemeta.com/test-4"); } -TEST(Foundation_dependencies, multiple_refs_to_same_target_within_schema) { +TEST(Bundle_dependencies, multiple_refs_to_same_target_within_schema) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -503,7 +503,7 @@ TEST(Foundation_dependencies, multiple_refs_to_same_target_within_schema) { "https://www.sourcemeta.com/test-1"); } -TEST(Foundation_dependencies, sibling_schemas_with_shared_dependency) { +TEST(Bundle_dependencies, sibling_schemas_with_shared_dependency) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", diff --git a/test/foundation/foundation_bundle_draft0_test.cc b/test/bundle/bundle_draft0_test.cc similarity index 92% rename from test/foundation/foundation_bundle_draft0_test.cc rename to test/bundle/bundle_draft0_test.cc index 2c70a680d..2ad098efd 100644 --- a/test/foundation/foundation_bundle_draft0_test.cc +++ b/test/bundle/bundle_draft0_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -19,7 +21,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle_draft0, no_references_no_id) { +TEST(Bundle_draft0, no_references_no_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-00/schema#" })JSON"); @@ -34,7 +36,7 @@ TEST(Foundation_bundle_draft0, no_references_no_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft0, const_no_references_no_id) { +TEST(Bundle_draft0, const_no_references_no_id) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-00/schema#" })JSON"); @@ -49,7 +51,7 @@ TEST(Foundation_bundle_draft0, const_no_references_no_id) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle_draft0, simple_bundling) { +TEST(Bundle_draft0, simple_bundling) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-00/schema#", diff --git a/test/foundation/foundation_bundle_draft1_test.cc b/test/bundle/bundle_draft1_test.cc similarity index 92% rename from test/foundation/foundation_bundle_draft1_test.cc rename to test/bundle/bundle_draft1_test.cc index 3ad7fcefc..790571825 100644 --- a/test/foundation/foundation_bundle_draft1_test.cc +++ b/test/bundle/bundle_draft1_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -19,7 +21,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle_draft1, no_references_no_id) { +TEST(Bundle_draft1, no_references_no_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-01/schema#" })JSON"); @@ -34,7 +36,7 @@ TEST(Foundation_bundle_draft1, no_references_no_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft1, const_no_references_no_id) { +TEST(Bundle_draft1, const_no_references_no_id) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-01/schema#" })JSON"); @@ -49,7 +51,7 @@ TEST(Foundation_bundle_draft1, const_no_references_no_id) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle_draft1, simple_bundling) { +TEST(Bundle_draft1, simple_bundling) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-01/schema#", diff --git a/test/foundation/foundation_bundle_draft2_test.cc b/test/bundle/bundle_draft2_test.cc similarity index 92% rename from test/foundation/foundation_bundle_draft2_test.cc rename to test/bundle/bundle_draft2_test.cc index c07c3fb87..01cbe2d7b 100644 --- a/test/foundation/foundation_bundle_draft2_test.cc +++ b/test/bundle/bundle_draft2_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -19,7 +21,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle_draft2, no_references_no_id) { +TEST(Bundle_draft2, no_references_no_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-02/schema#" })JSON"); @@ -34,7 +36,7 @@ TEST(Foundation_bundle_draft2, no_references_no_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft2, const_no_references_no_id) { +TEST(Bundle_draft2, const_no_references_no_id) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-02/schema#" })JSON"); @@ -49,7 +51,7 @@ TEST(Foundation_bundle_draft2, const_no_references_no_id) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle_draft2, simple_bundling) { +TEST(Bundle_draft2, simple_bundling) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-02/schema#", diff --git a/test/foundation/foundation_bundle_draft3_test.cc b/test/bundle/bundle_draft3_test.cc similarity index 95% rename from test/foundation/foundation_bundle_draft3_test.cc rename to test/bundle/bundle_draft3_test.cc index 50517557e..c80dee32f 100644 --- a/test/foundation/foundation_bundle_draft3_test.cc +++ b/test/bundle/bundle_draft3_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -45,7 +47,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle_draft3, no_references_no_id) { +TEST(Bundle_draft3, no_references_no_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-03/schema#" })JSON"); @@ -60,7 +62,7 @@ TEST(Foundation_bundle_draft3, no_references_no_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft3, const_no_references_no_id) { +TEST(Bundle_draft3, const_no_references_no_id) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-03/schema#" })JSON"); @@ -75,7 +77,7 @@ TEST(Foundation_bundle_draft3, const_no_references_no_id) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle_draft3, simple_bundling) { +TEST(Bundle_draft3, simple_bundling) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-03/schema#", @@ -105,7 +107,7 @@ TEST(Foundation_bundle_draft3, simple_bundling) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft3, simple_with_id) { +TEST(Bundle_draft3, simple_with_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-03/schema#", @@ -153,7 +155,7 @@ TEST(Foundation_bundle_draft3, simple_with_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft3, schema_not_found) { +TEST(Bundle_draft3, schema_not_found) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-03/schema#", @@ -167,7 +169,7 @@ TEST(Foundation_bundle_draft3, schema_not_found) { sourcemeta::blaze::SchemaResolutionError); } -TEST(Foundation_bundle_draft3, idempotency) { +TEST(Bundle_draft3, idempotency) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-03/schema#", @@ -211,7 +213,7 @@ TEST(Foundation_bundle_draft3, idempotency) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft3, pre_embedded) { +TEST(Bundle_draft3, pre_embedded) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-03/schema#", @@ -258,7 +260,7 @@ TEST(Foundation_bundle_draft3, pre_embedded) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft3, taken_definitions_entry) { +TEST(Bundle_draft3, taken_definitions_entry) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-03/schema#", @@ -305,7 +307,7 @@ TEST(Foundation_bundle_draft3, taken_definitions_entry) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft3, recursive) { +TEST(Bundle_draft3, recursive) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-03/schema#", "extends": { "$ref": "https://www.sourcemeta.com/recursive" } @@ -331,7 +333,7 @@ TEST(Foundation_bundle_draft3, recursive) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft3, standalone_ref_with_default_dialect) { +TEST(Bundle_draft3, standalone_ref_with_default_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$ref": "https://www.sourcemeta.com/test-1" })JSON"); diff --git a/test/foundation/foundation_bundle_draft4_test.cc b/test/bundle/bundle_draft4_test.cc similarity index 95% rename from test/foundation/foundation_bundle_draft4_test.cc rename to test/bundle/bundle_draft4_test.cc index 97dfad21b..9ed8b8765 100644 --- a/test/foundation/foundation_bundle_draft4_test.cc +++ b/test/bundle/bundle_draft4_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -94,7 +96,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle_draft4, no_references_no_id) { +TEST(Bundle_draft4, no_references_no_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#" })JSON"); @@ -109,7 +111,7 @@ TEST(Foundation_bundle_draft4, no_references_no_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, const_no_references_no_id) { +TEST(Bundle_draft4, const_no_references_no_id) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#" })JSON"); @@ -124,7 +126,7 @@ TEST(Foundation_bundle_draft4, const_no_references_no_id) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle_draft4, simple_with_id) { +TEST(Bundle_draft4, simple_with_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-04/schema#", @@ -172,7 +174,7 @@ TEST(Foundation_bundle_draft4, simple_with_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, simple_without_id) { +TEST(Bundle_draft4, simple_without_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "properties": { @@ -218,7 +220,7 @@ TEST(Foundation_bundle_draft4, simple_without_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, schema_not_found) { +TEST(Bundle_draft4, schema_not_found) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-04/schema#", @@ -232,7 +234,7 @@ TEST(Foundation_bundle_draft4, schema_not_found) { sourcemeta::blaze::SchemaResolutionError); } -TEST(Foundation_bundle_draft4, idempotency) { +TEST(Bundle_draft4, idempotency) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-04/schema#", @@ -276,7 +278,7 @@ TEST(Foundation_bundle_draft4, idempotency) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, pre_embedded) { +TEST(Bundle_draft4, pre_embedded) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-04/schema#", @@ -323,7 +325,7 @@ TEST(Foundation_bundle_draft4, pre_embedded) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, taken_definitions_entry) { +TEST(Bundle_draft4, taken_definitions_entry) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "id": "https://example.com", "$schema": "http://json-schema.org/draft-04/schema#", @@ -370,7 +372,7 @@ TEST(Foundation_bundle_draft4, taken_definitions_entry) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, allof_ref_definitions_type_no_id_no_external) { +TEST(Bundle_draft4, allof_ref_definitions_type_no_id_no_external) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "allOf": [ { "$ref": "#/definitions/string" } ], @@ -393,7 +395,7 @@ TEST(Foundation_bundle_draft4, allof_ref_definitions_type_no_id_no_external) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, recursive) { +TEST(Bundle_draft4, recursive) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "allOf": [ { "$ref": "https://www.sourcemeta.com/recursive" } ] @@ -419,7 +421,7 @@ TEST(Foundation_bundle_draft4, recursive) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, recursive_empty_fragment) { +TEST(Bundle_draft4, recursive_empty_fragment) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "allOf": [ { "$ref": "https://www.sourcemeta.com/recursive-empty-fragment#" } ] @@ -445,7 +447,7 @@ TEST(Foundation_bundle_draft4, recursive_empty_fragment) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, anonymous_no_dialect) { +TEST(Bundle_draft4, anonymous_no_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "allOf": [ { "$ref": "https://www.sourcemeta.com/anonymous" } ] })JSON"); @@ -467,7 +469,7 @@ TEST(Foundation_bundle_draft4, anonymous_no_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, metaschema) { +TEST(Bundle_draft4, metaschema) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://example.com/meta/1.json", "type": "string" @@ -494,7 +496,7 @@ TEST(Foundation_bundle_draft4, metaschema) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, relative_base_uri_without_ref) { +TEST(Bundle_draft4, relative_base_uri_without_ref) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "id": "foo" @@ -511,7 +513,7 @@ TEST(Foundation_bundle_draft4, relative_base_uri_without_ref) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, relative_base_uri_with_ref) { +TEST(Bundle_draft4, relative_base_uri_with_ref) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "id": "common", @@ -540,7 +542,7 @@ TEST(Foundation_bundle_draft4, relative_base_uri_with_ref) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, hyperschema_smoke) { +TEST(Bundle_draft4, hyperschema_smoke) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/hyper-schema#", "allOf": [ @@ -554,7 +556,7 @@ TEST(Foundation_bundle_draft4, hyperschema_smoke) { EXPECT_TRUE(document.is_object()); } -TEST(Foundation_bundle_draft4, hyperschema_1) { +TEST(Bundle_draft4, hyperschema_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "allOf": [ @@ -576,7 +578,7 @@ TEST(Foundation_bundle_draft4, hyperschema_1) { .defines("http://json-schema.org/draft-04/hyper-schema#")); } -TEST(Foundation_bundle_draft4, hyperschema_ref_metaschema) { +TEST(Bundle_draft4, hyperschema_ref_metaschema) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/hyper-schema#", "allOf": [ @@ -595,7 +597,7 @@ TEST(Foundation_bundle_draft4, hyperschema_ref_metaschema) { .defines("http://json-schema.org/draft-04/schema#")); } -TEST(Foundation_bundle_draft4, standalone_ref_with_default_dialect) { +TEST(Bundle_draft4, standalone_ref_with_default_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$ref": "https://www.sourcemeta.com/test-1" })JSON"); @@ -618,7 +620,7 @@ TEST(Foundation_bundle_draft4, standalone_ref_with_default_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft4, deduplicate_embedded_from_prebundled) { +TEST(Bundle_draft4, deduplicate_embedded_from_prebundled) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "id": "https://example.com/draft4-dedup-entry", diff --git a/test/foundation/foundation_bundle_draft6_test.cc b/test/bundle/bundle_draft6_test.cc similarity index 95% rename from test/foundation/foundation_bundle_draft6_test.cc rename to test/bundle/bundle_draft6_test.cc index 053aa17ec..40c25bf9d 100644 --- a/test/foundation/foundation_bundle_draft6_test.cc +++ b/test/bundle/bundle_draft6_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -76,7 +78,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle_draft6, no_references_no_id) { +TEST(Bundle_draft6, no_references_no_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/schema#" })JSON"); @@ -91,7 +93,7 @@ TEST(Foundation_bundle_draft6, no_references_no_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, const_no_references_no_id) { +TEST(Bundle_draft6, const_no_references_no_id) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/schema#" })JSON"); @@ -106,7 +108,7 @@ TEST(Foundation_bundle_draft6, const_no_references_no_id) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle_draft6, simple_with_id) { +TEST(Bundle_draft6, simple_with_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-06/schema#", @@ -154,7 +156,7 @@ TEST(Foundation_bundle_draft6, simple_with_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, simple_without_id) { +TEST(Bundle_draft6, simple_without_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/schema#", "properties": { @@ -200,7 +202,7 @@ TEST(Foundation_bundle_draft6, simple_without_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, schema_not_found) { +TEST(Bundle_draft6, schema_not_found) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-06/schema#", @@ -214,7 +216,7 @@ TEST(Foundation_bundle_draft6, schema_not_found) { sourcemeta::blaze::SchemaResolutionError); } -TEST(Foundation_bundle_draft6, idempotency) { +TEST(Bundle_draft6, idempotency) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-06/schema#", @@ -258,7 +260,7 @@ TEST(Foundation_bundle_draft6, idempotency) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, pre_embedded) { +TEST(Bundle_draft6, pre_embedded) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-06/schema#", @@ -305,7 +307,7 @@ TEST(Foundation_bundle_draft6, pre_embedded) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, taken_definitions_entry) { +TEST(Bundle_draft6, taken_definitions_entry) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-06/schema#", @@ -352,7 +354,7 @@ TEST(Foundation_bundle_draft6, taken_definitions_entry) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, recursive) { +TEST(Bundle_draft6, recursive) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/schema#", "allOf": [ { "$ref": "https://www.sourcemeta.com/recursive" } ] @@ -378,7 +380,7 @@ TEST(Foundation_bundle_draft6, recursive) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, recursive_empty_fragment) { +TEST(Bundle_draft6, recursive_empty_fragment) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/schema#", "allOf": [ { "$ref": "https://www.sourcemeta.com/recursive-empty-fragment#" } ] @@ -404,7 +406,7 @@ TEST(Foundation_bundle_draft6, recursive_empty_fragment) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, anonymous_no_dialect) { +TEST(Bundle_draft6, anonymous_no_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "allOf": [ { "$ref": "https://www.sourcemeta.com/anonymous" } ] })JSON"); @@ -426,7 +428,7 @@ TEST(Foundation_bundle_draft6, anonymous_no_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, metaschema) { +TEST(Bundle_draft6, metaschema) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://example.com/meta/1.json", "type": "string" @@ -453,7 +455,7 @@ TEST(Foundation_bundle_draft6, metaschema) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, relative_base_uri_with_ref) { +TEST(Bundle_draft6, relative_base_uri_with_ref) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/schema#", "$id": "common", @@ -482,7 +484,7 @@ TEST(Foundation_bundle_draft6, relative_base_uri_with_ref) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, hyperschema_smoke) { +TEST(Bundle_draft6, hyperschema_smoke) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/hyper-schema#", "allOf": [ @@ -496,7 +498,7 @@ TEST(Foundation_bundle_draft6, hyperschema_smoke) { EXPECT_TRUE(document.is_object()); } -TEST(Foundation_bundle_draft6, hyperschema_1) { +TEST(Bundle_draft6, hyperschema_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/schema#", "allOf": [ @@ -518,7 +520,7 @@ TEST(Foundation_bundle_draft6, hyperschema_1) { .defines("http://json-schema.org/draft-06/hyper-schema#")); } -TEST(Foundation_bundle_draft6, hyperschema_ref_metaschema) { +TEST(Bundle_draft6, hyperschema_ref_metaschema) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/hyper-schema#", "allOf": [ @@ -537,7 +539,7 @@ TEST(Foundation_bundle_draft6, hyperschema_ref_metaschema) { .defines("http://json-schema.org/draft-06/schema#")); } -TEST(Foundation_bundle_draft6, standalone_ref_with_default_dialect) { +TEST(Bundle_draft6, standalone_ref_with_default_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$ref": "https://www.sourcemeta.com/test-1" })JSON"); @@ -560,7 +562,7 @@ TEST(Foundation_bundle_draft6, standalone_ref_with_default_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft6, ref_with_fragment_to_id_with_trailing_hash) { +TEST(Bundle_draft6, ref_with_fragment_to_id_with_trailing_hash) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-06/schema#", diff --git a/test/foundation/foundation_bundle_draft7_test.cc b/test/bundle/bundle_draft7_test.cc similarity index 95% rename from test/foundation/foundation_bundle_draft7_test.cc rename to test/bundle/bundle_draft7_test.cc index 55e721f8b..7e8240fec 100644 --- a/test/foundation/foundation_bundle_draft7_test.cc +++ b/test/bundle/bundle_draft7_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -115,7 +117,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle_draft7, no_references_no_id) { +TEST(Bundle_draft7, no_references_no_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#" })JSON"); @@ -130,7 +132,7 @@ TEST(Foundation_bundle_draft7, no_references_no_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, const_no_references_no_id) { +TEST(Bundle_draft7, const_no_references_no_id) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#" })JSON"); @@ -145,7 +147,7 @@ TEST(Foundation_bundle_draft7, const_no_references_no_id) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle_draft7, simple_with_id) { +TEST(Bundle_draft7, simple_with_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -193,7 +195,7 @@ TEST(Foundation_bundle_draft7, simple_with_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, simple_without_id) { +TEST(Bundle_draft7, simple_without_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "properties": { @@ -239,7 +241,7 @@ TEST(Foundation_bundle_draft7, simple_without_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, schema_not_found) { +TEST(Bundle_draft7, schema_not_found) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -253,7 +255,7 @@ TEST(Foundation_bundle_draft7, schema_not_found) { sourcemeta::blaze::SchemaResolutionError); } -TEST(Foundation_bundle_draft7, idempotency) { +TEST(Bundle_draft7, idempotency) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -297,7 +299,7 @@ TEST(Foundation_bundle_draft7, idempotency) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, pre_embedded) { +TEST(Bundle_draft7, pre_embedded) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -344,7 +346,7 @@ TEST(Foundation_bundle_draft7, pre_embedded) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, taken_definitions_entry) { +TEST(Bundle_draft7, taken_definitions_entry) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -391,7 +393,7 @@ TEST(Foundation_bundle_draft7, taken_definitions_entry) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, recursive) { +TEST(Bundle_draft7, recursive) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "allOf": [ { "$ref": "https://www.sourcemeta.com/recursive" } ] @@ -417,7 +419,7 @@ TEST(Foundation_bundle_draft7, recursive) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, recursive_empty_fragment) { +TEST(Bundle_draft7, recursive_empty_fragment) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "allOf": [ { "$ref": "https://www.sourcemeta.com/recursive-empty-fragment#" } ] @@ -443,7 +445,7 @@ TEST(Foundation_bundle_draft7, recursive_empty_fragment) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, anonymous_no_dialect) { +TEST(Bundle_draft7, anonymous_no_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "allOf": [ { "$ref": "https://www.sourcemeta.com/anonymous" } ] })JSON"); @@ -465,7 +467,7 @@ TEST(Foundation_bundle_draft7, anonymous_no_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, metaschema) { +TEST(Bundle_draft7, metaschema) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://example.com/meta/1.json", "type": "string" @@ -492,7 +494,7 @@ TEST(Foundation_bundle_draft7, metaschema) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, relative_base_uri_with_ref) { +TEST(Bundle_draft7, relative_base_uri_with_ref) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "common", @@ -521,7 +523,7 @@ TEST(Foundation_bundle_draft7, relative_base_uri_with_ref) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, hyperschema_smoke) { +TEST(Bundle_draft7, hyperschema_smoke) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/hyper-schema#", "allOf": [ @@ -535,7 +537,7 @@ TEST(Foundation_bundle_draft7, hyperschema_smoke) { EXPECT_TRUE(document.is_object()); } -TEST(Foundation_bundle_draft7, hyperschema_1) { +TEST(Bundle_draft7, hyperschema_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "allOf": [ @@ -559,7 +561,7 @@ TEST(Foundation_bundle_draft7, hyperschema_1) { .defines("http://json-schema.org/draft-07/hyper-schema#")); } -TEST(Foundation_bundle_draft7, hyperschema_ref_metaschema) { +TEST(Bundle_draft7, hyperschema_ref_metaschema) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/hyper-schema#", "allOf": [ @@ -578,7 +580,7 @@ TEST(Foundation_bundle_draft7, hyperschema_ref_metaschema) { .defines("http://json-schema.org/draft-07/schema#")); } -TEST(Foundation_bundle_draft7, bundle_to_defs) { +TEST(Bundle_draft7, bundle_to_defs) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "$ref": "https://www.sourcemeta.com/recursive" @@ -605,7 +607,7 @@ TEST(Foundation_bundle_draft7, bundle_to_defs) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, standalone_ref_with_default_dialect) { +TEST(Bundle_draft7, standalone_ref_with_default_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$ref": "https://www.sourcemeta.com/test-1" })JSON"); @@ -628,7 +630,7 @@ TEST(Foundation_bundle_draft7, standalone_ref_with_default_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, ref_with_fragment_to_id_with_trailing_hash) { +TEST(Bundle_draft7, ref_with_fragment_to_id_with_trailing_hash) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://example.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -664,7 +666,7 @@ TEST(Foundation_bundle_draft7, ref_with_fragment_to_id_with_trailing_hash) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, deduplicate_embedded_from_prebundled) { +TEST(Bundle_draft7, deduplicate_embedded_from_prebundled) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://example.com/draft7-dedup-entry", @@ -706,7 +708,7 @@ TEST(Foundation_bundle_draft7, deduplicate_embedded_from_prebundled) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle_draft7, elevate_embedded_from_single_prebundled) { +TEST(Bundle_draft7, elevate_embedded_from_single_prebundled) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://example.com/draft7-elevate-entry", diff --git a/test/foundation/foundation_bundle_test.cc b/test/bundle/bundle_test.cc similarity index 95% rename from test/foundation/foundation_bundle_test.cc rename to test/bundle/bundle_test.cc index 42be61fa3..c9df9b07f 100644 --- a/test/foundation/foundation_bundle_test.cc +++ b/test/bundle/bundle_test.cc @@ -1,6 +1,8 @@ #include +#include #include + #include #include // std::string @@ -51,7 +53,7 @@ static auto test_resolver(std::string_view identifier) } } -TEST(Foundation_bundle, multiple_refs) { +TEST(Bundle, multiple_refs) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -101,7 +103,7 @@ TEST(Foundation_bundle, multiple_refs) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle, across_dialects) { +TEST(Bundle, across_dialects) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -137,7 +139,7 @@ TEST(Foundation_bundle, across_dialects) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle, across_dialects_top_level_ref_draft) { +TEST(Bundle, across_dialects_top_level_ref_draft) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -156,7 +158,7 @@ TEST(Foundation_bundle, across_dialects_top_level_ref_draft) { } } -TEST(Foundation_bundle, across_dialects_from_top_level_ref_draft_absolute) { +TEST(Bundle, across_dialects_from_top_level_ref_draft_absolute) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -168,7 +170,7 @@ TEST(Foundation_bundle, across_dialects_from_top_level_ref_draft_absolute) { sourcemeta::blaze::SchemaError); } -TEST(Foundation_bundle, across_dialects_from_top_level_ref_draft_relative) { +TEST(Bundle, across_dialects_from_top_level_ref_draft_relative) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.sourcemeta.com", "$schema": "http://json-schema.org/draft-07/schema#", @@ -180,7 +182,7 @@ TEST(Foundation_bundle, across_dialects_from_top_level_ref_draft_relative) { sourcemeta::blaze::SchemaError); } -TEST(Foundation_bundle, across_dialects_const) { +TEST(Bundle, across_dialects_const) { const sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$id": "https://www.example.com", "$schema": "https://json-schema.org/draft/2020-12/schema", @@ -216,7 +218,7 @@ TEST(Foundation_bundle, across_dialects_const) { EXPECT_EQ(result, expected); } -TEST(Foundation_bundle, with_default_id) { +TEST(Bundle, with_default_id) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "items": { "$ref": "test-2" } @@ -252,7 +254,7 @@ TEST(Foundation_bundle, with_default_id) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle, with_default_dialect) { +TEST(Bundle, with_default_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "properties": { "foo": { "$ref": "https://www.sourcemeta.com/test-1" } @@ -279,7 +281,7 @@ TEST(Foundation_bundle, with_default_dialect) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle, without_default_dialect) { +TEST(Bundle, without_default_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "properties": { "foo": { "$ref": "https://www.sourcemeta.com/test-1" } @@ -291,7 +293,7 @@ TEST(Foundation_bundle, without_default_dialect) { sourcemeta::blaze::SchemaUnknownBaseDialectError); } -TEST(Foundation_bundle, target_no_dialect) { +TEST(Bundle, target_no_dialect) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { @@ -304,7 +306,7 @@ TEST(Foundation_bundle, target_no_dialect) { sourcemeta::blaze::SchemaReferenceError); } -TEST(Foundation_bundle, target_array) { +TEST(Bundle, target_array) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { @@ -317,7 +319,7 @@ TEST(Foundation_bundle, target_array) { sourcemeta::blaze::SchemaReferenceError); } -TEST(Foundation_bundle, custom_paths_no_external) { +TEST(Bundle, custom_paths_no_external) { auto document{sourcemeta::core::parse_json(R"JSON({ "wrapper": { "$ref": "#/common/test" @@ -366,7 +368,7 @@ TEST(Foundation_bundle, custom_paths_no_external) { EXPECT_EQ(document, expected); } -TEST(Foundation_bundle, custom_paths_with_externals) { +TEST(Bundle, custom_paths_with_externals) { auto document{sourcemeta::core::parse_json(R"JSON({ "wrapper": { "$ref": "#/common/test" diff --git a/test/editor/CMakeLists.txt b/test/editor/CMakeLists.txt index f356c34c2..275c75c87 100644 --- a/test/editor/CMakeLists.txt +++ b/test/editor/CMakeLists.txt @@ -6,5 +6,7 @@ target_link_libraries(sourcemeta_blaze_editor_unit PRIVATE sourcemeta::core::json) target_link_libraries(sourcemeta_blaze_editor_unit PRIVATE sourcemeta::blaze::foundation) +target_link_libraries(sourcemeta_blaze_editor_unit + PRIVATE sourcemeta::blaze::bundle) target_link_libraries(sourcemeta_blaze_editor_unit PRIVATE sourcemeta::blaze::editor) diff --git a/test/editor/editor_test.cc b/test/editor/editor_test.cc index f1a706e48..0c178b2ef 100644 --- a/test/editor/editor_test.cc +++ b/test/editor/editor_test.cc @@ -1,5 +1,6 @@ #include +#include #include static auto test_resolver_2020_12(std::string_view identifier) diff --git a/test/evaluator/CMakeLists.txt b/test/evaluator/CMakeLists.txt index 4b4660c10..aac3f8186 100644 --- a/test/evaluator/CMakeLists.txt +++ b/test/evaluator/CMakeLists.txt @@ -16,6 +16,8 @@ target_link_libraries(sourcemeta_blaze_evaluator_unit PRIVATE sourcemeta::core::json) target_link_libraries(sourcemeta_blaze_evaluator_unit PRIVATE sourcemeta::blaze::foundation) +target_link_libraries(sourcemeta_blaze_evaluator_unit + PRIVATE sourcemeta::blaze::bundle) target_link_libraries(sourcemeta_blaze_evaluator_unit PRIVATE sourcemeta::blaze::compiler) target_link_libraries(sourcemeta_blaze_evaluator_unit diff --git a/test/evaluator/evaluator_test.cc b/test/evaluator/evaluator_test.cc index 731b81257..ca8f8bffe 100644 --- a/test/evaluator/evaluator_test.cc +++ b/test/evaluator/evaluator_test.cc @@ -1,9 +1,10 @@ #include +#include #include #include - #include + #include #include // std::is_copy_constructible_v, etc. diff --git a/test/foundation/CMakeLists.txt b/test/foundation/CMakeLists.txt index 044005bff..37b0bcf00 100644 --- a/test/foundation/CMakeLists.txt +++ b/test/foundation/CMakeLists.txt @@ -24,17 +24,6 @@ sourcemeta_googletest(NAMESPACE sourcemeta PROJECT blaze NAME foundation foundation_frame_draft1_test.cc foundation_frame_draft0_test.cc foundation_frame_test.cc - foundation_bundle_2020_12_test.cc - foundation_bundle_2019_09_test.cc - foundation_bundle_draft7_test.cc - foundation_bundle_draft6_test.cc - foundation_bundle_draft4_test.cc - foundation_bundle_draft3_test.cc - foundation_bundle_draft2_test.cc - foundation_bundle_draft1_test.cc - foundation_bundle_draft0_test.cc - foundation_bundle_test.cc - foundation_dependencies_test.cc foundation_metaschema_test.cc foundation_dialect_test.cc foundation_dialect_2020_12_test.cc diff --git a/test/packaging/find_package/CMakeLists.txt b/test/packaging/find_package/CMakeLists.txt index b912a2480..62d9bd7f1 100644 --- a/test/packaging/find_package/CMakeLists.txt +++ b/test/packaging/find_package/CMakeLists.txt @@ -16,3 +16,4 @@ target_link_libraries(blaze_hello PRIVATE sourcemeta::blaze::codegen) target_link_libraries(blaze_hello PRIVATE sourcemeta::blaze::documentation) target_link_libraries(blaze_hello PRIVATE sourcemeta::blaze::editor) target_link_libraries(blaze_hello PRIVATE sourcemeta::blaze::foundation) +target_link_libraries(blaze_hello PRIVATE sourcemeta::blaze::bundle) diff --git a/test/packaging/find_package/hello.cc b/test/packaging/find_package/hello.cc index 12d588bce..52af21105 100644 --- a/test/packaging/find_package/hello.cc +++ b/test/packaging/find_package/hello.cc @@ -1,7 +1,5 @@ -#include -#include - #include +#include #include #include #include @@ -12,6 +10,8 @@ #include #include +#include + #include // EXIT_SUCCESS #include // std::cerr @@ -49,5 +49,12 @@ auto main() -> int { foundation_frame.analyse(foundation_schema, sourcemeta::blaze::schema_walker, sourcemeta::blaze::schema_resolver); + auto bundle_schema{sourcemeta::core::parse_json(R"JSON({ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "string" + })JSON")}; + sourcemeta::blaze::bundle(bundle_schema, sourcemeta::blaze::schema_walker, + sourcemeta::blaze::schema_resolver); + return EXIT_SUCCESS; } From d8419cfcdb196d767d71d37c7390e79a4dce1f11 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Thu, 21 May 2026 15:12:43 -0400 Subject: [PATCH 2/2] Fix Signed-off-by: Juan Cruz Viotti --- src/bundle/helpers.h | 3 +++ src/foundation/helpers.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/bundle/helpers.h b/src/bundle/helpers.h index d6dacfa17..adbf7d681 100644 --- a/src/bundle/helpers.h +++ b/src/bundle/helpers.h @@ -75,6 +75,9 @@ ref_overrides_adjacent_keywords(const SchemaBaseDialect base_dialect) -> bool { case SchemaBaseDialect::JSON_Schema_Draft_4_Hyper: case SchemaBaseDialect::JSON_Schema_Draft_3: case SchemaBaseDialect::JSON_Schema_Draft_3_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_2_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_1_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_0_Hyper: return true; default: return false; diff --git a/src/foundation/helpers.h b/src/foundation/helpers.h index 2f3b1f373..8a3d3b197 100644 --- a/src/foundation/helpers.h +++ b/src/foundation/helpers.h @@ -75,6 +75,9 @@ ref_overrides_adjacent_keywords(const SchemaBaseDialect base_dialect) -> bool { case SchemaBaseDialect::JSON_Schema_Draft_4_Hyper: case SchemaBaseDialect::JSON_Schema_Draft_3: case SchemaBaseDialect::JSON_Schema_Draft_3_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_2_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_1_Hyper: + case SchemaBaseDialect::JSON_Schema_Draft_0_Hyper: return true; default: return false;