diff --git a/.github/actions/sandbox/action.yml b/.github/actions/sandbox/action.yml index 726de9a5..0e2845a6 100644 --- a/.github/actions/sandbox/action.yml +++ b/.github/actions/sandbox/action.yml @@ -8,6 +8,13 @@ inputs: - html - headless - empty + edition: + description: edition + required: true + type: choice + options: + - community + - enterprise port: description: Port required: true @@ -20,6 +27,7 @@ runs: shell: bash env: SANDBOX_CONFIGURATION: ${{ inputs.configuration }} + SANDBOX_EDITION: ${{ inputs.edition }} SANDBOX_PORT: ${{ inputs.port }} PARALLEL: 2 - name: Up Sandbox (${{ inputs.configuration }}) @@ -27,24 +35,28 @@ runs: shell: bash env: SANDBOX_CONFIGURATION: ${{ inputs.configuration }} + SANDBOX_EDITION: ${{ inputs.edition }} SANDBOX_PORT: ${{ inputs.port }} - name: Test Sandbox - E2E (${{ inputs.configuration }}) run: make test-e2e PRESET=Release shell: bash env: SANDBOX_CONFIGURATION: ${{ inputs.configuration }} + SANDBOX_EDITION: ${{ inputs.edition }} SANDBOX_PORT: ${{ inputs.port }} HURL: 'docker run --rm --network=host --volume \$(PWD):/workspace --workdir /workspace ghcr.io/orange-opensource/hurl:7.0.0' - name: Test Sandbox - UI (${{ inputs.configuration }}) run: make test-ui PRESET=Release - if: inputs.configuration == 'html' + if: inputs.configuration == 'html' && inputs.edition == 'enterprise' shell: bash env: SANDBOX_CONFIGURATION: ${{ inputs.configuration }} + SANDBOX_EDITION: ${{ inputs.edition }} SANDBOX_PORT: ${{ inputs.port }} - name: Down Sandbox (${{ inputs.configuration }}) run: make docker-sandbox-down shell: bash env: SANDBOX_CONFIGURATION: ${{ inputs.configuration }} + SANDBOX_EDITION: ${{ inputs.edition }} SANDBOX_PORT: ${{ inputs.port }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8b939ff0..dfebe01f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,33 +16,46 @@ jobs: - run: codespell docs *.markdown docs/*.md test: + strategy: + fail-fast: false + matrix: + edition: + - name: community + enterprise: OFF + - name: enterprise + enterprise: ON + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build One - run: make docker PRESET=Release + run: make docker PRESET=Release ENTERPRISE=${{ matrix.edition.enterprise }} - name: Sandbox (headless) uses: ./.github/actions/sandbox with: configuration: headless + edition: ${{ matrix.edition.name }} port: 8000 - name: Sandbox (html) uses: ./.github/actions/sandbox with: configuration: html + edition: ${{ matrix.edition.name }} port: 8000 - name: Sandbox (empty) uses: ./.github/actions/sandbox with: configuration: empty + edition: ${{ matrix.edition.name }} port: 8000 # Public instance - run: docker build . --file public/Dockerfile --progress plain + if: matrix.edition.name == 'enterprise' website: runs-on: ubuntu-latest diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ef32dbb..f3f00019 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,15 @@ if(NOT ONE_PREFIX_IS_ABSOLUTE) message(FATAL_ERROR "ONE_PREFIX must be an absolute path but it was: ${ONE_PREFIX}") endif() +# Commercial editions require a paid license +# See https://one.sourcemeta.com/commercial/ +option(ONE_ENTERPRISE "Build the One Enterprise edition (commercial license required)" OFF) +if(ONE_ENTERPRISE) + message(STATUS "Sourcemeta One edition: Enterprise") +else() + message(STATUS "Sourcemeta One edition: Community") +endif() + find_package(Core REQUIRED) find_package(Blaze REQUIRED) find_package(Codegen REQUIRED) @@ -61,11 +70,14 @@ if(ONE_INDEX) include(commands/esbuild) add_subdirectory(src/configuration) add_subdirectory(src/resolver) - add_subdirectory(src/web) add_subdirectory(src/index) add_subdirectory(collections) add_dependencies(sourcemeta_one_index sourcemeta_one_collections) + + if(ONE_ENTERPRISE) + add_subdirectory(enterprise/src/web) + endif() endif() if(ONE_SERVER) @@ -90,11 +102,15 @@ add_custom_target(jsonschema_lint if(ONE_TESTS) enable_testing() + add_test(NAME one.schemas COMMAND "$" test --extension .test.json - "${PROJECT_SOURCE_DIR}/collections/sourcemeta") + "${PROJECT_SOURCE_DIR}/collections" + "${PROJECT_SOURCE_DIR}/enterprise/collections") - add_subdirectory(test/js) + if(ONE_ENTERPRISE) + add_subdirectory(enterprise/test/js) + endif() if(ONE_INDEX OR ONE_SERVER) add_subdirectory(test/unit/gzip) diff --git a/Dockerfile b/Dockerfile index 6d50ac27..fd6b8ff5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,14 +15,18 @@ COPY contrib /source/contrib COPY collections /source/collections COPY vendor /source/vendor COPY CMakeLists.txt /source/CMakeLists.txt +COPY enterprise /source/enterprise # For testing COPY test/cli /source/test/cli COPY test/unit /source/test/unit -COPY test/js /source/test/js RUN cd /source && npm ci +# Commercial editions require a paid license +# See https://one.sourcemeta.com/commercial/ +ARG SOURCEMETA_ONE_ENTERPRISE=OFF + ARG SOURCEMETA_ONE_BUILD_TYPE=Release ARG SOURCEMETA_ONE_PARALLEL=2 @@ -32,6 +36,7 @@ RUN cmake -S /source -B ./build \ -DONE_INDEX:BOOL=ON \ -DONE_SERVER:BOOL=ON \ -DONE_TESTS:BOOL=ON \ + -DONE_ENTERPRISE:BOOL=${SOURCEMETA_ONE_ENTERPRISE} \ -DBUILD_SHARED_LIBS:BOOL=OFF RUN cmake --build /build \ diff --git a/Makefile b/Makefile index 08722c66..71419218 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,8 @@ SANDBOX_PORT ?= 8000 SANDBOX_URL ?= http://localhost:$(SANDBOX_PORT) PUBLIC ?= ./public PARALLEL ?= 4 +# Only for local development +ENTERPRISE ?= ON .PHONY: all all: configure compile test @@ -37,6 +39,7 @@ configure: node_modules -DONE_INDEX:BOOL=$(INDEX) \ -DONE_SERVER:BOOL=$(SERVER) \ -DONE_PREFIX:STRING=$(or $(realpath $(PREFIX)),$(abspath $(PREFIX))) \ + -DONE_ENTERPRISE:BOOL=$(ENTERPRISE) \ -DBUILD_SHARED_LIBS:BOOL=OFF .PHONY: compile @@ -68,11 +71,13 @@ endif test-e2e: $(HURL) --test --variable base=$(SANDBOX_URL) $(HURL_TESTS) +ifeq ($(ENTERPRISE),ON) .PHONY: test-ui test-ui: node_modules $(NPX) playwright install --with-deps env PLAYWRIGHT_BASE_URL=$(SANDBOX_URL) \ - $(NPX) playwright test --config test/ui/playwright.config.js + $(NPX) playwright test --config enterprise/test/ui/playwright.config.js +endif .PHONY: sandbox-index sandbox-index: compile @@ -97,7 +102,8 @@ sandbox-manifest-refresh: configure compile docker: Dockerfile $(DOCKER) build --tag one . --file $< --progress plain \ --build-arg SOURCEMETA_ONE_BUILD_TYPE=$(PRESET) \ - --build-arg SOURCEMETA_ONE_PARALLEL=$(PARALLEL) + --build-arg SOURCEMETA_ONE_PARALLEL=$(PARALLEL) \ + --build-arg SOURCEMETA_ONE_ENTERPRISE=$(ENTERPRISE) .PHONY: docker-sandbox-build docker-sandbox-build: test/sandbox/compose.yaml diff --git a/collections/CMakeLists.txt b/collections/CMakeLists.txt index 8a22921a..b680b2cf 100644 --- a/collections/CMakeLists.txt +++ b/collections/CMakeLists.txt @@ -1,6 +1,9 @@ set(ONE_COLLECTION_SOURCES) -include("./sourcemeta/std/v0/one.cmake") +if(ONE_ENTERPRISE) + include("../enterprise/collections/sourcemeta/std/v0/one.cmake") +endif() + include("./self/v1/one.cmake") add_custom_target(sourcemeta_one_collections DEPENDS ${ONE_COLLECTION_SOURCES}) diff --git a/collections/self/v1/tests/configuration/configuration.test.json b/collections/self/v1/tests/configuration/configuration.test.json index ac96dad3..1a982cca 100644 --- a/collections/self/v1/tests/configuration/configuration.test.json +++ b/collections/self/v1/tests/configuration/configuration.test.json @@ -132,7 +132,7 @@ }, { "description": "Self top-level entry", - "valid": false, + "valid": true, "data": { "url": "http://localhost:8000", "html": { diff --git a/collections/sourcemeta/std/v0/jsonschema.in.json b/enterprise/collections/sourcemeta/std/v0/jsonschema.in.json similarity index 100% rename from collections/sourcemeta/std/v0/jsonschema.in.json rename to enterprise/collections/sourcemeta/std/v0/jsonschema.in.json diff --git a/collections/sourcemeta/std/v0/one.cmake b/enterprise/collections/sourcemeta/std/v0/one.cmake similarity index 100% rename from collections/sourcemeta/std/v0/one.cmake rename to enterprise/collections/sourcemeta/std/v0/one.cmake diff --git a/collections/sourcemeta/std/v0/one.json b/enterprise/collections/sourcemeta/std/v0/one.json similarity index 100% rename from collections/sourcemeta/std/v0/one.json rename to enterprise/collections/sourcemeta/std/v0/one.json diff --git a/src/web/CMakeLists.txt b/enterprise/src/web/CMakeLists.txt similarity index 100% rename from src/web/CMakeLists.txt rename to enterprise/src/web/CMakeLists.txt diff --git a/src/web/helpers.h b/enterprise/src/web/helpers.h similarity index 100% rename from src/web/helpers.h rename to enterprise/src/web/helpers.h diff --git a/src/web/include/sourcemeta/one/web.h b/enterprise/src/web/include/sourcemeta/one/web.h similarity index 100% rename from src/web/include/sourcemeta/one/web.h rename to enterprise/src/web/include/sourcemeta/one/web.h diff --git a/src/web/page.h b/enterprise/src/web/page.h similarity index 100% rename from src/web/page.h rename to enterprise/src/web/page.h diff --git a/src/web/pages/directory.cc b/enterprise/src/web/pages/directory.cc similarity index 100% rename from src/web/pages/directory.cc rename to enterprise/src/web/pages/directory.cc diff --git a/src/web/pages/index.cc b/enterprise/src/web/pages/index.cc similarity index 100% rename from src/web/pages/index.cc rename to enterprise/src/web/pages/index.cc diff --git a/src/web/pages/not_found.cc b/enterprise/src/web/pages/not_found.cc similarity index 100% rename from src/web/pages/not_found.cc rename to enterprise/src/web/pages/not_found.cc diff --git a/src/web/pages/schema.cc b/enterprise/src/web/pages/schema.cc similarity index 100% rename from src/web/pages/schema.cc rename to enterprise/src/web/pages/schema.cc diff --git a/src/web/scripts/editor.js b/enterprise/src/web/scripts/editor.js similarity index 100% rename from src/web/scripts/editor.js rename to enterprise/src/web/scripts/editor.js diff --git a/src/web/scripts/main.js b/enterprise/src/web/scripts/main.js similarity index 100% rename from src/web/scripts/main.js rename to enterprise/src/web/scripts/main.js diff --git a/src/web/scripts/search.js b/enterprise/src/web/scripts/search.js similarity index 100% rename from src/web/scripts/search.js rename to enterprise/src/web/scripts/search.js diff --git a/src/web/scripts/tabs.js b/enterprise/src/web/scripts/tabs.js similarity index 100% rename from src/web/scripts/tabs.js rename to enterprise/src/web/scripts/tabs.js diff --git a/src/web/static/apple-touch-icon.png b/enterprise/src/web/static/apple-touch-icon.png similarity index 100% rename from src/web/static/apple-touch-icon.png rename to enterprise/src/web/static/apple-touch-icon.png diff --git a/src/web/static/favicon.ico b/enterprise/src/web/static/favicon.ico similarity index 100% rename from src/web/static/favicon.ico rename to enterprise/src/web/static/favicon.ico diff --git a/src/web/static/icon.svg b/enterprise/src/web/static/icon.svg similarity index 100% rename from src/web/static/icon.svg rename to enterprise/src/web/static/icon.svg diff --git a/src/web/static/icon_192x192.png b/enterprise/src/web/static/icon_192x192.png similarity index 100% rename from src/web/static/icon_192x192.png rename to enterprise/src/web/static/icon_192x192.png diff --git a/src/web/static/icon_512x512.png b/enterprise/src/web/static/icon_512x512.png similarity index 100% rename from src/web/static/icon_512x512.png rename to enterprise/src/web/static/icon_512x512.png diff --git a/src/web/static/manifest.webmanifest b/enterprise/src/web/static/manifest.webmanifest similarity index 100% rename from src/web/static/manifest.webmanifest rename to enterprise/src/web/static/manifest.webmanifest diff --git a/enterprise/src/web/style.scss b/enterprise/src/web/style.scss new file mode 100644 index 00000000..79832c2d --- /dev/null +++ b/enterprise/src/web/style.scss @@ -0,0 +1,69 @@ +/* + * All rights reserved. You can only use this software + * under a commercial license, as set out in + * . + */ + +@import "../../../vendor/bootstrap/scss/functions"; + +$border-radius: 0; +$breadcrumb-font-size: 15px; + +@import "../../../vendor/bootstrap/scss/variables"; +@import "../../../vendor/bootstrap/scss/variables-dark"; +@import "../../../vendor/bootstrap/scss/maps"; +@import "../../../vendor/bootstrap/scss/mixins"; +@import "../../../vendor/bootstrap/scss/utilities"; + +@import "../../../vendor/bootstrap/scss/root"; +@import "../../../vendor/bootstrap/scss/reboot"; +@import "../../../vendor/bootstrap/scss/type"; +@import "../../../vendor/bootstrap/scss/images"; +@import "../../../vendor/bootstrap/scss/containers"; +@import "../../../vendor/bootstrap/scss/grid"; + +@import "../../../vendor/bootstrap/scss/tables"; +@import "../../../vendor/bootstrap/scss/forms"; +@import "../../../vendor/bootstrap/scss/buttons"; +// @import "../../../vendor/bootstrap/scss/transitions"; +// @import "../../../vendor/bootstrap/scss/dropdown"; +@import "../../../vendor/bootstrap/scss/button-group"; +@import "../../../vendor/bootstrap/scss/nav"; +@import "../../../vendor/bootstrap/scss/navbar"; +// @import "../../../vendor/bootstrap/scss/card"; +// @import "../../../vendor/bootstrap/scss/accordion"; +@import "../../../vendor/bootstrap/scss/breadcrumb"; +// @import "../../../vendor/bootstrap/scss/pagination"; +@import "../../../vendor/bootstrap/scss/badge"; +@import "../../../vendor/bootstrap/scss/alert"; +@import "../../../vendor/bootstrap/scss/progress"; +@import "../../../vendor/bootstrap/scss/list-group"; +// @import "../../../vendor/bootstrap/scss/close"; +// @import "../../../vendor/bootstrap/scss/toasts"; +// @import "../../../vendor/bootstrap/scss/modal"; +// @import "../../../vendor/bootstrap/scss/tooltip"; +// @import "../../../vendor/bootstrap/scss/popover"; +// @import "../../../vendor/bootstrap/scss/carousel"; +// @import "../../../vendor/bootstrap/scss/spinners"; +// @import "../../../vendor/bootstrap/scss/offcanvas"; +// @import "../../../vendor/bootstrap/scss/placeholders"; + +@import "../../../vendor/bootstrap/scss/helpers"; +@import "../../../vendor/bootstrap/scss/utilities/api"; + +// Bootstrap Icons +$bootstrap-icons-font: bootstrap-icons; +$bootstrap-icons-font-dir: "/self/static"; +@import "../../../vendor/bootstrap-icons/font/bootstrap-icons.scss"; + +// Bootstrap doesn't seem to provide breakpoint-based modifiers to `.w-*` +@include media-breakpoint-up(md) { + .w-md-auto { + width: auto !important; + } +} + +// Tables with vertical headers collapse the headers by default +table tr > th[scope="row"] { + width: 1px; +} diff --git a/test/js/CMakeLists.txt b/enterprise/test/js/CMakeLists.txt similarity index 100% rename from test/js/CMakeLists.txt rename to enterprise/test/js/CMakeLists.txt diff --git a/test/js/editor.test.js b/enterprise/test/js/editor.test.js similarity index 100% rename from test/js/editor.test.js rename to enterprise/test/js/editor.test.js diff --git a/test/ui/dependencies.spec.js b/enterprise/test/ui/dependencies.spec.js similarity index 100% rename from test/ui/dependencies.spec.js rename to enterprise/test/ui/dependencies.spec.js diff --git a/test/ui/editor.spec.js b/enterprise/test/ui/editor.spec.js similarity index 100% rename from test/ui/editor.spec.js rename to enterprise/test/ui/editor.spec.js diff --git a/test/ui/playwright.config.js b/enterprise/test/ui/playwright.config.js similarity index 89% rename from test/ui/playwright.config.js rename to enterprise/test/ui/playwright.config.js index 5b85645e..b94b5e02 100644 --- a/test/ui/playwright.config.js +++ b/enterprise/test/ui/playwright.config.js @@ -8,7 +8,7 @@ export default defineConfig({ retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, reporter: 'list', - outputDir: '../../build/test-results', + outputDir: '../../../build/test-results', use: { baseURL: process.env.PLAYWRIGHT_BASE_URL, trace: 'on-first-retry' diff --git a/test/ui/schema.spec.js b/enterprise/test/ui/schema.spec.js similarity index 100% rename from test/ui/schema.spec.js rename to enterprise/test/ui/schema.spec.js diff --git a/test/ui/search.spec.js b/enterprise/test/ui/search.spec.js similarity index 100% rename from test/ui/search.spec.js rename to enterprise/test/ui/search.spec.js diff --git a/src/index/CMakeLists.txt b/src/index/CMakeLists.txt index 199e8144..e7908944 100644 --- a/src/index/CMakeLists.txt +++ b/src/index/CMakeLists.txt @@ -10,7 +10,11 @@ target_compile_definitions(sourcemeta_one_index target_link_libraries(sourcemeta_one_index PRIVATE sourcemeta::one::resolver) target_link_libraries(sourcemeta_one_index PRIVATE sourcemeta::one::shared) target_link_libraries(sourcemeta_one_index PRIVATE sourcemeta::one::configuration) -target_link_libraries(sourcemeta_one_index PRIVATE sourcemeta::one::web) + +if(ONE_ENTERPRISE) + target_link_libraries(sourcemeta_one_index PRIVATE sourcemeta::one::web) + target_compile_definitions(sourcemeta_one_index PRIVATE SOURCEMETA_ONE_ENTERPRISE) +endif() target_link_libraries(sourcemeta_one_index PRIVATE sourcemeta::core::build) target_link_libraries(sourcemeta_one_index PRIVATE sourcemeta::core::uri) diff --git a/src/index/index.cc b/src/index/index.cc index 7f6eb9ea..d5320684 100644 --- a/src/index/index.cc +++ b/src/index/index.cc @@ -9,7 +9,10 @@ #include #include #include + +#if defined(SOURCEMETA_ONE_ENTERPRISE) #include +#endif #include "explorer.h" #include "generators.h" @@ -437,6 +440,8 @@ static auto index_main(const std::string_view &program, ///////////////////////////////////////////////////////////////////////////// if (configuration.html.has_value()) { +#if defined(SOURCEMETA_ONE_ENTERPRISE) + // TODO: Abstract all of this in enterprise/src/web sourcemeta::core::parallel_for_each( directories.begin(), directories.end(), [&configuration, &output, &schemas_path, &explorer_path, &directories, @@ -501,6 +506,11 @@ static auto index_main(const std::string_view &program, "schema", adapter, output); }, concurrency); +#else + std::cerr + << "The `html` option is only available on the Enterprise edition\n"; + return EXIT_FAILURE; +#endif } ///////////////////////////////////////////////////////////////////////////// diff --git a/src/web/style.scss b/src/web/style.scss deleted file mode 100644 index aba6b6f9..00000000 --- a/src/web/style.scss +++ /dev/null @@ -1,69 +0,0 @@ -/* - * All rights reserved. You can only use this software - * under a commercial license, as set out in - * . - */ - -@import "../../vendor/bootstrap/scss/functions"; - -$border-radius: 0; -$breadcrumb-font-size: 15px; - -@import "../../vendor/bootstrap/scss/variables"; -@import "../../vendor/bootstrap/scss/variables-dark"; -@import "../../vendor/bootstrap/scss/maps"; -@import "../../vendor/bootstrap/scss/mixins"; -@import "../../vendor/bootstrap/scss/utilities"; - -@import "../../vendor/bootstrap/scss/root"; -@import "../../vendor/bootstrap/scss/reboot"; -@import "../../vendor/bootstrap/scss/type"; -@import "../../vendor/bootstrap/scss/images"; -@import "../../vendor/bootstrap/scss/containers"; -@import "../../vendor/bootstrap/scss/grid"; - -@import "../../vendor/bootstrap/scss/tables"; -@import "../../vendor/bootstrap/scss/forms"; -@import "../../vendor/bootstrap/scss/buttons"; -// @import "../../vendor/bootstrap/scss/transitions"; -// @import "../../vendor/bootstrap/scss/dropdown"; -@import "../../vendor/bootstrap/scss/button-group"; -@import "../../vendor/bootstrap/scss/nav"; -@import "../../vendor/bootstrap/scss/navbar"; -// @import "../../vendor/bootstrap/scss/card"; -// @import "../../vendor/bootstrap/scss/accordion"; -@import "../../vendor/bootstrap/scss/breadcrumb"; -// @import "../../vendor/bootstrap/scss/pagination"; -@import "../../vendor/bootstrap/scss/badge"; -@import "../../vendor/bootstrap/scss/alert"; -@import "../../vendor/bootstrap/scss/progress"; -@import "../../vendor/bootstrap/scss/list-group"; -// @import "../../vendor/bootstrap/scss/close"; -// @import "../../vendor/bootstrap/scss/toasts"; -// @import "../../vendor/bootstrap/scss/modal"; -// @import "../../vendor/bootstrap/scss/tooltip"; -// @import "../../vendor/bootstrap/scss/popover"; -// @import "../../vendor/bootstrap/scss/carousel"; -// @import "../../vendor/bootstrap/scss/spinners"; -// @import "../../vendor/bootstrap/scss/offcanvas"; -// @import "../../vendor/bootstrap/scss/placeholders"; - -@import "../../vendor/bootstrap/scss/helpers"; -@import "../../vendor/bootstrap/scss/utilities/api"; - -// Bootstrap Icons -$bootstrap-icons-font: bootstrap-icons; -$bootstrap-icons-font-dir: "/self/static"; -@import "../../vendor/bootstrap-icons/font/bootstrap-icons.scss"; - -// Bootstrap doesn't seem to provide breakpoint-based modifiers to `.w-*` -@include media-breakpoint-up(md) { - .w-md-auto { - width: auto !important; - } -} - -// Tables with vertical headers collapse the headers by default -table tr > th[scope="row"] { - width: 1px; -} diff --git a/test/cli/CMakeLists.txt b/test/cli/CMakeLists.txt index a233c720..d13c74f8 100644 --- a/test/cli/CMakeLists.txt +++ b/test/cli/CMakeLists.txt @@ -1,36 +1,36 @@ -macro(sourcemeta_one_test_cli program name) +macro(sourcemeta_one_test_cli_common program name) if(UNIX) - add_test(NAME one.${program}.${name} COMMAND - "${CMAKE_CURRENT_SOURCE_DIR}/${program}/${name}.sh" + add_test(NAME one.${program}.common.${name} COMMAND + "${CMAKE_CURRENT_SOURCE_DIR}/${program}/common/${name}.sh" "$" "${ONE_VERSION}" WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") - set_tests_properties(one.${program}.${name} PROPERTIES + set_tests_properties(one.${program}.common.${name} PROPERTIES ENVIRONMENT "ONE_PREFIX=${ONE_PREFIX}") endif() endmacro() if(ONE_INDEX) - sourcemeta_one_test_cli(index bundle-ref-no-fragment) - sourcemeta_one_test_cli(index extend-builtin-not-found) - sourcemeta_one_test_cli(index external-reference) - sourcemeta_one_test_cli(index invalid-configuration) - sourcemeta_one_test_cli(index invalid-schema) - sourcemeta_one_test_cli(index invalid-schema-top-level-ref-draft7) - sourcemeta_one_test_cli(index invalid-schema-uri-percentage) - sourcemeta_one_test_cli(index invalid-url-option-relative) - sourcemeta_one_test_cli(index invalid-url-option-urn) - sourcemeta_one_test_cli(index invalid-url-option-non-http) - sourcemeta_one_test_cli(index invalid-url-option-no-value) - sourcemeta_one_test_cli(index output-non-directory) - sourcemeta_one_test_cli(index extra-files-on-rebuild) - sourcemeta_one_test_cli(index extra-directories-on-rebuild) - sourcemeta_one_test_cli(index directory-schema-same-name) - sourcemeta_one_test_cli(index rebuild-cache) - sourcemeta_one_test_cli(index rebuild-to-empty) - sourcemeta_one_test_cli(index verbose-long) - sourcemeta_one_test_cli(index verbose-short) - sourcemeta_one_test_cli(index no-base-uri) - sourcemeta_one_test_cli(index no-options) - sourcemeta_one_test_cli(index no-output) + sourcemeta_one_test_cli_common(index bundle-ref-no-fragment) + sourcemeta_one_test_cli_common(index extend-builtin-not-found) + sourcemeta_one_test_cli_common(index external-reference) + sourcemeta_one_test_cli_common(index invalid-configuration) + sourcemeta_one_test_cli_common(index invalid-schema) + sourcemeta_one_test_cli_common(index invalid-schema-top-level-ref-draft7) + sourcemeta_one_test_cli_common(index invalid-schema-uri-percentage) + sourcemeta_one_test_cli_common(index invalid-url-option-relative) + sourcemeta_one_test_cli_common(index invalid-url-option-urn) + sourcemeta_one_test_cli_common(index invalid-url-option-non-http) + sourcemeta_one_test_cli_common(index invalid-url-option-no-value) + sourcemeta_one_test_cli_common(index output-non-directory) + sourcemeta_one_test_cli_common(index extra-files-on-rebuild) + sourcemeta_one_test_cli_common(index extra-directories-on-rebuild) + sourcemeta_one_test_cli_common(index directory-schema-same-name) + sourcemeta_one_test_cli_common(index rebuild-cache) + sourcemeta_one_test_cli_common(index rebuild-to-empty) + sourcemeta_one_test_cli_common(index verbose-long) + sourcemeta_one_test_cli_common(index verbose-short) + sourcemeta_one_test_cli_common(index no-base-uri) + sourcemeta_one_test_cli_common(index no-options) + sourcemeta_one_test_cli_common(index no-output) endif() diff --git a/test/cli/index/bundle-ref-no-fragment.sh b/test/cli/index/common/bundle-ref-no-fragment.sh similarity index 100% rename from test/cli/index/bundle-ref-no-fragment.sh rename to test/cli/index/common/bundle-ref-no-fragment.sh diff --git a/test/cli/index/directory-schema-same-name.sh b/test/cli/index/common/directory-schema-same-name.sh similarity index 100% rename from test/cli/index/directory-schema-same-name.sh rename to test/cli/index/common/directory-schema-same-name.sh diff --git a/test/cli/index/extend-builtin-not-found.sh b/test/cli/index/common/extend-builtin-not-found.sh similarity index 100% rename from test/cli/index/extend-builtin-not-found.sh rename to test/cli/index/common/extend-builtin-not-found.sh diff --git a/test/cli/index/external-reference.sh b/test/cli/index/common/external-reference.sh similarity index 100% rename from test/cli/index/external-reference.sh rename to test/cli/index/common/external-reference.sh diff --git a/test/cli/index/extra-directories-on-rebuild.sh b/test/cli/index/common/extra-directories-on-rebuild.sh similarity index 100% rename from test/cli/index/extra-directories-on-rebuild.sh rename to test/cli/index/common/extra-directories-on-rebuild.sh diff --git a/test/cli/index/extra-files-on-rebuild.sh b/test/cli/index/common/extra-files-on-rebuild.sh similarity index 100% rename from test/cli/index/extra-files-on-rebuild.sh rename to test/cli/index/common/extra-files-on-rebuild.sh diff --git a/test/cli/index/invalid-configuration.sh b/test/cli/index/common/invalid-configuration.sh similarity index 100% rename from test/cli/index/invalid-configuration.sh rename to test/cli/index/common/invalid-configuration.sh diff --git a/test/cli/index/invalid-schema-top-level-ref-draft7.sh b/test/cli/index/common/invalid-schema-top-level-ref-draft7.sh similarity index 100% rename from test/cli/index/invalid-schema-top-level-ref-draft7.sh rename to test/cli/index/common/invalid-schema-top-level-ref-draft7.sh diff --git a/test/cli/index/invalid-schema-uri-percentage.sh b/test/cli/index/common/invalid-schema-uri-percentage.sh similarity index 100% rename from test/cli/index/invalid-schema-uri-percentage.sh rename to test/cli/index/common/invalid-schema-uri-percentage.sh diff --git a/test/cli/index/invalid-schema.sh b/test/cli/index/common/invalid-schema.sh similarity index 100% rename from test/cli/index/invalid-schema.sh rename to test/cli/index/common/invalid-schema.sh diff --git a/test/cli/index/invalid-url-option-no-value.sh b/test/cli/index/common/invalid-url-option-no-value.sh similarity index 100% rename from test/cli/index/invalid-url-option-no-value.sh rename to test/cli/index/common/invalid-url-option-no-value.sh diff --git a/test/cli/index/invalid-url-option-non-http.sh b/test/cli/index/common/invalid-url-option-non-http.sh similarity index 100% rename from test/cli/index/invalid-url-option-non-http.sh rename to test/cli/index/common/invalid-url-option-non-http.sh diff --git a/test/cli/index/invalid-url-option-relative.sh b/test/cli/index/common/invalid-url-option-relative.sh similarity index 100% rename from test/cli/index/invalid-url-option-relative.sh rename to test/cli/index/common/invalid-url-option-relative.sh diff --git a/test/cli/index/invalid-url-option-urn.sh b/test/cli/index/common/invalid-url-option-urn.sh similarity index 100% rename from test/cli/index/invalid-url-option-urn.sh rename to test/cli/index/common/invalid-url-option-urn.sh diff --git a/test/cli/index/no-base-uri.sh b/test/cli/index/common/no-base-uri.sh similarity index 100% rename from test/cli/index/no-base-uri.sh rename to test/cli/index/common/no-base-uri.sh diff --git a/test/cli/index/no-options.sh b/test/cli/index/common/no-options.sh similarity index 100% rename from test/cli/index/no-options.sh rename to test/cli/index/common/no-options.sh diff --git a/test/cli/index/no-output.sh b/test/cli/index/common/no-output.sh similarity index 100% rename from test/cli/index/no-output.sh rename to test/cli/index/common/no-output.sh diff --git a/test/cli/index/output-non-directory.sh b/test/cli/index/common/output-non-directory.sh similarity index 100% rename from test/cli/index/output-non-directory.sh rename to test/cli/index/common/output-non-directory.sh diff --git a/test/cli/index/rebuild-cache.sh b/test/cli/index/common/rebuild-cache.sh similarity index 100% rename from test/cli/index/rebuild-cache.sh rename to test/cli/index/common/rebuild-cache.sh diff --git a/test/cli/index/rebuild-to-empty.sh b/test/cli/index/common/rebuild-to-empty.sh similarity index 100% rename from test/cli/index/rebuild-to-empty.sh rename to test/cli/index/common/rebuild-to-empty.sh diff --git a/test/cli/index/verbose-long.sh b/test/cli/index/common/verbose-long.sh similarity index 100% rename from test/cli/index/verbose-long.sh rename to test/cli/index/common/verbose-long.sh diff --git a/test/cli/index/verbose-short.sh b/test/cli/index/common/verbose-short.sh similarity index 100% rename from test/cli/index/verbose-short.sh rename to test/cli/index/common/verbose-short.sh