Test-JSON-Schema-Acceptance-1.038000755000766000024 015240201330 16017 5ustar00etherstaff000000000000README100644000766000024 50715240201330 16742 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038This archive contains the distribution Test-JSON-Schema-Acceptance, version 1.038: Acceptance testing for JSON-Schema based validators This software is Copyright (c) 2015 by Ben Hutton. This is free software, licensed under: The MIT (X11) License This README file was generated by Dist::Zilla::Plugin::Readme v6.037. Changes100640000766000024 3463715240201330 17424 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038Revision history for Test-JSON-Schema-Acceptance 1.038 2026-08-16 00:22:45Z - removed dependency on Ref::Util - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/75995a1c8112322024d5c04a5eac27813aeb46f0...6648e8194c69697b2e1a15fe76a06a480b183a51 1.037 2026-01-21 22:49:02Z - when dumping data for a failed test, include its type when blessed (e.g. a Math::BigInt object) - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/3fc541796930c64960f334917629a221e4d74ceb...75995a1c8112322024d5c04a5eac27813aeb46f0 1.036 2026-01-06 18:04:22Z - do not add v1/ remotes when the implementation does not support that version - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/d69537acea93fd7481ad80ff3015d88ab0b13d5a...3fc541796930c64960f334917629a221e4d74ceb 1.035 2025-11-30 18:21:46Z - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/8da0a7bcb23f3516590e70bc5c3e396400c27741...d69537acea93fd7481ad80ff3015d88ab0b13d5a 1.034 2025-11-12 18:32:38Z - increased some prereq requirements to resolve failures on older perls; now using more Test2-specific modules 1.033 2025-11-09 16:24:46Z - fix test warnings on older perls - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/8fd4fcec8ffc2294958818e05326a37fcf2b6c5c...8da0a7bcb23f3516590e70bc5c3e396400c27741 1.032 2025-11-09 01:52:07Z - make tests "todo" when they fail when Cpanel::JSON::XS is not installed (GH#24) - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/be58fa98d5f79bb8d20f45a15e540332669ad947...8fd4fcec8ffc2294958818e05326a37fcf2b6c5c 1.031 2025-11-07 17:27:21Z - remove Test::More as a dependency 1.030 2025-11-06 01:05:56Z - "draft-next" is now known as "v1" - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/9ad349be933f1e74810cb4fd3ad19780694dc77e...be58fa98d5f79bb8d20f45a15e540332669ad947 1.029 2025-06-03 21:01:17Z - the acceptance sub provided by the application can now return an additional value, containing the error result of the validation, for diagnostic purposes. - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/9f256c8811c9c6d181db049d1e69bad35156bf60...9ad349be933f1e74810cb4fd3ad19780694dc77e 1.028 2025-05-10 19:51:04Z - now passing the specification_version to the add_resource sub, when documents are in draft-specific subdirectories - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/e524505b8ac4a61c5dc162b51d68c2385a134706...9f256c8811c9c6d181db049d1e69bad35156bf60 1.027 2025-02-02 18:40:55Z - fix double json-encoding of schema and data diagnostics - fix a test for latest Test2::* - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/9fc880bfb6d8ccd093bc82431f17d13681ffae8e...e524505b8ac4a61c5dc162b51d68c2385a134706 1.026 2024-06-19 04:02:15Z - declare Mojolicious minimum version needed for JSON_XS logic - also print data and schema for failed tests 1.025 2024-06-01 23:58:10Z - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/dd9599a5238abe76d13fab37857265a3be3a01ea...9fc880bfb6d8ccd093bc82431f17d13681ffae8e 1.024 2024-05-04 23:51:50Z - no longer include the local git sha in the result output, when testing with a local data directory - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/57617f254a6734d5c64fa86fd3b08e8799970b25...dd9599a5238abe76d13fab37857265a3be3a01ea 1.023 2024-04-13 19:25:31Z - include git location in generated results files when using a custom test directory - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/bf0360f4b7c51b8f968aabe7f3f49e12b120fc85...57617f254a6734d5c64fa86fd3b08e8799970b25 1.022 2024-03-09 22:26:06Z - handle out-of-range numeric test data by decoding to Math::BigFloat/Math::BigInt objects - remove use of JSON::MaybeXS, to avoid potential use of JSON::XS; now we use Cpanel::JSON::XS or JSON::PP directly, using the same environment variables as in Mojo::JSON for customization. - explicit mention added to LICENSE prohibiting the alteration of the test data packaged with this distribution - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/cda4281c46226b980cbf9db4610f03d9f718e533...bf0360f4b7c51b8f968aabe7f3f49e12b120fc85 1.021 2023-10-25 22:02:36Z - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/ab3924a663d2f9e6de844f464d185a70d881b9ed...cda4281c46226b980cbf9db4610f03d9f718e533 1.020 2023-09-16 23:54:44Z - properly skip over remote resources that reference the wrong spec version - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/47958f82d0ca44b82f3fb32744a0fb5aead191a6...ab3924a663d2f9e6de844f464d185a70d881b9ed 1.019 2023-04-01 17:50:45Z - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/d21ed578aeb13b55dfe3604db53adb4750e1abc3...47958f82d0ca44b82f3fb32744a0fb5aead191a6 1.018 2022-12-30 22:15:58Z - use two separate json encoders, to avoid inadvertently changing serialization results in the middle of testing - prints actual result on test failure, for nicer diagnostics in cpantesters reports - validate each test schema against the proper metaschema, if a $schema keyword exists, rather than the specification metaschema - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/69acf52990b004240839ae19b4bec8fb01d50876...d21ed578aeb13b55dfe3604db53adb4750e1abc3 1.017 2022-07-23 21:55:43Z - now allowing additional (ignored) properties in test data, to be forward-compatible with developments to the test suite - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/637f0ac3ebdd110065ab846918c03b364d9ee253...69acf52990b004240839ae19b4bec8fb01d50876 1.016 2022-02-22 01:59:45Z - skip tests that are not possible on perls >= 5.35.9, due to changes in internal handling of numbers when treated as strings - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/20fb14bde8f3c45a8933cd13283557c1b1fdf5b5...637f0ac3ebdd110065ab846918c03b364d9ee253 1.015 2021-12-31 21:17:27Z - removed bignum deserialization that was added in 1.014: you should override the json_decoder attribute if you want this - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/26f74befcd2286cce0b74c9ae17ecdd560245924...20fb14bde8f3c45a8933cd13283557c1b1fdf5b5 1.014 2021-12-30 05:08:33Z - "draft-future" is now known as "draft-next" - minimum perl version raised to 5.020 - now deserializes large numbers in test data to Math::BigInt, Math::BigFloat objects - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/329efe59c65ea9f49af9c5c07dd6f5d22cb67ef4...26f74befcd2286cce0b74c9ae17ecdd560245924 1.013 2021-10-22 22:00:15Z - reflect schema validation failure (against the metaschema) in the results tally - updated test suite: https://github.com/json-schema-org/JSON-Schema-Test-Suite/compare/fd0aa9f8e2497d9048e17f071abb8fa409f5cb52...329efe59c65ea9f49af9c5c07dd6f5d22cb67ef4 1.012 2021-07-22 05:14:11Z - updated test suite to commit fd0aa9f8e2497d9048e17f071abb8fa409f5cb52 1.011 2021-06-26 19:38:21Z - updated test suite to commit b6769f2b9ae8b3adbe8117d155a1f8ade092fb88 1.010 2021-06-19 18:27:26Z - updated test suite to commit 0aefbb3d80e0caa22f3782677cf09c61b2205aa7 (note that "draft-future" is now available as a specification version) 1.009 2021-06-05 17:48:22Z - always include specification_version in results - pad results with more whitespace, to minimize diffs - updated test suite to commit 8a3a542bfe6b671a51f4e39cdc0dbbf543e8903d 1.008 2021-05-15 18:03:12Z - clean up the results output when printing a custom test_dir - new optional config value "test_schemas", to perform a sanity test on the test schemas themselves - updated test suite to commit bf383b4cf2a0b83957b232d3ba5a92222f632a08 1.007 2021-04-14 00:17:32Z - new "results_text" attribute, containing the textual table printed at the end of the tests - switch from Try::Tiny to Feature::Compat::Try, raising the minimum perl from 5.14 to 5.16 - updated test suite to commit dfcd4a19f857b85e344d6d14e37ca7b2e5d11bdf 1.006 2021-04-08 20:05:11Z - also list skipped directories in diagnostic output - updated test suite to commit fc68499eafa2cdbe52b4ed4d219dbb1c8c99fb2b 1.005 2021-03-23 21:24:15Z - specification => latest now uses draft2020-12 1.004 2021-03-23 20:37:27Z - new "skip_dir" option, to be used in conjunction with include_optional => 1 - updated test suite to commit cd73775f22d4cae64587486c0ee7efca9131643c 1.003 2020-12-05 07:09:12Z - updated test suite to commit 6505944d38c414039cd8f27e3312b9e3831a0a16 1.002 2020-11-24 17:56:27Z - include more data in the summary header - fix minimum declared version for Path::Tiny - make the output look a little nicer on failure - perform the evaluation inside the subtest, to allow for any output or tests generated by the evaluator itself to be grouped properly with related output - updated test suite to commit 3b79a452fc2f3dbb0add34f520fed64de4f465cf 1.001 2020-10-16 18:28:56Z - also display TODO-failures in results summary table - also display a TOTAL line in the results summary table - updated test suite to commit 96742ba3c4a1eff6de45f0c50a66a975796b7c37 1.000 2020-08-13 19:24:23Z - new "add_resource" option, for providing a subref for easy use of additional schema resources used by the test suite - raise minimum required perl to 5.14 - now checking for data and schema mutation during evaluation - updated test suite to commit ec18a7d0c24b4286f101e7e6956b89a2d4cbc59d 0.999 2020-06-08 23:31:40Z - fix type constraint for test data, and add a test to verify it 0.998 2020-06-08 23:05:33Z - fix warning when the test directory is empty - updated test suite to commit 817b724b7a64d7c18a8232aa32b5f1cc1d6dd153 0.997 2020-05-19 23:24:07Z - fix test that warns on 5.10 - updated test suite to commit 8bf2f7f3869230f4d778356730805866c76e5932 0.996 2020-05-14 19:33:09Z - work around problem when files in the test suite are renamed - really fix sorting of results table this time - updated test suite to commit 7ba95f3588d0f98a4cbce9da0fd42bee6c6931bd 0.995 2020-05-13 17:11:29Z - fix sorting of results table so tests in subdirectories appear last - fix minimum declared version for Path::Tiny - updated test suite to commit 2f2e7cf8bd7c4378107db6115d6af5aae062b105 0.994 2020-05-12 18:43:17Z - added "additional_resources" attribute, for accessing remotely-referenced content - new "include_optional" feature, for including optional tests (GH #12) - test results are now available via the "results" accessor method 0.993 2020-05-08 16:55:43Z - soften type constraints so as to tolerate older Cpanel::JSON::XS, which inflates booleans to different types - print information about this module's version, and the commit and version of the test suite data we are using - new "verbose" option, for more helpful output when running under "make test" or "prove" - improved handling of exceptions from the tested implementation - updated test suite to commit 9d0e0eb31d6be6bebd3bacdd6be119a8841e9999 0.992 2020-05-04 22:40:44Z - fix minimum declared version for List::Util (RT#132461) - increase minimum version for JSON::MaybeXS, to ensure that JSON::XS is never used, even when installed - include tabular results of passes, fails for each test file (GH #3) - updated test suite to commit 361620ecf18b71883f8522cb4c7e95e3e0adcdce 0.991 2020-04-30 23:56:50Z - switch from JSON.pm to JSON::MaybeXS (GH #1) - package the submodule of test cases in a sharedir (GH #2) - additional constructor options, including use of a custom directory - add options "validate_data" and "validate_json_string", to accomodate the JSON Schema backend preferring either inflated data or a JSON-encoded string. (GH #4) - remove undocumented "only_test" option, and ability to skip test by number (GH #10, GH #11) - clearer labels for each test - new "tests" option, for restricting the tests that are run (GH #7) - deprecated "skip_tests" option - new "todo_tests" option, for acknowledging that certain tests do not pass yet (GH #6) - non-ascii characters are not corrupted during decoding (GH #13) - always read test data files in sorted order, for consistent results - updated test suite to commit ab9e3d5c53abe0a0d2a5a21429fb12524b0926a0 0.990 2020-04-23 18:00:40Z - updated distribution packaging - updated test suite with latest tests (to commit c4d3e0f92ced13c288d1713815c00539b09c9d2e) 0.0.2 2015-09-04 Fixed Github issue #7 - Draft tested is dependant on last call to new, not object instance. 0.0.1 2015-09-03 First version, released on an unsuspecting world. LICENCE100644000766000024 220515240201330 17064 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038This software is Copyright (c) 2015 by Ben Hutton. This is free software, licensed under: The MIT (X11) License The MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. INSTALL100644000766000024 473415240201330 17141 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038This is the Perl distribution Test-JSON-Schema-Acceptance. Installing Test-JSON-Schema-Acceptance is straightforward. ## Installation with cpanm If you have cpanm, you only need one line: % cpanm Test::JSON::Schema::Acceptance If it does not have permission to install modules to the current perl, cpanm will automatically set up and install to a local::lib in your home directory. See the local::lib documentation (https://metacpan.org/pod/local::lib) for details on enabling it in your environment. ## Installing with the CPAN shell Alternatively, if your CPAN shell is set up, you should just be able to do: % cpan Test::JSON::Schema::Acceptance ## Manual installation As a last resort, you can manually install it. If you have not already downloaded the release tarball, you can find the download link on the module's MetaCPAN page: https://metacpan.org/pod/Test::JSON::Schema::Acceptance Untar the tarball, install configure prerequisites (see below), then build it: % perl Makefile.PL % make && make test Then install it: % make install On Windows platforms, you should use `dmake` or `nmake`, instead of `make`. If your perl is system-managed, you can create a local::lib in your home directory to install modules to. For details, see the local::lib documentation: https://metacpan.org/pod/local::lib The prerequisites of this distribution will also have to be installed manually. The prerequisites are listed in one of the files: `MYMETA.yml` or `MYMETA.json` generated by running the manual build process described above. ## Configure Prerequisites This distribution requires other modules to be installed before this distribution's installer can be run. They can be found under the "configure_requires" key of META.yml or the "{prereqs}{configure}{requires}" key of META.json. ## Other Prerequisites This distribution may require additional modules to be installed after running Makefile.PL. Look for prerequisites in the following phases: * to run make, PHASE = build * to use the module code itself, PHASE = runtime * to run tests, PHASE = test They can all be found in the "PHASE_requires" key of MYMETA.yml or the "{prereqs}{PHASE}{requires}" key of MYMETA.json. ## Documentation Test-JSON-Schema-Acceptance documentation is available as POD. You can run `perldoc` from a shell to read the documentation: % perldoc Test::JSON::Schema::Acceptance For more information on installing Perl modules via CPAN, please see: https://www.cpan.org/modules/INSTALL.html dist.ini100640000766000024 1257415240201330 17571 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038name = Test-JSON-Schema-Acceptance author = Ben Hutton (@relequestual) license = MIT copyright_year = 2015 copyright_holder = Ben Hutton ; ATTENTION DISTRO REPACKAGERS: do NOT use fresh copies of these files ; from their source; it is important to include the original versions ; of the files as they were packaged with this cpan distribution, or ; surprising behaviour may occur. ; bring local checkout up to what the submodule commit says [Run::BeforeBuild] quiet = 1 run = git submodule update --init --recursive run = git submodule update --recursive ; fetches the commit captured in 'share' ; pull in updates to the latest commit in the submodule repository ; if there are new changes to the submodule, release will be halted by [Git::Check] [Run::BeforeRelease] :version = 0.050 quiet = 1 run = git submodule update --remote run = if [[ -n $(git status --untracked --porcelain share) ]]; then bash -c "echo -e '\033[1;33m!!! submodule has changed! run './update-share' to commit updates to share/\033[0m' >&2"; fi [Run::AfterRelease] quiet = 1 eval = chomp(my $status = `git submodule status`); eval = my ($new_sha) = split(' ', $status, 2); eval = $new_sha =~ s/^\+//; eval = `pushd ../JSON-Schema-Test-Suite; git tag -a -m'%n-%v' '%n-%v' $new_sha` [Git::GatherDir / Gather sharedir] root = share prefix = share exclude_filename = index.js exclude_filename = package.json exclude_filename = tox.ini exclude_match = ^bin/ exclude_filename = tests/latest exclude_match = ^annotations/ ; for now; will add support later [=inc::OldShareDirFiles] ;removed = share/tests/draft2019-09/optional/format/ecmascript-regex.json removed = share/tests/draft3/optional/format.json removed = share/tests/draft4/optional/format.json removed = share/tests/draft6/optional/format.json ;removed = share/tests/draft7/optional/format/ecmascript-regex.json removed = share/remotes/folder/folderInteger.json removed = share/tests/draft2019-09/optional/content.json removed = share/tests/draft2019-09/optional/unicode.json removed = share/tests/draft2020-12/optional/unicode.json removed = share/tests/draft4/optional/unicode.json removed = share/tests/draft6/optional/unicode.json removed = share/tests/draft7/optional/unicode.json removed = share/remotes/draft2019-09/subSchemas-defs.json removed = share/remotes/draft2020-12/subSchemas-defs.json removed = share/remotes/subSchemas-defs.json removed = share/tests/draft2019-09/unknownKeyword.json removed = share/tests/draft2020-12/unknownKeyword.json removed = share/tests/draft4/id.json removed = share/tests/draft6/id.json removed = share/tests/draft6/unknownKeyword.json removed = share/tests/draft7/id.json removed = share/tests/draft7/unknownKeyword.json removed = share/tests/draft2019-09/id.json removed = share/tests/draft2020-12/id.json removed = share/remotes/locationIndependentIdentifierDraft4.json removed = share/remotes/locationIndependentIdentifierPre2019.json removed = share/remotes/name.json removed = share/remotes/ref-and-definitions.json removed = share/remotes/subSchemas.json removed = share/tests/draft3/optional/ecmascript-regex.json removed = share/remotes/draft2019-09/tree.json removed = share/remotes/tree.json removed = share/remotes/different-id-ref-string.json removed = share/remotes/extendible-dynamic-ref.json removed = share/remotes/locationIndependentIdentifier.json removed = share/remotes/name-defs.json removed = share/remotes/nested-absolute-ref-to-string.json removed = share/remotes/ref-and-defs.json removed = share/remotes/urn-ref-string.json removed = share/tests/v1/propertyDependencies.json removed = share/tests/v1/defs.json [@Author::ETHER] :version = 0.174 authority = cpan:RELEQUEST bugtracker = github installer = MakeMaker Test::MinimumVersion.max_target_perl = 5.020 ; may go higher later on Git::GatherDir.exclude_filename = share ; in git, this is a filename (containing submodule info) StaticInstall.mode = off ; sharedir Test::ReportPrereqs.include[0] = JSON::PP Test::ReportPrereqs.include[1] = Cpanel::JSON::XS Test::ReportPrereqs.include[2] = JSON::XS Test::ReportPrereqs.include[3] = Mojolicious Test::ReportPrereqs.include[4] = builtin Test::ReportPrereqs.include[5] = builtin::Backport -remove = Test::Pod::No404s [Prereqs / RuntimeRequires] Mojolicious = 7.87 ; Mojo::JSON::JSON_XS JSON::PP = 4.11 [Prereqs / RuntimeSuggests] Class::XSAccessor = 0 Type::Tiny::XS = 0 Cpanel::JSON::XS = 0 [Prereqs / TestRequires] Test::Simple = 1.302176 ; Test2::API::intercept compatibility with Test::Builder and TODO Test2::Suite = 0.000131 ; "" ; we almost certainly have a compiler available, because Syntax::Keyword::Try ; is used (via Feature::Compat::Try) on all but the most recent perl versions. [DynamicPrereqs] :version = 0.040 -condition = want_xs() -body = requires('Cpanel::JSON::XS', '3.0223') [RemovePrereqs] remove = B remove = File::Spec remove = Mojo::JSON remove = Scalar::Util remove = Test::More remove = Test2::API remove = Test2::Tools::Compare remove = Tie::Hash remove = constant remove = feature remove = lib remove = open remove = strict remove = utf8 remove = warnings [GenerateFile / submodule_status] filename = share/submodule_status content_is_template = 1 content = {{ content = chomp(my $str = `git submodule status`); content = my ($sha, undef, $tag) = split(' ', $str); content = chomp(my $url = `git config --file .gitmodules submodule.share.url`); content = $sha.' '.$tag."\n".$url; content = }} [ShareDir] dir = share META.yml100644000766000024 7341315240201330 17401 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038--- abstract: 'Acceptance testing for JSON-Schema based validators' author: - 'Ben Hutton (@relequestual) ' build_requires: ExtUtils::MakeMaker: '0' JSON::PP: '4.11' Test2::Suite: '0.000131' Test2::Tools::Exception: '0' Test2::V0: '0' Test2::Warnings: '0' Test::Deep: '0' Test::File::ShareDir: '0' Test::Simple: '1.302176' builtin::compat: '0' perl: '5.020' configure_requires: ExtUtils::MakeMaker: '0' File::ShareDir::Install: '0.06' Text::ParseWords: '0' perl: '5.020' dynamic_config: 1 generated_by: 'Dist::Zilla version 6.037, CPAN::Meta::Converter version 2.150013' license: mit meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Test-JSON-Schema-Acceptance no_index: directory: - examples - inc - share - t - xt provides: Test::JSON::Schema::Acceptance: file: lib/Test/JSON/Schema/Acceptance.pm version: '1.038' requires: Feature::Compat::Try: '0' File::ShareDir: '0' Git::Wrapper: '0' JSON::PP: '4.11' List::Util: '1.33' Mojolicious: '7.87' Moo: '0' MooX::TypeTiny: '0.002002' Path::Tiny: '0.069' Test2::Todo: '0' Types::Common::Numeric: '0' Types::Standard: '1.016003' autovivification: '0' experimental: '0' if: '0' namespace::clean: '0' perl: '5.020' stable: '0.031' strictures: '2' resources: bugtracker: https://github.com/karenetheridge/Test-JSON-Schema-Acceptance/issues homepage: https://github.com/karenetheridge/Test-JSON-Schema-Acceptance repository: https://github.com/karenetheridge/Test-JSON-Schema-Acceptance.git version: '1.038' x_Dist_Zilla: perl: version: '5.045001' plugins: - class: Dist::Zilla::Plugin::Run::BeforeBuild config: Dist::Zilla::Plugin::Run::Role::Runner: fatal_errors: 1 quiet: 1 run: - 'git submodule update --init --recursive' - 'git submodule update --recursive' version: '0.050' name: Run::BeforeBuild version: '0.050' - class: Dist::Zilla::Plugin::Run::BeforeRelease config: Dist::Zilla::Plugin::Run::Role::Runner: fatal_errors: 1 quiet: 1 run: - 'git submodule update --remote' - "if [[ -n $(git status --untracked --porcelain share) ]]; then bash -c \"echo -e '\\033[1;33m!!! submodule has changed! run './update-share' to commit updates to share/\\033[0m' >&2\"; fi" version: '0.050' name: Run::BeforeRelease version: '0.050' - class: Dist::Zilla::Plugin::Run::AfterRelease config: Dist::Zilla::Plugin::Run::Role::Runner: eval: - 'chomp(my $status = `git submodule status`);' - "my ($new_sha) = split(' ', $status, 2);" - '$new_sha =~ s/^\+//;' - "`pushd ../JSON-Schema-Test-Suite; git tag -a -m'%n-%v' '%n-%v' $new_sha`" fatal_errors: 1 quiet: 1 version: '0.050' name: Run::AfterRelease version: '0.050' - class: Dist::Zilla::Plugin::Git::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: - index.js - package.json - tests/latest - tox.ini exclude_match: - ^annotations/ - ^bin/ include_dotfiles: 0 prefix: share prune_directory: [] root: share Dist::Zilla::Plugin::Git::GatherDir: include_untracked: 0 name: 'Gather sharedir' version: '2.052' - class: inc::OldShareDirFiles name: =inc::OldShareDirFiles version: ~ - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: develop type: recommends name: '@Author::ETHER/pluginbundle version' version: '6.037' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 0 check_all_prereqs: 0 modules: - Dist::Zilla::PluginBundle::Author::ETHER phase: build run_under_travis: 0 skip: [] name: '@Author::ETHER/stale modules, build' version: '0.060' - class: Dist::Zilla::Plugin::FileFinder::ByName name: '@Author::ETHER/Examples' version: '6.037' - class: Dist::Zilla::Plugin::Git::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: - CONTRIBUTING - INSTALL - LICENCE - README.pod - TODO - share exclude_match: [] include_dotfiles: 0 prefix: '' prune_directory: [] root: . Dist::Zilla::Plugin::Git::GatherDir: include_untracked: 0 name: '@Author::ETHER/Git::GatherDir' version: '2.052' - class: Dist::Zilla::Plugin::MetaYAML name: '@Author::ETHER/MetaYAML' version: '6.037' - class: Dist::Zilla::Plugin::MetaJSON name: '@Author::ETHER/MetaJSON' version: '6.037' - class: Dist::Zilla::Plugin::Readme name: '@Author::ETHER/Readme' version: '6.037' - class: Dist::Zilla::Plugin::Manifest name: '@Author::ETHER/Manifest' version: '6.037' - class: Dist::Zilla::Plugin::License name: '@Author::ETHER/License' version: '6.037' - class: Dist::Zilla::Plugin::GenerateFile::FromShareDir config: Dist::Zilla::Plugin::GenerateFile::FromShareDir: destination_filename: CONTRIBUTING dist: Dist-Zilla-PluginBundle-Author-ETHER encoding: UTF-8 has_xs: 0 location: build source_filename: CONTRIBUTING Dist::Zilla::Role::RepoFileInjector: allow_overwrite: 1 repo_root: . version: '0.009' name: '@Author::ETHER/generate CONTRIBUTING' version: '0.016' - class: Dist::Zilla::Plugin::InstallGuide config: Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000039' version: '0.006' name: '@Author::ETHER/InstallGuide' version: '1.200014' - class: Dist::Zilla::Plugin::Test::Compile config: Dist::Zilla::Plugin::Test::Compile: bail_out_on_fail: 1 fail_on_warning: author fake_home: 0 filename: xt/author/00-compile.t module_finder: - ':InstallModules' needs_display: 0 phase: develop script_finder: - ':PerlExecFiles' - '@Author::ETHER/Examples' skips: [] switch: [] name: '@Author::ETHER/Test::Compile' version: '2.059' - class: Dist::Zilla::Plugin::Test::NoTabs config: Dist::Zilla::Plugin::Test::NoTabs: filename: xt/author/no-tabs.t finder: - ':InstallModules' - ':ExecFiles' - '@Author::ETHER/Examples' - ':TestFiles' - ':ExtraTestFiles' name: '@Author::ETHER/Test::NoTabs' version: '0.15' - class: Dist::Zilla::Plugin::Test::EOL config: Dist::Zilla::Plugin::Test::EOL: filename: xt/author/eol.t finder: - ':ExecFiles' - ':ExtraTestFiles' - ':InstallModules' - ':TestFiles' - '@Author::ETHER/Examples' trailing_whitespace: 1 name: '@Author::ETHER/Test::EOL' version: '0.19' - class: Dist::Zilla::Plugin::MetaTests name: '@Author::ETHER/MetaTests' version: '6.037' - class: Dist::Zilla::Plugin::Test::CPAN::Changes config: Dist::Zilla::Plugin::Test::CPAN::Changes: changelog: Changes filename: xt/release/cpan-changes.t name: '@Author::ETHER/Test::CPAN::Changes' version: '0.013' - class: Dist::Zilla::Plugin::Test::ChangesHasContent name: '@Author::ETHER/Test::ChangesHasContent' version: '0.011' - class: Dist::Zilla::Plugin::Test::MinimumVersion config: Dist::Zilla::Plugin::Test::MinimumVersion: max_target_perl: '5.020' name: '@Author::ETHER/Test::MinimumVersion' version: '2.000011' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@Author::ETHER/PodSyntaxTests' version: '6.037' - class: Dist::Zilla::Plugin::Test::Pod::Coverage::TrustMe config: Dist::Zilla::Plugin::Test::Pod::Coverage::TrustMe: finder: - ':InstallModules' name: '@Author::ETHER/Test::Pod::Coverage::TrustMe' version: v1.0.1 - class: Dist::Zilla::Plugin::Test::PodSpelling config: Dist::Zilla::Plugin::Test::PodSpelling: directories: - examples - lib - script - t - xt spell_cmd: '' stopwords: - irc wordlist: Pod::Wordlist name: '@Author::ETHER/Test::PodSpelling' version: '2.007006' - class: Dist::Zilla::Plugin::Test::Kwalitee config: Dist::Zilla::Plugin::Test::Kwalitee: filename: xt/author/kwalitee.t skiptest: [] name: '@Author::ETHER/Test::Kwalitee' version: '2.13' - class: Dist::Zilla::Plugin::MojibakeTests name: '@Author::ETHER/MojibakeTests' version: '0.8' - class: Dist::Zilla::Plugin::Test::ReportPrereqs name: '@Author::ETHER/Test::ReportPrereqs' version: '0.029' - class: Dist::Zilla::Plugin::Test::Portability config: Dist::Zilla::Plugin::Test::Portability: options: '' name: '@Author::ETHER/Test::Portability' version: '2.001003' - class: Dist::Zilla::Plugin::Test::CleanNamespaces config: Dist::Zilla::Plugin::Test::CleanNamespaces: filename: xt/author/clean-namespaces.t skips: [] name: '@Author::ETHER/Test::CleanNamespaces' version: '0.006' - class: Dist::Zilla::Plugin::Git::Describe name: '@Author::ETHER/Git::Describe' version: '0.008' - class: Dist::Zilla::Plugin::PodWeaver config: Dist::Zilla::Plugin::PodWeaver: finder: - ':InstallModules' - ':PerlExecFiles' plugins: - class: Pod::Weaver::Plugin::EnsurePod5 name: '@Author::ETHER/EnsurePod5' version: '4.020' - class: Pod::Weaver::Plugin::H1Nester name: '@Author::ETHER/H1Nester' version: '4.020' - class: Pod::Weaver::Plugin::SingleEncoding name: '@Author::ETHER/SingleEncoding' version: '4.020' - class: Pod::Weaver::Plugin::Transformer name: '@Author::ETHER/List' version: '4.020' - class: Pod::Weaver::Plugin::Transformer name: '@Author::ETHER/Verbatim' version: '4.020' - class: Pod::Weaver::Section::Region name: '@Author::ETHER/header' version: '4.020' - class: Pod::Weaver::Section::Name name: '@Author::ETHER/Name' version: '4.020' - class: Pod::Weaver::Section::GenerateSection name: '@Author::ETHER/generate VERSION' version: '4.020' - class: Pod::Weaver::Section::Region name: '@Author::ETHER/prelude' version: '4.020' - class: Pod::Weaver::Section::Generic name: SYNOPSIS version: '4.020' - class: Pod::Weaver::Section::Generic name: DESCRIPTION version: '4.020' - class: Pod::Weaver::Section::Generic name: OVERVIEW version: '4.020' - class: Pod::Weaver::Section::Collect name: ATTRIBUTES version: '4.020' - class: Pod::Weaver::Section::Collect name: METHODS version: '4.020' - class: Pod::Weaver::Section::Collect name: FUNCTIONS version: '4.020' - class: Pod::Weaver::Section::Collect name: TYPES version: '4.020' - class: Pod::Weaver::Section::Leftovers name: '@Author::ETHER/Leftovers' version: '4.020' - class: Pod::Weaver::Section::Region name: '@Author::ETHER/postlude' version: '4.020' - class: Pod::Weaver::Section::GenerateSection name: '@Author::ETHER/generate GIVING THANKS' version: '4.020' - class: Pod::Weaver::Section::GenerateSection name: '@Author::ETHER/generate SUPPORT' version: '4.020' - class: Pod::Weaver::Section::Authors name: '@Author::ETHER/Authors' version: '4.020' - class: Pod::Weaver::Section::AllowOverride name: '@Author::ETHER/allow override AUTHOR' version: '0.05' - class: Pod::Weaver::Section::Contributors name: '@Author::ETHER/Contributors' version: '0.009' - class: Pod::Weaver::Section::Legal name: '@Author::ETHER/Legal' version: '4.020' - class: Pod::Weaver::Section::Region name: '@Author::ETHER/footer' version: '4.020' - class: Pod::Weaver::Section::AllowOverride name: 'append to SUPPORT' version: '0.05' - class: Pod::Weaver::Section::AllowOverride name: OverrideLegal version: '0.05' name: '@Author::ETHER/PodWeaver' version: '4.010' - class: Dist::Zilla::Plugin::GithubMeta name: '@Author::ETHER/GithubMeta' version: '0.58' - class: Dist::Zilla::Plugin::AutoMetaResources name: '@Author::ETHER/AutoMetaResources' version: '1.21' - class: Dist::Zilla::Plugin::Authority name: '@Author::ETHER/Authority' version: '1.009' - class: Dist::Zilla::Plugin::MetaNoIndex name: '@Author::ETHER/MetaNoIndex' version: '6.037' - class: Dist::Zilla::Plugin::MetaProvides::Package config: Dist::Zilla::Plugin::MetaProvides::Package: finder: - ':InstallModules' finder_objects: - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.037' include_underscores: 0 Dist::Zilla::Role::MetaProvider::Provider: $Dist::Zilla::Role::MetaProvider::Provider::VERSION: '2.002004' inherit_missing: 0 inherit_version: 0 meta_noindex: 1 Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000039' version: '0.006' name: '@Author::ETHER/MetaProvides::Package' version: '2.004003' - class: Dist::Zilla::Plugin::MetaConfig name: '@Author::ETHER/MetaConfig' version: '6.037' - class: Dist::Zilla::Plugin::Keywords config: Dist::Zilla::Plugin::Keywords: keywords: [] name: '@Author::ETHER/Keywords' version: '0.007' - class: Dist::Zilla::Plugin::UseUnsafeInc config: Dist::Zilla::Plugin::UseUnsafeInc: dot_in_INC: 0 name: '@Author::ETHER/UseUnsafeInc' version: '0.002' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@Author::ETHER/AutoPrereqs' version: '6.037' - class: Dist::Zilla::Plugin::Prereqs::AuthorDeps name: '@Author::ETHER/Prereqs::AuthorDeps' version: '0.007' - class: Dist::Zilla::Plugin::MinimumPerl name: '@Author::ETHER/MinimumPerl' version: '1.006' - class: Dist::Zilla::Plugin::MakeMaker config: Dist::Zilla::Role::TestRunner: default_jobs: 9 name: '@Author::ETHER/MakeMaker' version: '6.037' - class: Dist::Zilla::Plugin::Git::Contributors config: Dist::Zilla::Plugin::Git::Contributors: git_version: 2.52.0 include_authors: 0 include_releaser: 1 order_by: commits paths: [] name: '@Author::ETHER/Git::Contributors' version: '0.039' - class: Dist::Zilla::Plugin::StaticInstall config: Dist::Zilla::Plugin::StaticInstall: dry_run: 0 mode: off name: '@Author::ETHER/StaticInstall' version: '0.012' - class: Dist::Zilla::Plugin::RunExtraTests config: Dist::Zilla::Role::TestRunner: default_jobs: 9 name: '@Author::ETHER/RunExtraTests' version: '0.029' - class: Dist::Zilla::Plugin::CheckSelfDependency config: Dist::Zilla::Plugin::CheckSelfDependency: finder: - ':InstallModules' Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000039' version: '0.006' name: '@Author::ETHER/CheckSelfDependency' version: '0.011' - class: Dist::Zilla::Plugin::Run::AfterBuild config: Dist::Zilla::Plugin::Run::Role::Runner: fatal_errors: 1 quiet: 1 run: - "bash -c \"test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname '%d'` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi\"" version: '0.050' name: '@Author::ETHER/.ackrc' version: '0.050' - class: Dist::Zilla::Plugin::Run::AfterBuild config: Dist::Zilla::Plugin::Run::Role::Runner: eval: - "if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; }" fatal_errors: 0 quiet: 1 version: '0.050' name: '@Author::ETHER/.latest' version: '0.050' - class: Dist::Zilla::Plugin::CheckStrictVersion name: '@Author::ETHER/CheckStrictVersion' version: '0.001' - class: Dist::Zilla::Plugin::CheckMetaResources name: '@Author::ETHER/CheckMetaResources' version: '0.001' - class: Dist::Zilla::Plugin::EnsureLatestPerl config: Dist::Zilla::Plugin::EnsureLatestPerl: Module::CoreList: '5.20260803' name: '@Author::ETHER/EnsureLatestPerl' version: '0.010' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 1 check_all_prereqs: 1 modules: [] phase: release run_under_travis: 0 skip: [] name: '@Author::ETHER/stale modules, release' version: '0.060' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: [] allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.52.0 repo_root: . name: '@Author::ETHER/initial check' version: '2.052' - class: Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts config: Dist::Zilla::Role::Git::Repo: git_version: 2.52.0 repo_root: . name: '@Author::ETHER/Git::CheckFor::MergeConflicts' version: '0.015' - class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch config: Dist::Zilla::Role::Git::Repo: git_version: 2.52.0 repo_root: . name: '@Author::ETHER/Git::CheckFor::CorrectBranch' version: '0.015' - class: Dist::Zilla::Plugin::Git::Remote::Check name: '@Author::ETHER/Git::Remote::Check' version: 0.1.2 - class: Dist::Zilla::Plugin::CheckPrereqsIndexed name: '@Author::ETHER/CheckPrereqsIndexed' version: '0.022' - class: Dist::Zilla::Plugin::TestRelease name: '@Author::ETHER/TestRelease' version: '6.037' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: [] allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.52.0 repo_root: . name: '@Author::ETHER/after tests' version: '2.052' - class: Dist::Zilla::Plugin::CheckIssues name: '@Author::ETHER/CheckIssues' version: '0.011' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@Author::ETHER/UploadToCPAN' version: '6.037' - class: Dist::Zilla::Plugin::CopyFilesFromRelease config: Dist::Zilla::Plugin::CopyFilesFromRelease: filename: - CONTRIBUTING - INSTALL - LICENCE - LICENSE - ppport.h match: [] name: '@Author::ETHER/copy generated files' version: '0.007' - class: Dist::Zilla::Plugin::ReadmeAnyFromPod config: Dist::Zilla::Role::FileWatcher: version: '0.006' name: '@Author::ETHER/ReadmeAnyFromPod' version: '0.163250' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: develop type: recommends name: '@Author::ETHER/@Git::VersionManager/pluginbundle version' version: '6.037' - class: Dist::Zilla::Plugin::RewriteVersion::Transitional config: Dist::Zilla::Plugin::RewriteVersion: add_tarball_name: 0 finders: - ':ExecFiles' - ':InstallModules' global: 1 skip_version_provider: 0 Dist::Zilla::Plugin::RewriteVersion::Transitional: {} name: '@Author::ETHER/@Git::VersionManager/RewriteVersion::Transitional' version: '0.009' - class: Dist::Zilla::Plugin::MetaProvides::Update name: '@Author::ETHER/@Git::VersionManager/MetaProvides::Update' version: '0.007' - class: Dist::Zilla::Plugin::CopyFilesFromRelease config: Dist::Zilla::Plugin::CopyFilesFromRelease: filename: - Changes match: [] name: '@Author::ETHER/@Git::VersionManager/CopyFilesFromRelease' version: '0.007' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: - . commit_msg: '%N-%v%t%n%n%c' signoff: 0 Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - CONTRIBUTING - Changes - INSTALL - LICENCE - README.pod allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.52.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@Author::ETHER/@Git::VersionManager/release snapshot' version: '2.052' - class: Dist::Zilla::Plugin::Git::Tag config: Dist::Zilla::Plugin::Git::Tag: branch: ~ changelog: Changes signed: 0 tag: v1.038 tag_format: v%V tag_message: v%v%t%n%n%c Dist::Zilla::Role::Git::Repo: git_version: 2.52.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@Author::ETHER/@Git::VersionManager/Git::Tag' version: '2.052' - class: Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional config: Dist::Zilla::Plugin::BumpVersionAfterRelease: finders: - ':InstallModules' global: 1 munge_makefile_pl: 1 Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional: {} name: '@Author::ETHER/@Git::VersionManager/BumpVersionAfterRelease::Transitional' version: '0.009' - class: Dist::Zilla::Plugin::NextRelease name: '@Author::ETHER/@Git::VersionManager/NextRelease' version: '6.037' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: [] commit_msg: 'increment $VERSION after %v release' signoff: 0 Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Build.PL - Changes - Makefile.PL allow_dirty_match: - (?^:^lib/.*\.pm$) changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.52.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@Author::ETHER/@Git::VersionManager/post-release commit' version: '2.052' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: x_Dist_Zilla type: requires name: '@Author::ETHER/@Git::VersionManager/prereqs for @Git::VersionManager' version: '6.037' - class: Dist::Zilla::Plugin::Git::Push config: Dist::Zilla::Plugin::Git::Push: push_to: - origin remotes_must_exist: 1 Dist::Zilla::Role::Git::Repo: git_version: 2.52.0 repo_root: . name: '@Author::ETHER/Git::Push' version: '2.052' - class: Dist::Zilla::Plugin::GitHub::Update config: Dist::Zilla::Plugin::GitHub::Update: metacpan: 1 name: '@Author::ETHER/GitHub::Update' version: '0.49' - class: Dist::Zilla::Plugin::Run::AfterRelease config: Dist::Zilla::Plugin::Run::Role::Runner: fatal_errors: 0 quiet: 0 run: - REDACTED version: '0.050' name: '@Author::ETHER/install release' version: '0.050' - class: Dist::Zilla::Plugin::Run::AfterRelease config: Dist::Zilla::Plugin::Run::Role::Runner: eval: - 'print "release complete!\xa"' fatal_errors: 1 quiet: 1 version: '0.050' name: '@Author::ETHER/release complete' version: '0.050' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@Author::ETHER/ConfirmRelease' version: '6.037' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: x_Dist_Zilla type: requires name: '@Author::ETHER/prereqs for @Author::ETHER' version: '6.037' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: runtime type: requires name: RuntimeRequires version: '6.037' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: runtime type: suggests name: RuntimeSuggests version: '6.037' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: TestRequires version: '6.037' - class: Dist::Zilla::Plugin::DynamicPrereqs config: Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000039' version: '0.006' name: DynamicPrereqs version: '0.040' - class: Dist::Zilla::Plugin::RemovePrereqs config: Dist::Zilla::Plugin::RemovePrereqs: modules_to_remove: - B - File::Spec - Mojo::JSON - Scalar::Util - Test2::API - Test2::Tools::Compare - Test::More - Tie::Hash - constant - feature - lib - open - strict - utf8 - warnings name: RemovePrereqs version: '6.037' - class: Dist::Zilla::Plugin::GenerateFile name: submodule_status version: '6.037' - class: Dist::Zilla::Plugin::ShareDir name: ShareDir version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' version: '6.037' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' version: '6.037' - class: Dist::Zilla::Plugin::VerifyPhases name: '@Author::ETHER/PHASE VERIFICATION' version: '0.016' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: 0 version: '6.037' x_authority: cpan:RELEQUEST x_contributors: - 'Karen Etheridge ' - 'Daniel Perrett ' x_generated_by_perl: v5.45.1 x_serialization_backend: 'YAML::Tiny version 1.76' x_spdx_expression: MIT x_static_install: 0 x_use_unsafe_inc: 0 MANIFEST100644000766000024 6304515240201330 17261 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.037 CONTRIBUTING Changes INSTALL LICENCE MANIFEST META.json META.yml Makefile.PL README dist.ini examples/run_all_tests inc/ExtUtils/HasCompiler.pm inc/OldShareDirFiles.pm lib/Test/JSON/Schema/Acceptance.pm share/CONTRIBUTING.md share/LICENSE share/README.md share/output-test-schema.json share/output-tests/README.md share/output-tests/draft2019-09/content/escape.json share/output-tests/draft2019-09/content/general.json share/output-tests/draft2019-09/content/readOnly.json share/output-tests/draft2019-09/content/type.json share/output-tests/draft2019-09/output-schema.json share/output-tests/draft2020-12/content/escape.json share/output-tests/draft2020-12/content/general.json share/output-tests/draft2020-12/content/readOnly.json share/output-tests/draft2020-12/content/type.json share/output-tests/draft2020-12/output-schema.json share/output-tests/v1/content/general.json share/output-tests/v1/content/readOnly.json share/output-tests/v1/content/type.json share/output-tests/v1/output-schema.json share/remotes/baseUriChange/folderInteger.json share/remotes/baseUriChangeFolder/folderInteger.json share/remotes/baseUriChangeFolderInSubschema/folderInteger.json share/remotes/different-id-ref-string.json share/remotes/draft2019-09/baseUriChange/folderInteger.json share/remotes/draft2019-09/baseUriChangeFolder/folderInteger.json share/remotes/draft2019-09/baseUriChangeFolderInSubschema/folderInteger.json share/remotes/draft2019-09/dependentRequired.json share/remotes/draft2019-09/detached-ref.json share/remotes/draft2019-09/different-id-ref-string.json share/remotes/draft2019-09/extendible-dynamic-ref.json share/remotes/draft2019-09/ignore-prefixItems.json share/remotes/draft2019-09/integer.json share/remotes/draft2019-09/locationIndependentIdentifier.json share/remotes/draft2019-09/metaschema-no-validation.json share/remotes/draft2019-09/metaschema-optional-vocabulary.json share/remotes/draft2019-09/name-defs.json share/remotes/draft2019-09/nested-absolute-ref-to-string.json share/remotes/draft2019-09/nested/foo-ref-string.json share/remotes/draft2019-09/nested/string.json share/remotes/draft2019-09/ref-and-defs.json share/remotes/draft2019-09/subSchemas-defs.json share/remotes/draft2019-09/subSchemas.json share/remotes/draft2019-09/tree.json share/remotes/draft2019-09/urn-ref-string.json share/remotes/draft2020-12/baseUriChange/folderInteger.json share/remotes/draft2020-12/baseUriChangeFolder/folderInteger.json share/remotes/draft2020-12/baseUriChangeFolderInSubschema/folderInteger.json share/remotes/draft2020-12/detached-dynamicref.json share/remotes/draft2020-12/detached-ref.json share/remotes/draft2020-12/different-id-ref-string.json share/remotes/draft2020-12/extendible-dynamic-ref.json share/remotes/draft2020-12/format-assertion-false.json share/remotes/draft2020-12/format-assertion-true.json share/remotes/draft2020-12/integer.json share/remotes/draft2020-12/locationIndependentIdentifier.json share/remotes/draft2020-12/metaschema-no-validation.json share/remotes/draft2020-12/metaschema-optional-vocabulary.json share/remotes/draft2020-12/name-defs.json share/remotes/draft2020-12/nested-absolute-ref-to-string.json share/remotes/draft2020-12/nested/foo-ref-string.json share/remotes/draft2020-12/nested/string.json share/remotes/draft2020-12/prefixItems.json share/remotes/draft2020-12/ref-and-defs.json share/remotes/draft2020-12/subSchemas-defs.json share/remotes/draft2020-12/subSchemas.json share/remotes/draft2020-12/tree.json share/remotes/draft2020-12/urn-ref-string.json share/remotes/draft3/subSchemas.json share/remotes/draft4/locationIndependentIdentifier.json share/remotes/draft4/name.json share/remotes/draft4/subSchemas.json share/remotes/draft6/detached-ref.json share/remotes/draft6/locationIndependentIdentifier.json share/remotes/draft6/name.json share/remotes/draft6/ref-and-definitions.json share/remotes/draft6/subSchemas.json share/remotes/draft7/detached-ref.json share/remotes/draft7/ignore-dependentRequired.json share/remotes/draft7/locationIndependentIdentifier.json share/remotes/draft7/name.json share/remotes/draft7/ref-and-definitions.json share/remotes/draft7/subSchemas.json share/remotes/extendible-dynamic-ref.json share/remotes/folder/folderInteger.json share/remotes/integer.json share/remotes/locationIndependentIdentifier.json share/remotes/locationIndependentIdentifierDraft4.json share/remotes/locationIndependentIdentifierPre2019.json share/remotes/name-defs.json share/remotes/name.json share/remotes/nested-absolute-ref-to-string.json share/remotes/nested/foo-ref-string.json share/remotes/nested/string.json share/remotes/ref-and-definitions.json share/remotes/ref-and-defs.json share/remotes/subSchemas-defs.json share/remotes/subSchemas.json share/remotes/tree.json share/remotes/urn-ref-string.json share/remotes/v1/baseUriChange/folderInteger.json share/remotes/v1/baseUriChangeFolder/folderInteger.json share/remotes/v1/baseUriChangeFolderInSubschema/folderInteger.json share/remotes/v1/detached-dynamicref.json share/remotes/v1/detached-ref.json share/remotes/v1/different-id-ref-string.json share/remotes/v1/extendible-dynamic-ref.json share/remotes/v1/integer.json share/remotes/v1/locationIndependentIdentifier.json share/remotes/v1/name-defs.json share/remotes/v1/nested-absolute-ref-to-string.json share/remotes/v1/nested/foo-ref-string.json share/remotes/v1/nested/string.json share/remotes/v1/ref-and-defs.json share/remotes/v1/subSchemas.json share/remotes/v1/tree.json share/remotes/v1/urn-ref-string.json share/submodule_status share/test-schema.json share/tests/draft2019-09/additionalItems.json share/tests/draft2019-09/additionalProperties.json share/tests/draft2019-09/allOf.json share/tests/draft2019-09/anchor.json share/tests/draft2019-09/anyOf.json share/tests/draft2019-09/boolean_schema.json share/tests/draft2019-09/const.json share/tests/draft2019-09/contains.json share/tests/draft2019-09/content.json share/tests/draft2019-09/default.json share/tests/draft2019-09/defs.json share/tests/draft2019-09/dependentRequired.json share/tests/draft2019-09/dependentSchemas.json share/tests/draft2019-09/enum.json share/tests/draft2019-09/exclusiveMaximum.json share/tests/draft2019-09/exclusiveMinimum.json share/tests/draft2019-09/format.json share/tests/draft2019-09/id.json share/tests/draft2019-09/if-then-else.json share/tests/draft2019-09/infinite-loop-detection.json share/tests/draft2019-09/items.json share/tests/draft2019-09/maxContains.json share/tests/draft2019-09/maxItems.json share/tests/draft2019-09/maxLength.json share/tests/draft2019-09/maxProperties.json share/tests/draft2019-09/maximum.json share/tests/draft2019-09/minContains.json share/tests/draft2019-09/minItems.json share/tests/draft2019-09/minLength.json share/tests/draft2019-09/minProperties.json share/tests/draft2019-09/minimum.json share/tests/draft2019-09/multipleOf.json share/tests/draft2019-09/not.json share/tests/draft2019-09/oneOf.json share/tests/draft2019-09/optional/anchor.json share/tests/draft2019-09/optional/bignum.json share/tests/draft2019-09/optional/content.json share/tests/draft2019-09/optional/cross-draft.json share/tests/draft2019-09/optional/dependencies-compatibility.json share/tests/draft2019-09/optional/ecmascript-regex.json share/tests/draft2019-09/optional/float-overflow.json share/tests/draft2019-09/optional/format/date-time.json share/tests/draft2019-09/optional/format/date.json share/tests/draft2019-09/optional/format/duration.json share/tests/draft2019-09/optional/format/ecmascript-regex.json share/tests/draft2019-09/optional/format/email.json share/tests/draft2019-09/optional/format/hostname.json share/tests/draft2019-09/optional/format/idn-email.json share/tests/draft2019-09/optional/format/idn-hostname.json share/tests/draft2019-09/optional/format/ipv4.json share/tests/draft2019-09/optional/format/ipv6.json share/tests/draft2019-09/optional/format/iri-reference.json share/tests/draft2019-09/optional/format/iri.json share/tests/draft2019-09/optional/format/json-pointer.json share/tests/draft2019-09/optional/format/regex.json share/tests/draft2019-09/optional/format/relative-json-pointer.json share/tests/draft2019-09/optional/format/time.json share/tests/draft2019-09/optional/format/unknown.json share/tests/draft2019-09/optional/format/uri-reference.json share/tests/draft2019-09/optional/format/uri-template.json share/tests/draft2019-09/optional/format/uri.json share/tests/draft2019-09/optional/format/uuid.json share/tests/draft2019-09/optional/id.json share/tests/draft2019-09/optional/no-schema.json share/tests/draft2019-09/optional/non-bmp-regex.json share/tests/draft2019-09/optional/refOfUnknownKeyword.json share/tests/draft2019-09/optional/unicode.json share/tests/draft2019-09/optional/unknownKeyword.json share/tests/draft2019-09/pattern.json share/tests/draft2019-09/patternProperties.json share/tests/draft2019-09/properties.json share/tests/draft2019-09/propertyNames.json share/tests/draft2019-09/recursiveRef.json share/tests/draft2019-09/ref.json share/tests/draft2019-09/refRemote.json share/tests/draft2019-09/required.json share/tests/draft2019-09/type.json share/tests/draft2019-09/unevaluatedItems.json share/tests/draft2019-09/unevaluatedProperties.json share/tests/draft2019-09/uniqueItems.json share/tests/draft2019-09/unknownKeyword.json share/tests/draft2019-09/vocabulary.json share/tests/draft2020-12/additionalProperties.json share/tests/draft2020-12/allOf.json share/tests/draft2020-12/anchor.json share/tests/draft2020-12/anyOf.json share/tests/draft2020-12/boolean_schema.json share/tests/draft2020-12/const.json share/tests/draft2020-12/contains.json share/tests/draft2020-12/content.json share/tests/draft2020-12/default.json share/tests/draft2020-12/defs.json share/tests/draft2020-12/dependentRequired.json share/tests/draft2020-12/dependentSchemas.json share/tests/draft2020-12/dynamicRef.json share/tests/draft2020-12/enum.json share/tests/draft2020-12/exclusiveMaximum.json share/tests/draft2020-12/exclusiveMinimum.json share/tests/draft2020-12/format.json share/tests/draft2020-12/id.json share/tests/draft2020-12/if-then-else.json share/tests/draft2020-12/infinite-loop-detection.json share/tests/draft2020-12/items.json share/tests/draft2020-12/maxContains.json share/tests/draft2020-12/maxItems.json share/tests/draft2020-12/maxLength.json share/tests/draft2020-12/maxProperties.json share/tests/draft2020-12/maximum.json share/tests/draft2020-12/minContains.json share/tests/draft2020-12/minItems.json share/tests/draft2020-12/minLength.json share/tests/draft2020-12/minProperties.json share/tests/draft2020-12/minimum.json share/tests/draft2020-12/multipleOf.json share/tests/draft2020-12/not.json share/tests/draft2020-12/oneOf.json share/tests/draft2020-12/optional/anchor.json share/tests/draft2020-12/optional/bignum.json share/tests/draft2020-12/optional/cross-draft.json share/tests/draft2020-12/optional/dependencies-compatibility.json share/tests/draft2020-12/optional/dynamicRef.json share/tests/draft2020-12/optional/ecmascript-regex.json share/tests/draft2020-12/optional/float-overflow.json share/tests/draft2020-12/optional/format-assertion.json share/tests/draft2020-12/optional/format/date-time.json share/tests/draft2020-12/optional/format/date.json share/tests/draft2020-12/optional/format/duration.json share/tests/draft2020-12/optional/format/ecmascript-regex.json share/tests/draft2020-12/optional/format/email.json share/tests/draft2020-12/optional/format/hostname.json share/tests/draft2020-12/optional/format/idn-email.json share/tests/draft2020-12/optional/format/idn-hostname.json share/tests/draft2020-12/optional/format/ipv4.json share/tests/draft2020-12/optional/format/ipv6.json share/tests/draft2020-12/optional/format/iri-reference.json share/tests/draft2020-12/optional/format/iri.json share/tests/draft2020-12/optional/format/json-pointer.json share/tests/draft2020-12/optional/format/regex.json share/tests/draft2020-12/optional/format/relative-json-pointer.json share/tests/draft2020-12/optional/format/time.json share/tests/draft2020-12/optional/format/unknown.json share/tests/draft2020-12/optional/format/uri-reference.json share/tests/draft2020-12/optional/format/uri-template.json share/tests/draft2020-12/optional/format/uri.json share/tests/draft2020-12/optional/format/uuid.json share/tests/draft2020-12/optional/id.json share/tests/draft2020-12/optional/no-schema.json share/tests/draft2020-12/optional/non-bmp-regex.json share/tests/draft2020-12/optional/refOfUnknownKeyword.json share/tests/draft2020-12/optional/unicode.json share/tests/draft2020-12/optional/unknownKeyword.json share/tests/draft2020-12/pattern.json share/tests/draft2020-12/patternProperties.json share/tests/draft2020-12/prefixItems.json share/tests/draft2020-12/properties.json share/tests/draft2020-12/propertyNames.json share/tests/draft2020-12/ref.json share/tests/draft2020-12/refRemote.json share/tests/draft2020-12/required.json share/tests/draft2020-12/type.json share/tests/draft2020-12/unevaluatedItems.json share/tests/draft2020-12/unevaluatedProperties.json share/tests/draft2020-12/uniqueItems.json share/tests/draft2020-12/unknownKeyword.json share/tests/draft2020-12/vocabulary.json share/tests/draft3/additionalItems.json share/tests/draft3/additionalProperties.json share/tests/draft3/default.json share/tests/draft3/dependencies.json share/tests/draft3/disallow.json share/tests/draft3/divisibleBy.json share/tests/draft3/enum.json share/tests/draft3/extends.json share/tests/draft3/format.json share/tests/draft3/infinite-loop-detection.json share/tests/draft3/items.json share/tests/draft3/maxItems.json share/tests/draft3/maxLength.json share/tests/draft3/maximum.json share/tests/draft3/minItems.json share/tests/draft3/minLength.json share/tests/draft3/minimum.json share/tests/draft3/optional/bignum.json share/tests/draft3/optional/ecmascript-regex.json share/tests/draft3/optional/format.json share/tests/draft3/optional/format/color.json share/tests/draft3/optional/format/date-time.json share/tests/draft3/optional/format/date.json share/tests/draft3/optional/format/ecmascript-regex.json share/tests/draft3/optional/format/email.json share/tests/draft3/optional/format/host-name.json share/tests/draft3/optional/format/ip-address.json share/tests/draft3/optional/format/ipv6.json share/tests/draft3/optional/format/regex.json share/tests/draft3/optional/format/time.json share/tests/draft3/optional/format/uri.json share/tests/draft3/optional/non-bmp-regex.json share/tests/draft3/optional/zeroTerminatedFloats.json share/tests/draft3/pattern.json share/tests/draft3/patternProperties.json share/tests/draft3/properties.json share/tests/draft3/ref.json share/tests/draft3/refRemote.json share/tests/draft3/required.json share/tests/draft3/type.json share/tests/draft3/uniqueItems.json share/tests/draft4/additionalItems.json share/tests/draft4/additionalProperties.json share/tests/draft4/allOf.json share/tests/draft4/anyOf.json share/tests/draft4/default.json share/tests/draft4/definitions.json share/tests/draft4/dependencies.json share/tests/draft4/enum.json share/tests/draft4/format.json share/tests/draft4/id.json share/tests/draft4/infinite-loop-detection.json share/tests/draft4/items.json share/tests/draft4/maxItems.json share/tests/draft4/maxLength.json share/tests/draft4/maxProperties.json share/tests/draft4/maximum.json share/tests/draft4/minItems.json share/tests/draft4/minLength.json share/tests/draft4/minProperties.json share/tests/draft4/minimum.json share/tests/draft4/multipleOf.json share/tests/draft4/not.json share/tests/draft4/oneOf.json share/tests/draft4/optional/bignum.json share/tests/draft4/optional/ecmascript-regex.json share/tests/draft4/optional/float-overflow.json share/tests/draft4/optional/format.json share/tests/draft4/optional/format/date-time.json share/tests/draft4/optional/format/email.json share/tests/draft4/optional/format/hostname.json share/tests/draft4/optional/format/ipv4.json share/tests/draft4/optional/format/ipv6.json share/tests/draft4/optional/format/unknown.json share/tests/draft4/optional/format/uri.json share/tests/draft4/optional/id.json share/tests/draft4/optional/non-bmp-regex.json share/tests/draft4/optional/unicode.json share/tests/draft4/optional/zeroTerminatedFloats.json share/tests/draft4/pattern.json share/tests/draft4/patternProperties.json share/tests/draft4/properties.json share/tests/draft4/ref.json share/tests/draft4/refRemote.json share/tests/draft4/required.json share/tests/draft4/type.json share/tests/draft4/uniqueItems.json share/tests/draft6/additionalItems.json share/tests/draft6/additionalProperties.json share/tests/draft6/allOf.json share/tests/draft6/anyOf.json share/tests/draft6/boolean_schema.json share/tests/draft6/const.json share/tests/draft6/contains.json share/tests/draft6/default.json share/tests/draft6/definitions.json share/tests/draft6/dependencies.json share/tests/draft6/enum.json share/tests/draft6/exclusiveMaximum.json share/tests/draft6/exclusiveMinimum.json share/tests/draft6/format.json share/tests/draft6/id.json share/tests/draft6/infinite-loop-detection.json share/tests/draft6/items.json share/tests/draft6/maxItems.json share/tests/draft6/maxLength.json share/tests/draft6/maxProperties.json share/tests/draft6/maximum.json share/tests/draft6/minItems.json share/tests/draft6/minLength.json share/tests/draft6/minProperties.json share/tests/draft6/minimum.json share/tests/draft6/multipleOf.json share/tests/draft6/not.json share/tests/draft6/oneOf.json share/tests/draft6/optional/bignum.json share/tests/draft6/optional/ecmascript-regex.json share/tests/draft6/optional/float-overflow.json share/tests/draft6/optional/format.json share/tests/draft6/optional/format/date-time.json share/tests/draft6/optional/format/email.json share/tests/draft6/optional/format/hostname.json share/tests/draft6/optional/format/ipv4.json share/tests/draft6/optional/format/ipv6.json share/tests/draft6/optional/format/json-pointer.json share/tests/draft6/optional/format/unknown.json share/tests/draft6/optional/format/uri-reference.json share/tests/draft6/optional/format/uri-template.json share/tests/draft6/optional/format/uri.json share/tests/draft6/optional/id.json share/tests/draft6/optional/non-bmp-regex.json share/tests/draft6/optional/unicode.json share/tests/draft6/optional/unknownKeyword.json share/tests/draft6/pattern.json share/tests/draft6/patternProperties.json share/tests/draft6/properties.json share/tests/draft6/propertyNames.json share/tests/draft6/ref.json share/tests/draft6/refRemote.json share/tests/draft6/required.json share/tests/draft6/type.json share/tests/draft6/uniqueItems.json share/tests/draft6/unknownKeyword.json share/tests/draft7/additionalItems.json share/tests/draft7/additionalProperties.json share/tests/draft7/allOf.json share/tests/draft7/anyOf.json share/tests/draft7/boolean_schema.json share/tests/draft7/const.json share/tests/draft7/contains.json share/tests/draft7/default.json share/tests/draft7/definitions.json share/tests/draft7/dependencies.json share/tests/draft7/enum.json share/tests/draft7/exclusiveMaximum.json share/tests/draft7/exclusiveMinimum.json share/tests/draft7/format.json share/tests/draft7/id.json share/tests/draft7/if-then-else.json share/tests/draft7/infinite-loop-detection.json share/tests/draft7/items.json share/tests/draft7/maxItems.json share/tests/draft7/maxLength.json share/tests/draft7/maxProperties.json share/tests/draft7/maximum.json share/tests/draft7/minItems.json share/tests/draft7/minLength.json share/tests/draft7/minProperties.json share/tests/draft7/minimum.json share/tests/draft7/multipleOf.json share/tests/draft7/not.json share/tests/draft7/oneOf.json share/tests/draft7/optional/bignum.json share/tests/draft7/optional/content.json share/tests/draft7/optional/cross-draft.json share/tests/draft7/optional/ecmascript-regex.json share/tests/draft7/optional/float-overflow.json share/tests/draft7/optional/format/date-time.json share/tests/draft7/optional/format/date.json share/tests/draft7/optional/format/ecmascript-regex.json share/tests/draft7/optional/format/email.json share/tests/draft7/optional/format/hostname.json share/tests/draft7/optional/format/idn-email.json share/tests/draft7/optional/format/idn-hostname.json share/tests/draft7/optional/format/ipv4.json share/tests/draft7/optional/format/ipv6.json share/tests/draft7/optional/format/iri-reference.json share/tests/draft7/optional/format/iri.json share/tests/draft7/optional/format/json-pointer.json share/tests/draft7/optional/format/regex.json share/tests/draft7/optional/format/relative-json-pointer.json share/tests/draft7/optional/format/time.json share/tests/draft7/optional/format/unknown.json share/tests/draft7/optional/format/uri-reference.json share/tests/draft7/optional/format/uri-template.json share/tests/draft7/optional/format/uri.json share/tests/draft7/optional/id.json share/tests/draft7/optional/non-bmp-regex.json share/tests/draft7/optional/unicode.json share/tests/draft7/optional/unknownKeyword.json share/tests/draft7/pattern.json share/tests/draft7/patternProperties.json share/tests/draft7/properties.json share/tests/draft7/propertyNames.json share/tests/draft7/ref.json share/tests/draft7/refRemote.json share/tests/draft7/required.json share/tests/draft7/type.json share/tests/draft7/uniqueItems.json share/tests/draft7/unknownKeyword.json share/tests/v1/additionalProperties.json share/tests/v1/allOf.json share/tests/v1/anchor.json share/tests/v1/anyOf.json share/tests/v1/boolean_schema.json share/tests/v1/const.json share/tests/v1/contains.json share/tests/v1/content.json share/tests/v1/default.json share/tests/v1/defs.json share/tests/v1/dependentRequired.json share/tests/v1/dependentSchemas.json share/tests/v1/dynamicRef.json share/tests/v1/enum.json share/tests/v1/exclusiveMaximum.json share/tests/v1/exclusiveMinimum.json share/tests/v1/format/date-time.json share/tests/v1/format/date.json share/tests/v1/format/duration.json share/tests/v1/format/ecmascript-regex.json share/tests/v1/format/email.json share/tests/v1/format/hostname.json share/tests/v1/format/idn-email.json share/tests/v1/format/idn-hostname.json share/tests/v1/format/ipv4.json share/tests/v1/format/ipv6.json share/tests/v1/format/iri-reference.json share/tests/v1/format/iri.json share/tests/v1/format/json-pointer.json share/tests/v1/format/regex.json share/tests/v1/format/relative-json-pointer.json share/tests/v1/format/time.json share/tests/v1/format/uri-reference.json share/tests/v1/format/uri-template.json share/tests/v1/format/uri.json share/tests/v1/format/uuid.json share/tests/v1/if-then-else.json share/tests/v1/infinite-loop-detection.json share/tests/v1/items.json share/tests/v1/maxContains.json share/tests/v1/maxItems.json share/tests/v1/maxLength.json share/tests/v1/maxProperties.json share/tests/v1/maximum.json share/tests/v1/minContains.json share/tests/v1/minItems.json share/tests/v1/minLength.json share/tests/v1/minProperties.json share/tests/v1/minimum.json share/tests/v1/multipleOf.json share/tests/v1/not.json share/tests/v1/oneOf.json share/tests/v1/optional/anchor.json share/tests/v1/optional/bignum.json share/tests/v1/optional/dependencies-compatibility.json share/tests/v1/optional/dynamicRef.json share/tests/v1/optional/ecmascript-regex.json share/tests/v1/optional/float-overflow.json share/tests/v1/optional/format-annotation.json share/tests/v1/optional/id.json share/tests/v1/optional/non-bmp-regex.json share/tests/v1/optional/refOfUnknownKeyword.json share/tests/v1/optional/unknownKeyword.json share/tests/v1/pattern.json share/tests/v1/patternProperties.json share/tests/v1/prefixItems.json share/tests/v1/properties.json share/tests/v1/propertyDependencies.json share/tests/v1/propertyNames.json share/tests/v1/proposals/README.md share/tests/v1/proposals/propertyDependencies/additionalProperties.json share/tests/v1/proposals/propertyDependencies/dynamicRef.json share/tests/v1/proposals/propertyDependencies/propertyDependencies.json share/tests/v1/proposals/propertyDependencies/unevaluatedProperties.json share/tests/v1/ref.json share/tests/v1/refRemote.json share/tests/v1/required.json share/tests/v1/type.json share/tests/v1/unevaluatedItems.json share/tests/v1/unevaluatedProperties.json share/tests/v1/uniqueItems.json t/00-report-prereqs.dd t/00-report-prereqs.t t/01-basic.t t/02-constructor.t t/03-validate_data.t t/04-validate_json_string.t t/05-test-descriptions.t t/06-subset-of-tests.t t/07-skip-tests-deprecated.t t/08-todo-tests.t t/09-unicode.t t/10-exception.t t/11-additional-resources.t t/12-include-optional.t t/13-empty-test-dir.t t/14-add-resource.t t/15-mutation.t t/16-skip_dir.t t/99-sanity.t t/lib/Helper.pm t/lib/SchemaParser.pm t/tests/add_resource/foo.json t/tests/add_resource/remotes/draft2019-09/remote4.json t/tests/add_resource/remotes/draft2020-12/remote3.json t/tests/add_resource/remotes/draft6/remote5.json t/tests/add_resource/remotes/remote1.json t/tests/add_resource/remotes/subfolder/remote2.json t/tests/bad/invalid-schema.json t/tests/empty/keep t/tests/include_optional/extra/foo.json t/tests/include_optional/foo.json t/tests/include_optional/optional/alpha.json t/tests/include_optional/optional/beta.json t/tests/include_optional/zulu.json t/tests/mutation/hash.json t/tests/simple-booleans/bar.json t/tests/simple-booleans/foo.json t/tests/skip_dir/main.json t/tests/skip_dir/optional/alpha/test.json t/tests/skip_dir/optional/beta/test.json t/tests/skip_dir/optional/betadyne/test.json t/tests/skip_dir/optional/gamma/test.json t/tests/subset/bar.json t/tests/subset/baz.json t/tests/subset/foo.json t/tests/unicode/unicode.json update-share weaver.ini xt/author/00-compile.t xt/author/clean-namespaces.t xt/author/distmeta.t xt/author/eol.t xt/author/kwalitee.t xt/author/live-data-sanity.t xt/author/minimum-version.t xt/author/mojibake.t xt/author/no-tabs.t xt/author/pod-coverage.t xt/author/pod-spell.t xt/author/pod-syntax.t xt/author/portability.t xt/release/changes_has_content.t xt/release/cpan-changes.t META.json100644000766000024 14573215240201330 17575 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038{ "abstract" : "Acceptance testing for JSON-Schema based validators", "author" : [ "Ben Hutton (@relequestual) " ], "dynamic_config" : 1, "generated_by" : "Dist::Zilla version 6.037, CPAN::Meta::Converter version 2.150013", "license" : [ "mit" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Test-JSON-Schema-Acceptance", "no_index" : { "directory" : [ "examples", "inc", "share", "t", "xt" ] }, "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0", "File::ShareDir::Install" : "0.06", "Text::ParseWords" : "0", "perl" : "5.020" } }, "develop" : { "recommends" : { "Dist::Zilla::PluginBundle::Author::ETHER" : "0.174", "Dist::Zilla::PluginBundle::Git::VersionManager" : "0.007" }, "requires" : { "Encode" : "0", "ExtUtils::HasCompiler" : "0.014", "IO::Handle" : "0", "IPC::Open3" : "0", "Pod::Wordlist" : "0", "Test2::V0" : "0", "Test2::Warnings" : "0", "Test::CPAN::Changes" : "0.19", "Test::CPAN::Meta" : "0", "Test::CleanNamespaces" : "0.15", "Test::EOL" : "0", "Test::File::ShareDir" : "0", "Test::Kwalitee" : "1.21", "Test::MinimumVersion" : "0", "Test::Mojibake" : "0", "Test::NoTabs" : "0", "Test::Pod" : "1.41", "Test::Pod::Coverage::TrustMe" : "0.002001", "Test::Portability::Files" : "0", "Test::Spelling" : "0.17" } }, "runtime" : { "requires" : { "Feature::Compat::Try" : "0", "File::ShareDir" : "0", "Git::Wrapper" : "0", "JSON::PP" : "4.11", "List::Util" : "1.33", "Mojolicious" : "7.87", "Moo" : "0", "MooX::TypeTiny" : "0.002002", "Path::Tiny" : "0.069", "Test2::Todo" : "0", "Types::Common::Numeric" : "0", "Types::Standard" : "1.016003", "autovivification" : "0", "experimental" : "0", "if" : "0", "namespace::clean" : "0", "perl" : "5.020", "stable" : "0.031", "strictures" : "2" }, "suggests" : { "Class::XSAccessor" : "0", "Cpanel::JSON::XS" : "0", "Type::Tiny::XS" : "0" } }, "test" : { "recommends" : { "CPAN::Meta" : "2.120900" }, "requires" : { "ExtUtils::MakeMaker" : "0", "JSON::PP" : "4.11", "Test2::Suite" : "0.000131", "Test2::Tools::Exception" : "0", "Test2::V0" : "0", "Test2::Warnings" : "0", "Test::Deep" : "0", "Test::File::ShareDir" : "0", "Test::Simple" : "1.302176", "builtin::compat" : "0", "perl" : "5.020" } }, "x_Dist_Zilla" : { "requires" : { "Dist::Zilla" : "5", "Dist::Zilla::Plugin::Authority" : "1.009", "Dist::Zilla::Plugin::AutoMetaResources" : "0", "Dist::Zilla::Plugin::AutoPrereqs" : "5.038", "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional" : "0.004", "Dist::Zilla::Plugin::CheckIssues" : "0", "Dist::Zilla::Plugin::CheckMetaResources" : "0", "Dist::Zilla::Plugin::CheckPrereqsIndexed" : "0.019", "Dist::Zilla::Plugin::CheckSelfDependency" : "0", "Dist::Zilla::Plugin::CheckStrictVersion" : "0", "Dist::Zilla::Plugin::ConfirmRelease" : "0", "Dist::Zilla::Plugin::CopyFilesFromRelease" : "0", "Dist::Zilla::Plugin::DynamicPrereqs" : "0.040", "Dist::Zilla::Plugin::EnsureLatestPerl" : "0", "Dist::Zilla::Plugin::FileFinder::ByName" : "0", "Dist::Zilla::Plugin::GenerateFile" : "0", "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : "0", "Dist::Zilla::Plugin::Git::Check" : "0", "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch" : "0.004", "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts" : "0", "Dist::Zilla::Plugin::Git::Commit" : "2.020", "Dist::Zilla::Plugin::Git::Contributors" : "0.029", "Dist::Zilla::Plugin::Git::Describe" : "0.004", "Dist::Zilla::Plugin::Git::GatherDir" : "2.016", "Dist::Zilla::Plugin::Git::Push" : "0", "Dist::Zilla::Plugin::Git::Remote::Check" : "0", "Dist::Zilla::Plugin::Git::Tag" : "0", "Dist::Zilla::Plugin::GitHub::Update" : "0.40", "Dist::Zilla::Plugin::GithubMeta" : "0.54", "Dist::Zilla::Plugin::InstallGuide" : "1.200005", "Dist::Zilla::Plugin::Keywords" : "0.004", "Dist::Zilla::Plugin::License" : "5.038", "Dist::Zilla::Plugin::MakeMaker" : "0", "Dist::Zilla::Plugin::Manifest" : "0", "Dist::Zilla::Plugin::MetaConfig" : "0", "Dist::Zilla::Plugin::MetaJSON" : "0", "Dist::Zilla::Plugin::MetaNoIndex" : "0", "Dist::Zilla::Plugin::MetaProvides::Package" : "1.15000002", "Dist::Zilla::Plugin::MetaTests" : "0", "Dist::Zilla::Plugin::MetaYAML" : "0", "Dist::Zilla::Plugin::MinimumPerl" : "1.006", "Dist::Zilla::Plugin::MojibakeTests" : "0.8", "Dist::Zilla::Plugin::NextRelease" : "5.033", "Dist::Zilla::Plugin::PodSyntaxTests" : "5.040", "Dist::Zilla::Plugin::PodWeaver" : "4.008", "Dist::Zilla::Plugin::Prereqs" : "0", "Dist::Zilla::Plugin::Prereqs::AuthorDeps" : "0.006", "Dist::Zilla::Plugin::PromptIfStale" : "0", "Dist::Zilla::Plugin::Readme" : "0", "Dist::Zilla::Plugin::ReadmeAnyFromPod" : "0.142180", "Dist::Zilla::Plugin::RemovePrereqs" : "0", "Dist::Zilla::Plugin::RewriteVersion::Transitional" : "0.006", "Dist::Zilla::Plugin::Run::AfterBuild" : "0.041", "Dist::Zilla::Plugin::Run::AfterRelease" : "0.038", "Dist::Zilla::Plugin::Run::BeforeBuild" : "0", "Dist::Zilla::Plugin::Run::BeforeRelease" : "0.050", "Dist::Zilla::Plugin::RunExtraTests" : "0.024", "Dist::Zilla::Plugin::ShareDir" : "0", "Dist::Zilla::Plugin::StaticInstall" : "0.005", "Dist::Zilla::Plugin::Test::CPAN::Changes" : "0.012", "Dist::Zilla::Plugin::Test::ChangesHasContent" : "0", "Dist::Zilla::Plugin::Test::CleanNamespaces" : "0.006", "Dist::Zilla::Plugin::Test::Compile" : "2.039", "Dist::Zilla::Plugin::Test::EOL" : "0.17", "Dist::Zilla::Plugin::Test::Kwalitee" : "2.10", "Dist::Zilla::Plugin::Test::MinimumVersion" : "2.000010", "Dist::Zilla::Plugin::Test::NoTabs" : "0.08", "Dist::Zilla::Plugin::Test::Pod::Coverage::TrustMe" : "0", "Dist::Zilla::Plugin::Test::PodSpelling" : "2.006003", "Dist::Zilla::Plugin::Test::Portability" : "2.000007", "Dist::Zilla::Plugin::Test::ReportPrereqs" : "0.022", "Dist::Zilla::Plugin::TestRelease" : "0", "Dist::Zilla::Plugin::UploadToCPAN" : "0", "Dist::Zilla::Plugin::UseUnsafeInc" : "0", "Dist::Zilla::PluginBundle::Author::ETHER" : "0.174", "Dist::Zilla::PluginBundle::Git::VersionManager" : "0.007", "Software::License::MIT" : "0" } } }, "provides" : { "Test::JSON::Schema::Acceptance" : { "file" : "lib/Test/JSON/Schema/Acceptance.pm", "version" : "1.038" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/karenetheridge/Test-JSON-Schema-Acceptance/issues" }, "homepage" : "https://github.com/karenetheridge/Test-JSON-Schema-Acceptance", "repository" : { "type" : "git", "url" : "https://github.com/karenetheridge/Test-JSON-Schema-Acceptance.git", "web" : "https://github.com/karenetheridge/Test-JSON-Schema-Acceptance" } }, "version" : "1.038", "x_Dist_Zilla" : { "perl" : { "version" : "5.045001" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Run::BeforeBuild", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "fatal_errors" : 1, "quiet" : 1, "run" : [ "git submodule update --init --recursive", "git submodule update --recursive" ], "version" : "0.050" } }, "name" : "Run::BeforeBuild", "version" : "0.050" }, { "class" : "Dist::Zilla::Plugin::Run::BeforeRelease", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "fatal_errors" : 1, "quiet" : 1, "run" : [ "git submodule update --remote", "if [[ -n $(git status --untracked --porcelain share) ]]; then bash -c \"echo -e '\\033[1;33m!!! submodule has changed! run './update-share' to commit updates to share/\\033[0m' >&2\"; fi" ], "version" : "0.050" } }, "name" : "Run::BeforeRelease", "version" : "0.050" }, { "class" : "Dist::Zilla::Plugin::Run::AfterRelease", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "eval" : [ "chomp(my $status = `git submodule status`);", "my ($new_sha) = split(' ', $status, 2);", "$new_sha =~ s/^\\+//;", "`pushd ../JSON-Schema-Test-Suite; git tag -a -m'%n-%v' '%n-%v' $new_sha`" ], "fatal_errors" : 1, "quiet" : 1, "version" : "0.050" } }, "name" : "Run::AfterRelease", "version" : "0.050" }, { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [ "index.js", "package.json", "tests/latest", "tox.ini" ], "exclude_match" : [ "^annotations/", "^bin/" ], "include_dotfiles" : 0, "prefix" : "share", "prune_directory" : [], "root" : "share" }, "Dist::Zilla::Plugin::Git::GatherDir" : { "include_untracked" : 0 } }, "name" : "Gather sharedir", "version" : "2.052" }, { "class" : "inc::OldShareDirFiles", "name" : "=inc::OldShareDirFiles", "version" : null }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "develop", "type" : "recommends" } }, "name" : "@Author::ETHER/pluginbundle version", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 0, "check_all_prereqs" : 0, "modules" : [ "Dist::Zilla::PluginBundle::Author::ETHER" ], "phase" : "build", "run_under_travis" : 0, "skip" : [] } }, "name" : "@Author::ETHER/stale modules, build", "version" : "0.060" }, { "class" : "Dist::Zilla::Plugin::FileFinder::ByName", "name" : "@Author::ETHER/Examples", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [ "CONTRIBUTING", "INSTALL", "LICENCE", "README.pod", "TODO", "share" ], "exclude_match" : [], "include_dotfiles" : 0, "prefix" : "", "prune_directory" : [], "root" : "." }, "Dist::Zilla::Plugin::Git::GatherDir" : { "include_untracked" : 0 } }, "name" : "@Author::ETHER/Git::GatherDir", "version" : "2.052" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@Author::ETHER/MetaYAML", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@Author::ETHER/MetaJSON", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@Author::ETHER/Readme", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@Author::ETHER/Manifest", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@Author::ETHER/License", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::GenerateFile::FromShareDir", "config" : { "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : { "destination_filename" : "CONTRIBUTING", "dist" : "Dist-Zilla-PluginBundle-Author-ETHER", "encoding" : "UTF-8", "has_xs" : 0, "location" : "build", "source_filename" : "CONTRIBUTING" }, "Dist::Zilla::Role::RepoFileInjector" : { "allow_overwrite" : 1, "repo_root" : ".", "version" : "0.009" } }, "name" : "@Author::ETHER/generate CONTRIBUTING", "version" : "0.016" }, { "class" : "Dist::Zilla::Plugin::InstallGuide", "config" : { "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000039", "version" : "0.006" } }, "name" : "@Author::ETHER/InstallGuide", "version" : "1.200014" }, { "class" : "Dist::Zilla::Plugin::Test::Compile", "config" : { "Dist::Zilla::Plugin::Test::Compile" : { "bail_out_on_fail" : 1, "fail_on_warning" : "author", "fake_home" : 0, "filename" : "xt/author/00-compile.t", "module_finder" : [ ":InstallModules" ], "needs_display" : 0, "phase" : "develop", "script_finder" : [ ":PerlExecFiles", "@Author::ETHER/Examples" ], "skips" : [], "switch" : [] } }, "name" : "@Author::ETHER/Test::Compile", "version" : "2.059" }, { "class" : "Dist::Zilla::Plugin::Test::NoTabs", "config" : { "Dist::Zilla::Plugin::Test::NoTabs" : { "filename" : "xt/author/no-tabs.t", "finder" : [ ":InstallModules", ":ExecFiles", "@Author::ETHER/Examples", ":TestFiles", ":ExtraTestFiles" ] } }, "name" : "@Author::ETHER/Test::NoTabs", "version" : "0.15" }, { "class" : "Dist::Zilla::Plugin::Test::EOL", "config" : { "Dist::Zilla::Plugin::Test::EOL" : { "filename" : "xt/author/eol.t", "finder" : [ ":ExecFiles", ":ExtraTestFiles", ":InstallModules", ":TestFiles", "@Author::ETHER/Examples" ], "trailing_whitespace" : 1 } }, "name" : "@Author::ETHER/Test::EOL", "version" : "0.19" }, { "class" : "Dist::Zilla::Plugin::MetaTests", "name" : "@Author::ETHER/MetaTests", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes", "config" : { "Dist::Zilla::Plugin::Test::CPAN::Changes" : { "changelog" : "Changes", "filename" : "xt/release/cpan-changes.t" } }, "name" : "@Author::ETHER/Test::CPAN::Changes", "version" : "0.013" }, { "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent", "name" : "@Author::ETHER/Test::ChangesHasContent", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::Test::MinimumVersion", "config" : { "Dist::Zilla::Plugin::Test::MinimumVersion" : { "max_target_perl" : "5.020" } }, "name" : "@Author::ETHER/Test::MinimumVersion", "version" : "2.000011" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@Author::ETHER/PodSyntaxTests", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Test::Pod::Coverage::TrustMe", "config" : { "Dist::Zilla::Plugin::Test::Pod::Coverage::TrustMe" : { "finder" : [ ":InstallModules" ] } }, "name" : "@Author::ETHER/Test::Pod::Coverage::TrustMe", "version" : "v1.0.1" }, { "class" : "Dist::Zilla::Plugin::Test::PodSpelling", "config" : { "Dist::Zilla::Plugin::Test::PodSpelling" : { "directories" : [ "examples", "lib", "script", "t", "xt" ], "spell_cmd" : "", "stopwords" : [ "irc" ], "wordlist" : "Pod::Wordlist" } }, "name" : "@Author::ETHER/Test::PodSpelling", "version" : "2.007006" }, { "class" : "Dist::Zilla::Plugin::Test::Kwalitee", "config" : { "Dist::Zilla::Plugin::Test::Kwalitee" : { "filename" : "xt/author/kwalitee.t", "skiptest" : [] } }, "name" : "@Author::ETHER/Test::Kwalitee", "version" : "2.13" }, { "class" : "Dist::Zilla::Plugin::MojibakeTests", "name" : "@Author::ETHER/MojibakeTests", "version" : "0.8" }, { "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs", "name" : "@Author::ETHER/Test::ReportPrereqs", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::Test::Portability", "config" : { "Dist::Zilla::Plugin::Test::Portability" : { "options" : "" } }, "name" : "@Author::ETHER/Test::Portability", "version" : "2.001003" }, { "class" : "Dist::Zilla::Plugin::Test::CleanNamespaces", "config" : { "Dist::Zilla::Plugin::Test::CleanNamespaces" : { "filename" : "xt/author/clean-namespaces.t", "skips" : [] } }, "name" : "@Author::ETHER/Test::CleanNamespaces", "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::Git::Describe", "name" : "@Author::ETHER/Git::Describe", "version" : "0.008" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "finder" : [ ":InstallModules", ":PerlExecFiles" ], "plugins" : [ { "class" : "Pod::Weaver::Plugin::EnsurePod5", "name" : "@Author::ETHER/EnsurePod5", "version" : "4.020" }, { "class" : "Pod::Weaver::Plugin::H1Nester", "name" : "@Author::ETHER/H1Nester", "version" : "4.020" }, { "class" : "Pod::Weaver::Plugin::SingleEncoding", "name" : "@Author::ETHER/SingleEncoding", "version" : "4.020" }, { "class" : "Pod::Weaver::Plugin::Transformer", "name" : "@Author::ETHER/List", "version" : "4.020" }, { "class" : "Pod::Weaver::Plugin::Transformer", "name" : "@Author::ETHER/Verbatim", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Author::ETHER/header", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Name", "name" : "@Author::ETHER/Name", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "@Author::ETHER/generate VERSION", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Author::ETHER/prelude", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "SYNOPSIS", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "DESCRIPTION", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "OVERVIEW", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "ATTRIBUTES", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "METHODS", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "FUNCTIONS", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "TYPES", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Leftovers", "name" : "@Author::ETHER/Leftovers", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Author::ETHER/postlude", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "@Author::ETHER/generate GIVING THANKS", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "@Author::ETHER/generate SUPPORT", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Authors", "name" : "@Author::ETHER/Authors", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::AllowOverride", "name" : "@Author::ETHER/allow override AUTHOR", "version" : "0.05" }, { "class" : "Pod::Weaver::Section::Contributors", "name" : "@Author::ETHER/Contributors", "version" : "0.009" }, { "class" : "Pod::Weaver::Section::Legal", "name" : "@Author::ETHER/Legal", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Author::ETHER/footer", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::AllowOverride", "name" : "append to SUPPORT", "version" : "0.05" }, { "class" : "Pod::Weaver::Section::AllowOverride", "name" : "OverrideLegal", "version" : "0.05" } ] } }, "name" : "@Author::ETHER/PodWeaver", "version" : "4.010" }, { "class" : "Dist::Zilla::Plugin::GithubMeta", "name" : "@Author::ETHER/GithubMeta", "version" : "0.58" }, { "class" : "Dist::Zilla::Plugin::AutoMetaResources", "name" : "@Author::ETHER/AutoMetaResources", "version" : "1.21" }, { "class" : "Dist::Zilla::Plugin::Authority", "name" : "@Author::ETHER/Authority", "version" : "1.009" }, { "class" : "Dist::Zilla::Plugin::MetaNoIndex", "name" : "@Author::ETHER/MetaNoIndex", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::MetaProvides::Package", "config" : { "Dist::Zilla::Plugin::MetaProvides::Package" : { "finder" : [ ":InstallModules" ], "finder_objects" : [ { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.037" } ], "include_underscores" : 0 }, "Dist::Zilla::Role::MetaProvider::Provider" : { "$Dist::Zilla::Role::MetaProvider::Provider::VERSION" : "2.002004", "inherit_missing" : 0, "inherit_version" : 0, "meta_noindex" : 1 }, "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000039", "version" : "0.006" } }, "name" : "@Author::ETHER/MetaProvides::Package", "version" : "2.004003" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@Author::ETHER/MetaConfig", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Keywords", "config" : { "Dist::Zilla::Plugin::Keywords" : { "keywords" : [] } }, "name" : "@Author::ETHER/Keywords", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::UseUnsafeInc", "config" : { "Dist::Zilla::Plugin::UseUnsafeInc" : { "dot_in_INC" : 0 } }, "name" : "@Author::ETHER/UseUnsafeInc", "version" : "0.002" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@Author::ETHER/AutoPrereqs", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Prereqs::AuthorDeps", "name" : "@Author::ETHER/Prereqs::AuthorDeps", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::MinimumPerl", "name" : "@Author::ETHER/MinimumPerl", "version" : "1.006" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9 } }, "name" : "@Author::ETHER/MakeMaker", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Git::Contributors", "config" : { "Dist::Zilla::Plugin::Git::Contributors" : { "git_version" : "2.52.0", "include_authors" : 0, "include_releaser" : 1, "order_by" : "commits", "paths" : [] } }, "name" : "@Author::ETHER/Git::Contributors", "version" : "0.039" }, { "class" : "Dist::Zilla::Plugin::StaticInstall", "config" : { "Dist::Zilla::Plugin::StaticInstall" : { "dry_run" : 0, "mode" : "off" } }, "name" : "@Author::ETHER/StaticInstall", "version" : "0.012" }, { "class" : "Dist::Zilla::Plugin::RunExtraTests", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9 } }, "name" : "@Author::ETHER/RunExtraTests", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::CheckSelfDependency", "config" : { "Dist::Zilla::Plugin::CheckSelfDependency" : { "finder" : [ ":InstallModules" ] }, "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000039", "version" : "0.006" } }, "name" : "@Author::ETHER/CheckSelfDependency", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::Run::AfterBuild", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "fatal_errors" : 1, "quiet" : 1, "run" : [ "bash -c \"test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname '%d'` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi\"" ], "version" : "0.050" } }, "name" : "@Author::ETHER/.ackrc", "version" : "0.050" }, { "class" : "Dist::Zilla::Plugin::Run::AfterBuild", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "eval" : [ "if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; }" ], "fatal_errors" : 0, "quiet" : 1, "version" : "0.050" } }, "name" : "@Author::ETHER/.latest", "version" : "0.050" }, { "class" : "Dist::Zilla::Plugin::CheckStrictVersion", "name" : "@Author::ETHER/CheckStrictVersion", "version" : "0.001" }, { "class" : "Dist::Zilla::Plugin::CheckMetaResources", "name" : "@Author::ETHER/CheckMetaResources", "version" : "0.001" }, { "class" : "Dist::Zilla::Plugin::EnsureLatestPerl", "config" : { "Dist::Zilla::Plugin::EnsureLatestPerl" : { "Module::CoreList" : "5.20260803" } }, "name" : "@Author::ETHER/EnsureLatestPerl", "version" : "0.010" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 1, "check_all_prereqs" : 1, "modules" : [], "phase" : "release", "run_under_travis" : 0, "skip" : [] } }, "name" : "@Author::ETHER/stale modules, release", "version" : "0.060" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.52.0", "repo_root" : "." } }, "name" : "@Author::ETHER/initial check", "version" : "2.052" }, { "class" : "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts", "config" : { "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.52.0", "repo_root" : "." } }, "name" : "@Author::ETHER/Git::CheckFor::MergeConflicts", "version" : "0.015" }, { "class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch", "config" : { "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.52.0", "repo_root" : "." } }, "name" : "@Author::ETHER/Git::CheckFor::CorrectBranch", "version" : "0.015" }, { "class" : "Dist::Zilla::Plugin::Git::Remote::Check", "name" : "@Author::ETHER/Git::Remote::Check", "version" : "0.1.2" }, { "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", "name" : "@Author::ETHER/CheckPrereqsIndexed", "version" : "0.022" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@Author::ETHER/TestRelease", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.52.0", "repo_root" : "." } }, "name" : "@Author::ETHER/after tests", "version" : "2.052" }, { "class" : "Dist::Zilla::Plugin::CheckIssues", "name" : "@Author::ETHER/CheckIssues", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@Author::ETHER/UploadToCPAN", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::CopyFilesFromRelease", "config" : { "Dist::Zilla::Plugin::CopyFilesFromRelease" : { "filename" : [ "CONTRIBUTING", "INSTALL", "LICENCE", "LICENSE", "ppport.h" ], "match" : [] } }, "name" : "@Author::ETHER/copy generated files", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod", "config" : { "Dist::Zilla::Role::FileWatcher" : { "version" : "0.006" } }, "name" : "@Author::ETHER/ReadmeAnyFromPod", "version" : "0.163250" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "develop", "type" : "recommends" } }, "name" : "@Author::ETHER/@Git::VersionManager/pluginbundle version", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::RewriteVersion::Transitional", "config" : { "Dist::Zilla::Plugin::RewriteVersion" : { "add_tarball_name" : 0, "finders" : [ ":ExecFiles", ":InstallModules" ], "global" : 1, "skip_version_provider" : 0 }, "Dist::Zilla::Plugin::RewriteVersion::Transitional" : {} }, "name" : "@Author::ETHER/@Git::VersionManager/RewriteVersion::Transitional", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::MetaProvides::Update", "name" : "@Author::ETHER/@Git::VersionManager/MetaProvides::Update", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::CopyFilesFromRelease", "config" : { "Dist::Zilla::Plugin::CopyFilesFromRelease" : { "filename" : [ "Changes" ], "match" : [] } }, "name" : "@Author::ETHER/@Git::VersionManager/CopyFilesFromRelease", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [ "." ], "commit_msg" : "%N-%v%t%n%n%c", "signoff" : 0 }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "CONTRIBUTING", "Changes", "INSTALL", "LICENCE", "README.pod" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.52.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@Author::ETHER/@Git::VersionManager/release snapshot", "version" : "2.052" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "config" : { "Dist::Zilla::Plugin::Git::Tag" : { "branch" : null, "changelog" : "Changes", "signed" : 0, "tag" : "v1.038", "tag_format" : "v%V", "tag_message" : "v%v%t%n%n%c" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.52.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@Author::ETHER/@Git::VersionManager/Git::Tag", "version" : "2.052" }, { "class" : "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional", "config" : { "Dist::Zilla::Plugin::BumpVersionAfterRelease" : { "finders" : [ ":InstallModules" ], "global" : 1, "munge_makefile_pl" : 1 }, "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional" : {} }, "name" : "@Author::ETHER/@Git::VersionManager/BumpVersionAfterRelease::Transitional", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@Author::ETHER/@Git::VersionManager/NextRelease", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [], "commit_msg" : "increment $VERSION after %v release", "signoff" : 0 }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Build.PL", "Changes", "Makefile.PL" ], "allow_dirty_match" : [ "(?^:^lib/.*\\.pm$)" ], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.52.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@Author::ETHER/@Git::VersionManager/post-release commit", "version" : "2.052" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "x_Dist_Zilla", "type" : "requires" } }, "name" : "@Author::ETHER/@Git::VersionManager/prereqs for @Git::VersionManager", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "config" : { "Dist::Zilla::Plugin::Git::Push" : { "push_to" : [ "origin" ], "remotes_must_exist" : 1 }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.52.0", "repo_root" : "." } }, "name" : "@Author::ETHER/Git::Push", "version" : "2.052" }, { "class" : "Dist::Zilla::Plugin::GitHub::Update", "config" : { "Dist::Zilla::Plugin::GitHub::Update" : { "metacpan" : 1 } }, "name" : "@Author::ETHER/GitHub::Update", "version" : "0.49" }, { "class" : "Dist::Zilla::Plugin::Run::AfterRelease", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "fatal_errors" : 0, "quiet" : 0, "run" : [ "REDACTED" ], "version" : "0.050" } }, "name" : "@Author::ETHER/install release", "version" : "0.050" }, { "class" : "Dist::Zilla::Plugin::Run::AfterRelease", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "eval" : [ "print \"release complete!\\xa\"" ], "fatal_errors" : 1, "quiet" : 1, "version" : "0.050" } }, "name" : "@Author::ETHER/release complete", "version" : "0.050" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@Author::ETHER/ConfirmRelease", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "x_Dist_Zilla", "type" : "requires" } }, "name" : "@Author::ETHER/prereqs for @Author::ETHER", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "runtime", "type" : "requires" } }, "name" : "RuntimeRequires", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "runtime", "type" : "suggests" } }, "name" : "RuntimeSuggests", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "TestRequires", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::DynamicPrereqs", "config" : { "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000039", "version" : "0.006" } }, "name" : "DynamicPrereqs", "version" : "0.040" }, { "class" : "Dist::Zilla::Plugin::RemovePrereqs", "config" : { "Dist::Zilla::Plugin::RemovePrereqs" : { "modules_to_remove" : [ "B", "File::Spec", "Mojo::JSON", "Scalar::Util", "Test2::API", "Test2::Tools::Compare", "Test::More", "Tie::Hash", "constant", "feature", "lib", "open", "strict", "utf8", "warnings" ] } }, "name" : "RemovePrereqs", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::GenerateFile", "name" : "submodule_status", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "ShareDir", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", "version" : "6.037" }, { "class" : "Dist::Zilla::Plugin::VerifyPhases", "name" : "@Author::ETHER/PHASE VERIFICATION", "version" : "0.016" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : 0 }, "version" : "6.037" } }, "x_authority" : "cpan:RELEQUEST", "x_contributors" : [ "Karen Etheridge ", "Daniel Perrett " ], "x_generated_by_perl" : "v5.45.1", "x_serialization_backend" : "Cpanel::JSON::XS version 4.43", "x_spdx_expression" : "MIT", "x_static_install" : 0, "x_use_unsafe_inc" : 0 } weaver.ini100640000766000024 31215240201330 20042 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038[@Author::ETHER] [AllowOverride / append to SUPPORT] header_re = ^SUPPORT$ match_anywhere = 1 action = append [AllowOverride / OverrideLegal] header_re = ^COPYRIGHT match_anywhere = 1 action = append Makefile.PL100644000766000024 1135015240201330 20072 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.037 use strict; use warnings; use 5.020; use ExtUtils::MakeMaker; use File::ShareDir::Install; $File::ShareDir::Install::INCLUDE_DOTFILES = 1; $File::ShareDir::Install::INCLUDE_DOTDIRS = 1; install_share dist => "share"; my %WriteMakefileArgs = ( "ABSTRACT" => "Acceptance testing for JSON-Schema based validators", "AUTHOR" => "Ben Hutton (\@relequestual) ", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => 0, "File::ShareDir::Install" => "0.06", "Text::ParseWords" => 0 }, "DISTNAME" => "Test-JSON-Schema-Acceptance", "LICENSE" => "mit", "MIN_PERL_VERSION" => "5.020", "NAME" => "Test::JSON::Schema::Acceptance", "PREREQ_PM" => { "Feature::Compat::Try" => 0, "File::ShareDir" => 0, "Git::Wrapper" => 0, "JSON::PP" => "4.11", "List::Util" => "1.33", "Mojolicious" => "7.87", "Moo" => 0, "MooX::TypeTiny" => "0.002002", "Path::Tiny" => "0.069", "Test2::Todo" => 0, "Types::Common::Numeric" => 0, "Types::Standard" => "1.016003", "autovivification" => 0, "experimental" => 0, "if" => 0, "namespace::clean" => 0, "stable" => "0.031", "strictures" => 2 }, "TEST_REQUIRES" => { "ExtUtils::MakeMaker" => 0, "JSON::PP" => "4.11", "Test2::Suite" => "0.000131", "Test2::Tools::Exception" => 0, "Test2::V0" => 0, "Test2::Warnings" => 0, "Test::Deep" => 0, "Test::File::ShareDir" => 0, "Test::Simple" => "1.302176", "builtin::compat" => 0 }, "VERSION" => "1.038", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "ExtUtils::MakeMaker" => 0, "Feature::Compat::Try" => 0, "File::ShareDir" => 0, "Git::Wrapper" => 0, "JSON::PP" => "4.11", "List::Util" => "1.33", "Mojolicious" => "7.87", "Moo" => 0, "MooX::TypeTiny" => "0.002002", "Path::Tiny" => "0.069", "Test2::Suite" => "0.000131", "Test2::Todo" => 0, "Test2::Tools::Exception" => 0, "Test2::V0" => 0, "Test2::Warnings" => 0, "Test::Deep" => 0, "Test::File::ShareDir" => 0, "Test::Simple" => "1.302176", "Types::Common::Numeric" => 0, "Types::Standard" => "1.016003", "autovivification" => 0, "builtin::compat" => 0, "experimental" => 0, "if" => 0, "namespace::clean" => 0, "stable" => "0.031", "strictures" => 2 ); # inserted by Dist::Zilla::Plugin::DynamicPrereqs 0.040 if (want_xs()) { requires('Cpanel::JSON::XS', '3.0223') } unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); { package MY; use File::ShareDir::Install qw(postamble); } # inserted by Dist::Zilla::Plugin::DynamicPrereqs 0.040 sub _add_prereq { my ($mm_key, $module, $version_or_range) = @_; $version_or_range ||= 0; warn "$module already exists in $mm_key (at version $WriteMakefileArgs{$mm_key}{$module}) -- need to do a sane metamerge!" if exists $WriteMakefileArgs{$mm_key}{$module} and $WriteMakefileArgs{$mm_key}{$module} ne '0' and $WriteMakefileArgs{$mm_key}{$module} ne $version_or_range; warn "$module already exists in FallbackPrereqs (at version $FallbackPrereqs{$module}) -- need to do a sane metamerge!" if exists $FallbackPrereqs{$module} and $FallbackPrereqs{$module} ne '0' and $FallbackPrereqs{$module} ne $version_or_range; $WriteMakefileArgs{$mm_key}{$module} = $FallbackPrereqs{$module} = $version_or_range; return; } use lib 'inc'; use ExtUtils::HasCompiler 0.014 'can_compile_loadable_object'; { my $can_xs; sub can_xs { return $can_xs if defined $can_xs; $can_xs = can_compile_loadable_object(quiet => 1) ? 1 : 0; } } { my $parsed_args; sub parse_args { return $parsed_args if defined $parsed_args; require ExtUtils::MakeMaker; require Text::ParseWords; ExtUtils::MakeMaker::parse_args( my $tmp = {}, Text::ParseWords::shellwords($ENV{PERL_MM_OPT} || ''), @ARGV, ); $parsed_args = $tmp->{ARGS} || {}; } } sub requires { goto &runtime_requires } sub runtime_requires { my ($module, $version_or_range) = @_; _add_prereq(PREREQ_PM => $module, $version_or_range); } { my $want_pp; sub want_pp { return $$want_pp if defined $want_pp; my $pp_only = parse_args()->{PUREPERL_ONLY}; $pp_only = !!$pp_only if defined $pp_only; $want_pp = \$pp_only; $pp_only; } } { my $want_xs; sub want_xs { return $want_xs if defined $want_xs; my $want_pp = want_pp(); $want_xs = defined $want_pp ? !$want_pp : can_xs(); return $want_xs; } } t000755000766000024 015240201330 16203 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.03801-basic.t100640000766000024 361015240201330 20023 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::Deep qw(!array !hash);; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use Test::JSON::Schema::Acceptance; use lib 't/lib'; use SchemaParser; use Helper; my $accepter = Test::JSON::Schema::Acceptance->new(7); my $line; my $parser = SchemaParser->new; my $events = intercept( sub { $accepter->acceptance(sub ($schema, $data_string) { return $parser->validate_json_string($data_string, $schema); # we didn't adjust level, so test appears to originate where the subref ends }); $line = __LINE__; } ); cmp_deeply( $events->[0], all( isa('Test2::Event::Note'), methods(message => 'running tests in '.$accepter->test_dir.' against draft7...'), ), 'first test event is the note', ); my @bool_tests = grep $_->isa('Test2::Event::Ok') && $_->name =~ /boolean type matches booleans/, @$events; is(@bool_tests, 10, 'found all the tests that check for boolean type'); cmp_deeply( \@bool_tests, array_each(methods( pass => 1, effective_pass => 1, trace => methods( frame => [ 'main', __FILE__, $line, 'Test::JSON::Schema::Acceptance::acceptance' ], ), )), 'tests pass for checking schemas that test for boolean type', ) or diag "all failing tests:\n", join("\n", failing_test_names($events)); done_testing; update-share100750000766000024 240115240201330 20400 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038#!/usr/bin/env perl use strict; use warnings; use Path::Tiny; # ATTENTION DISTRO REPACKAGERS: do NOT use fresh copies of these files # from their source; it is important to include the original versions # of the files as they were packaged with this cpan distribution, or # surprising behaviour may occur. chomp(my $dirty = `git status --untracked --porcelain share`); !length($dirty) and die 'Cannot proceed: share/ is not dirty. Run "git submodule update --remote"'; chomp($dirty = `git status --untracked --porcelain Changes`); length($dirty) and die 'Cannot proceed: Changes is already dirty'; chomp(my $ls_tree = `git ls-tree HEAD share`); my (undef, undef, $old_sha) = split(/\s/, $ls_tree); chomp(my $status = `git submodule status`); my ($new_sha) = split(' ', $status, 2); $new_sha =~ s/^\+//; my ($remote_spec) = path('.gitmodules')->slurp_utf8 =~ m{url\s+=\s+git://(.+)\.git$}m; my $diff_link = 'https://'.$remote_spec.'/compare/'.$old_sha.'...'.$new_sha; my ($seen_next, $seen_blank); path('Changes')->edit_lines_utf8(sub { if ($seen_next ||= /^\{\{\$NEXT\}\}/ and not $seen_blank and /^$/) { s/^$/ - updated test suite:\n $diff_link\n/; $seen_blank = 1; } }); exec 'git commit -m"update test suite to latest commit" Changes share'; CONTRIBUTING100644000766000024 1067015240201330 17756 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038 CONTRIBUTING Thank you for considering contributing to this distribution. This file contains instructions that will help you work with the source code. PLEASE NOTE that if you have any questions or difficulties, you can reach the maintainer(s) through the bug queue described later in this document (preferred), or by emailing the releaser directly. You are not required to follow any of the steps in this document to submit a patch or bug report; these are just recommendations, intended to help you (and help us help you faster). The distribution is managed with Dist::Zilla (https://metacpan.org/release/Dist-Zilla). This means than many of the usual files you might expect are not in the repository, but are generated at release time (e.g. Makefile.PL). However, you can run tests directly using the 'prove' tool: $ prove -l $ prove -lv t/some_test_file.t $ prove -lvr t/ In most cases, 'prove' is entirely sufficient for you to test any patches you have. You may need to satisfy some dependencies. The easiest way to satisfy dependencies is to install the last release -- this is available at https://metacpan.org/release/Test-JSON-Schema-Acceptance If you use cpanminus, you can do it without downloading the tarball first: $ cpanm --reinstall --installdeps --with-recommends Test::JSON::Schema::Acceptance Dist::Zilla is a very powerful authoring tool, but requires a number of author-specific plugins. If you would like to use it for contributing, install it from CPAN, then run one of the following commands, depending on your CPAN client: $ cpan `dzil authordeps --missing` or $ dzil authordeps --missing | cpanm You should then also install any additional requirements not needed by the dzil build but may be needed by tests or other development: $ cpan `dzil listdeps --author --missing` or $ dzil listdeps --author --missing | cpanm Or, you can use the 'dzil stale' command to install all requirements at once: $ cpan Dist::Zilla::App::Command::stale $ cpan `dzil stale --all` or $ cpanm Dist::Zilla::App::Command::stale $ dzil stale --all | cpanm You can also do this via cpanm directly: $ cpanm --reinstall --installdeps --with-develop --with-recommends Test::JSON::Schema::Acceptance Once installed, here are some dzil commands you might try: $ dzil build $ dzil test $ dzil test --release $ dzil xtest $ dzil listdeps --json $ dzil build --notgz You can learn more about Dist::Zilla at http://dzil.org/. The code for this distribution is hosted at GitHub. The repository is: https://github.com/karenetheridge/Test-JSON-Schema-Acceptance This repository uses git submodules. That means you also need to run: $ git submodule update --init --recursive $ git submodule update --remote You can submit code changes by forking the repository, pushing your code changes to your clone, and then submitting a pull request. Please include a suitable end-user-oriented entry in the Changes file describing your change. Detailed instructions for doing that is available here: https://help.github.com/articles/creating-a-pull-request Generated files such as README, CONTRIBUTING, Makefile.PL, LICENSE etc should *not* be included in your pull request, as they will be updated automatically during the next release. I will not accept AI-generated or AI-assisted contributions unless the nature of the AI assistance is clearly identified with the pull request: submissions should come from the owner's account, not a bot account, and be indistinguishable from work done by that person. Multiple "drive-by" submissions, or contributions that do not appear to have been human-reviewed, will be closed and may lead to a ban of future contributions to any of my work. If you have found a bug, but do not have an accompanying patch to fix it, you can submit an issue report here: https://github.com/karenetheridge/Test-JSON-Schema-Acceptance/issues This is a good place to send your questions about the usage of this distribution. If you send me a patch or pull request, your name and email address will be included in the documentation as a contributor (using the attribution on the commit or patch), unless you specifically request for it not to be. If you wish to be listed under a different name or address, you should submit a pull request to the .mailmap file to contain the correct mapping. This file was generated via Dist::Zilla::Plugin::GenerateFile::FromShareDir 0.016 from a template file originating in Dist-Zilla-PluginBundle-Author-ETHER-0.174. share000755000766000024 015240201330 17042 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038LICENSE100640000766000024 204115240201330 20200 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/shareCopyright (c) 2012 Julian Berman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 99-sanity.t100640000766000024 216315240201330 20274 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::V0 -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use File::ShareDir 'dist_dir'; use Path::Tiny; use Test2::Tools::Exception; use Test::JSON::Schema::Acceptance; foreach my $draft (path(dist_dir('Test-JSON-Schema-Acceptance'), 'tests')->children) { $draft = $draft->basename; next if $draft eq 'draft-next'; my $accepter = Test::JSON::Schema::Acceptance->new(specification => $draft, include_optional => 1); ok( lives { $accepter->_test_data }, 'test data for '.$draft.' does not violate any type constraints', ); } done_testing; 09-unicode.t100640000766000024 712615240201330 20406 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; no feature 'switch'; use utf8; use open ':std', ':encoding(UTF-8)'; # force stdin, stdout, stderr into utf8 use Test2::V0 -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::JSON::Schema::Acceptance; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use lib 't/lib'; use SchemaParser; my $accepter = Test::JSON::Schema::Acceptance->new(test_dir => 't/tests/unicode'); my $parser = SchemaParser->new; $accepter->acceptance( tests => { file => 'unicode.json', group_description => 'latin1 schema', test_description => 'latin1 data', }, validate_data => sub ($schema, $data) { note 'validate_data passed data "'.$data.'", schema "'.$schema->{const}.'"'; is(index($schema->{const}, 'Les hivers de mon enfance étaient'), 0, 'schema was decoded from data file correctly') && is(index($data, 'Les hivers de mon enfance étaient'), 0, 'data was decoded from file correctly') && is($data, $schema->{const}, 'data and schema decode identically'); }, ); $accepter->acceptance( tests => { file => 'unicode.json', group_description => 'very wide schema', test_description => 'very wide data', }, validate_data => sub ($schema, $data) { note 'validate_data passed data "'.$data.'", schema "'.$schema->{const}.'"'; is($schema->{const}, 'ಠ_ಠ', 'schema was decoded from data file correctly') && is($data, 'ಠ_ಠ', 'data was decoded from file correctly, and properly passed characters that occupy multiple bytes in unicode') && is($data, $schema->{const}, 'data and schema decode identically'); }, ); $accepter->acceptance( tests => { file => 'unicode.json', group_description => 'latin1 schema', test_description => 'latin1 data', }, validate_json_string => sub ($schema, $data) { note 'validate_data passed data "'.$data.'", schema "'.$schema->{const}.'"'; is(index($schema->{const}, 'Les hivers de mon enfance étaient'), 0, 'schema was decoded from data file correctly') && is(index($data, "\"Les hivers de mon enfance \x{c3}\x{a9}taient"), 0, 'data contains utf8-encoded data (latin-1 character is encoded as two bytes in utf8') && is( Test::JSON::Schema::Acceptance::_JSON_BACKEND->new->utf8(1)->allow_nonref(1)->decode($data), $schema->{const}, 'data can be decoded and compares correctly', ); }, ); $accepter->acceptance( tests => { file => 'unicode.json', group_description => 'very wide schema', test_description => 'very wide data', }, validate_json_string => sub ($schema, $data) { note 'validate_data passed data "'.$data.'", schema "'.$schema->{const}.'"'; is($schema->{const}, 'ಠ_ಠ', 'schema was decoded from data file correctly') && is($data, "\"\x{e0}\x{b2}\x{a0}_\x{e0}\x{b2}\x{a0}\"", 'data contains utf8-encoded data (each character is encoded as three bytes in utf8') && is(Test::JSON::Schema::Acceptance::_JSON_BACKEND->new->utf8(1)->allow_nonref(1)->decode($data), $schema->{const}, 'data can be decoded and compares correctly'); }, ); done_testing; README.md100640000766000024 4636015240201330 20506 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share# JSON Schema Test Suite [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/json-schema-org/.github/blob/main/CODE_OF_CONDUCT.md) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) [![Financial Contributors on Open Collective](https://opencollective.com/json-schema/all/badge.svg?label=financial+contributors)](https://opencollective.com/json-schema) [![DOI](https://zenodo.org/badge/5952934.svg)](https://zenodo.org/badge/latestdoi/5952934) [![Build Status](https://github.com/json-schema-org/JSON-Schema-Test-Suite/workflows/Test%20Suite%20Sanity%20Checking/badge.svg)](https://github.com/json-schema-org/JSON-Schema-Test-Suite/actions?query=workflow%3A%22Test+Suite+Sanity+Checking%22) This repository contains a set of JSON objects that implementers of JSON Schema validation libraries can use to test their validators. The test suite repository exists to verify specified behavior defined by the JSON Schema specification and should not be confused with a style guide. It is not intended to demonstrate how schemas ought to be written. Tests may appear unusual or unintuitive, but they exist solely to exercise behavior prescribed by the specification. It is meant to be language agnostic and should require only a JSON parser. The conversion of the JSON objects into tests within a specific language and test framework of choice is left to be done by the validator implementer. The recommended workflow of this test suite is to clone the `main` branch of this repository as a `git submodule` or `git subtree`. The `main` branch is always stable. ## Coverage All JSON Schema specification releases should be well covered by this suite, including versions draft-2020-12, draft-2019-09, draft-07, draft-06, draft-04 and draft-03. Versions draft-04 and draft-03 are considered "frozen" in that less effort is put in to backport new tests to these versions. Additional coverage is always welcome, particularly for bugs encountered in real-world implementations. If you see anything missing or incorrect, please feel free to [file an issue](https://github.com/json-schema-org/JSON-Schema-Test-Suite/issues) or [submit a PR](https://github.com/json-schema-org/JSON-Schema-Test-Suite). @gregsdennis has also started a separate [test suite](https://github.com/gregsdennis/json-schema-vocab-test-suites) that is modelled after this suite to cover third-party vocabularies. ## Introduction to the Test Suite Structure The tests in this suite are contained in the `tests` directory at the root of this repository. Inside that directory is a subdirectory for each released version of the specification. The structure and contents of each file in these directories is described below. In addition to the version-specific subdirectories, one additional directory is present: 1. `latest/`: a symbolic link which points to the directory which is the most recent release (which may be useful for implementations providing specific entry points for validating against the latest version of the specification) Inside each version directory there are a number of `.json` files each containing a collection of related tests. Often the grouping is by property under test, but not always. In addition to the `.json` files, each version directory contains one or more special subdirectories whose purpose is [described below](#subdirectories-within-each-version-directory), and which contain additional `.json` files. Each `.json` file consists of a single JSON array of test cases. ### Terminology For clarity, we first define this document's usage of some testing terminology: | term | definition | |-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **test suite** | the entirety of the contents of this repository, containing tests for multiple different releases of the JSON Schema specification | | **test case** | a single schema, along with a description and an array of *test*s | | **test** | within a *test case*, a single test example, containing a description, instance and a boolean indicating whether the instance is valid under the test case schema | | **test runner** | a program, external to this repository and authored by a user of this suite, which is executing each of the tests in the suite | An example illustrating this structure is immediately below, and a JSON Schema containing a formal definition of the contents of test cases can be found [alongside this README](./test-schema.json). ### Sample Test Case Here is a single *test case*, containing one or more tests: ```json { "description": "The test case description", "schema": { "type": "string" }, "tests": [ { "description": "a test with a valid instance", "data": "a string", "valid": true }, { "description": "a test with an invalid instance", "data": 15, "valid": false } ] } ``` ### Subdirectories Within Each Version directory A specification version test directory may contain one or more subdirectories. These are: 1. `optional/`: Contains tests that are considered optional. Note that this subdirectory currently conflates many reasons why a test may be optional -- it may be because tests within a particular file are indeed not required by the specification but still potentially useful to an implementer, or it may be because tests within it only apply to programming languages with particular functionality (in which case they are not truly optional in such a language). In the future this directory structure will be made richer to reflect these differences more clearly. 2. `proposals/`: Contains a subfolder for each active proposal to the specification. If the proposal is a keyword (generally the case), then the subfolder will bear the name of that keyword. Inside the proposal subfolder is a series of test files that would contain amendments to the required test suite should the proposal be incorporated into the specification. These tests should be considered volatile while the proposal is in development; however, implementations claiming to support the proposal are expected to pass its tests. ## Using the Suite to Test a Validator Implementation The test suite structure was described [above](#introduction-to-the-test-suite-structure). If you are authoring a new validator implementation, or adding support for an additional version of the specification, this section describes: 1. How to implement a test runner which passes tests to your validator 2. Assumptions the suite makes about how the test runner will configure your validator 3. Invariants the test suite claims to hold for its tests ### How to Implement a Test Runner Presented here is a possible implementation of a test runner. The precise steps described do not need to be followed exactly, but the results of your own procedure should produce the same effects. To test a specific version: * For 2019-09 and later published versions, implementations that are able to detect the version of each schema via `$schema` SHOULD be configured to do so * For draft-07 and earlier, v1 (not yet released), and implementations unable to detect via `$schema`, implementations MUST be configured to expect the version matching the test directory name * Load any remote references [described below](#additional-assumptions) and configure your implementation to retrieve them via their URIs * Walk the filesystem tree for that version's subdirectory and for each `.json` file found: * if the file is located in the root of the version directory: * for each test case present in the file: * load the schema from the `"schema"` property * load (or log) the test case description from the `"description"` property for debugging or outputting * for each test in the `"tests"` property: * load the instance to be tested from the `"data"` property * load (or log) the individual test description from the `"description"` property for debugging or outputting * use the schema loaded above to validate whether the instance is considered valid under your implementation * if the result from your implementation matches the value found in the `"valid"` property, your implementation correctly implements the specific example * if the result does not match, or your implementation errors or crashes, your implementation does not correctly implement the specific example * otherwise it is located in a special subdirectory as described above. Follow the additional assumptions and restrictions for the containing subdirectory, then run the test case as above. If your implementation supports multiple versions, run the above procedure for each version supported, configuring your implementation as appropriate to call each version individually. ### Additional Assumptions 1. The suite, notably in its `refRemote.json` file in each specification version directory, expects a number of remote references to be configured. These are JSON documents, identified by URI, which are used by the suite to test the behavior of the `$ref` keyword (and related keywords). Depending on your implementation, you may configure how to "register" these *either*: * by directly retrieving them off the filesystem from the `remotes/` directory, in which case you should load each schema with a retrieval URI of `http://localhost:1234` followed by the relative path from the remotes directory -- e.g. a `$ref` to `http://localhost:1234/foo/bar/baz.json` is expected to resolve to the contents of the file at `remotes/foo/bar/baz.json` * or alternatively, by executing `bin/jsonschema_suite remotes` using the executable in the `bin/` directory, which will output a JSON object containing all of the remotes combined, e.g.: ``` $ bin/jsonschema_suite remotes ``` ```json { "http://localhost:1234/baseUriChange/folderInteger.json": { "type": "integer" }, "http://localhost:1234/baseUriChangeFolder/folderInteger.json": { "type": "integer" } } ``` 2. Test cases found within [special subdirectories](#subdirectories-within-each-version-directory) may require additional configuration to run. In particular, when running tests within the `optional/format` subdirectory, test runners should configure implementations to enable format validation, where the implementation supports it. ### Invariants & Guarantees The test suite guarantees a number of things about tests it defines. Any deviation from the below is generally considered a bug. If you suspect one, please [file an issue](https://github.com/json-schema-org/JSON-Schema-Test-Suite/issues/new): 1. All files containing test cases are valid JSON. 2. The contents of the `"schema"` property in a test case are always valid JSON Schemas under the corresponding specification. The rationale behind this is that we are testing instances in a test's `"data"` element, and not the schema itself. A number of tests *do* test the validity of a schema itself, but do so by representing the schema as an instance inside a test, with the associated meta-schema in the `"schema"` property (via the `"$ref"` keyword): ```json { "description": "Test the \"type\" schema keyword", "schema": { "$ref": "https://json-schema.org/draft/2019-09/schema" }, "tests": [ { "description": "Valid: string", "data": { "type": "string" }, "valid": true }, { "description": "Invalid: null", "data": { "type": null }, "valid": false } ] } ``` See below for some [known limitations](#known-limitations). ## Known Limitations This suite expresses its assertions about the behavior of an implementation *within* JSON Schema itself. Each test is the application of a schema to a particular instance. This means that the suite of tests can test against any behavior a schema can describe, and conversely cannot test against any behavior which a schema is incapable of representing, even if the behavior is mandated by the specification. For example, a schema can require that a string is a _URI-reference_ and even that it matches a certain pattern, but even though the specification contains [recommendations about URIs being normalized](https://json-schema.org/draft/2020-12/json-schema-core.html#name-the-id-keyword), a JSON schema cannot today represent this assertion within the core vocabularies of the specifications, so no test covers this behavior. ## Who Uses the Test Suite This suite is being used by: ### Clojure * [jinx](https://github.com/juxt/jinx) * [json-schema](https://github.com/tatut/json-schema) * [M3](https://github.com/JulesGosnell/m3) (all drafts, pure Clojure — also usable from Java, Kotlin, Scala, and JavaScript) ### Coffeescript * [jsck](https://github.com/pandastrike/jsck) ### Common Lisp * [json-schema](https://github.com/fisxoj/json-schema) ### C++ * [Blaze](https://github.com/sourcemeta/blaze) * [Modern C++ JSON schema validator](https://github.com/pboettch/json-schema-validator) * [Valijson](https://github.com/tristanpenman/valijson) ### Dart * [json\_schema](https://github.com/patefacio/json_schema) ### Elixir * [ex\_json\_schema](https://github.com/jonasschmidt/ex_json_schema) ### Erlang * [jesse](https://github.com/for-GET/jesse) ### Go * [gojsonschema](https://github.com/sigu-399/gojsonschema) * [validate-json](https://github.com/cesanta/validate-json) ### Haskell * [aeson-schema](https://github.com/timjb/aeson-schema) * [hjsonschema](https://github.com/seagreen/hjsonschema) ### Java * [json-schema-validation-comparison](https://www.creekservice.org/json-schema-validation-comparison/functional) (Comparison site for JVM-based validator implementations) * [json-schema-validator](https://github.com/daveclayton/json-schema-validator) * [everit-org/json-schema](https://github.com/everit-org/json-schema) * [networknt/json-schema-validator](https://github.com/networknt/json-schema-validator) * [Justify](https://github.com/leadpony/justify) * [Snow](https://github.com/ssilverman/snowy-json) * [jsonschemafriend](https://github.com/jimblackler/jsonschemafriend) * [OpenAPI JSON Schema Generator](https://github.com/openapi-json-schema-tools/openapi-json-schema-generator) * [M3](https://github.com/JulesGosnell/m3) (all drafts, pure Clojure — also usable from Kotlin, Scala, and JavaScript) ### JavaScript * [json-schema-benchmark](https://github.com/Muscula/json-schema-benchmark) * [direct-schema](https://github.com/IreneKnapp/direct-schema) * [is-my-json-valid](https://github.com/mafintosh/is-my-json-valid) * [jassi](https://github.com/iclanzan/jassi) * [JaySchema](https://github.com/natesilva/jayschema) * [json-schema-valid](https://github.com/ericgj/json-schema-valid) * [Jsonary](https://github.com/jsonary-js/jsonary) * [jsonschema](https://github.com/tdegrunt/jsonschema) * [request-validator](https://github.com/bugventure/request-validator) * [skeemas](https://github.com/Prestaul/skeemas) * [tv4](https://github.com/geraintluff/tv4) * [z-schema](https://github.com/zaggino/z-schema) * [jsen](https://github.com/bugventure/jsen) * [ajv](https://github.com/epoberezkin/ajv) * [djv](https://github.com/korzio/djv) * [M3](https://github.com/JulesGosnell/m3) (all drafts, pure Clojure — also usable from Java, Kotlin, and Scala) * [TypeBox](https://github.com/sinclairzx81/typebox) ### Kotlin * [json-schema-validation-comparison](https://www.creekservice.org/json-schema-validation-comparison/functional) (Comparison site for JVM-based validator implementations) * [kotlinx-schema](https://github.com/Kotlin/kotlinx-schema) * [M3](https://github.com/JulesGosnell/m3) (all drafts, pure Clojure — also usable from Java, Scala, and JavaScript) ### Lua * [lua-schema](https://framagit.org/fperrad/lua-schema) ### Node.js For node.js developers, the suite is also available as an [npm](https://www.npmjs.com/package/@json-schema-org/tests) package. Node-specific support is maintained in a [separate repository](https://github.com/json-schema-org/json-schema-test-suite-npm) which also welcomes your contributions! ### .NET * [JsonSchema.Net](https://github.com/json-everything/json-everything) * [Newtonsoft.Json.Schema](https://github.com/JamesNK/Newtonsoft.Json.Schema) ### Perl * [Test::JSON::Schema::Acceptance](https://github.com/karenetheridge/Test-JSON-Schema-Acceptance) (a wrapper of this test suite) * [JSON::Schema::Modern](https://github.com/karenetheridge/JSON-Schema-Modern) * [JSON::Schema::Tiny](https://github.com/karenetheridge/JSON-Schema-Tiny) ### PHP * [opis/json-schema](https://github.com/opis/json-schema) * [json-schema](https://github.com/justinrainbow/json-schema) * [json-guard](https://github.com/thephpleague/json-guard) ### PostgreSQL * [postgres-json-schema](https://github.com/gavinwahl/postgres-json-schema) * [is\_jsonb\_valid](https://github.com/furstenheim/is_jsonb_valid) ### Python * [jsonschema](https://github.com/Julian/jsonschema) * [fastjsonschema](https://github.com/seznam/python-fastjsonschema) * [hypothesis-jsonschema](https://github.com/Zac-HD/hypothesis-jsonschema) * [jschon](https://github.com/marksparkza/jschon) * [OpenAPI JSON Schema Generator](https://github.com/openapi-json-schema-tools/openapi-json-schema-generator) ### Ruby * [json-schema](https://github.com/hoxworth/json-schema) * [json\_schemer](https://github.com/davishmcclurg/json_schemer) ### Rust * [jsonschema](https://github.com/Stranger6667/jsonschema-rs) * [valico](https://github.com/rustless/valico) ### Scala * [json-schema-validation-comparison](https://www.creekservice.org/json-schema-validation-comparison/functional) (Comparison site for JVM-based validator implementations) * [M3](https://github.com/JulesGosnell/m3) (all drafts, pure Clojure — also usable from Java, Kotlin, and JavaScript) ### Swift * [JSONSchema](https://github.com/kylef/JSONSchema.swift) * [swift-json-schema](https://github.com/ajevans99/swift-json-schema) ### Unison * [typed-json](https://share.unison-lang.org/@frawa/typed-json) If you use it as well, please fork and send a pull request adding yourself to the list :). ## Contributing If you see something missing or incorrect, a pull request is most welcome! There are some sanity checks in place for testing the test suite. You can run them with `bin/jsonschema_suite check` or `tox`. They will be run automatically by [GitHub Actions](https://github.com/json-schema-org/JSON-Schema-Test-Suite/actions?query=workflow%3A%22Test+Suite+Sanity+Checking%22) as well. This repository is maintained by the JSON Schema organization, and will be governed by the JSON Schema steering committee (once it exists). 15-mutation.t100640000766000024 715415240201330 20616 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Scalar::Util 'dualvar'; use Tie::Hash; use Test::JSON::Schema::Acceptance; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use lib 't/lib'; use Helper; my $key = 'a'; foreach my $test ( [ 'autovivification' => sub ($thing) { $thing->{(keys %$thing)[0]}{$key++} = 'this should not be here'; } ], [ 'string->integer type mutation, explicit numification' => sub ($thing) { $thing->{foo}{string} += 0; } ], [ 'integer->string type mutation, explicit stringification' => sub ($thing) { $thing->{foo}{int} .= ''; } ], [ 'string->integer type mutation, used as a number' => sub ($thing) { my $str = sprintf('%d', $thing->{foo}{string}); } ], [ 'integer->string type mutation, used as a string' => sub ($thing) { my $str = sprintf('%s', $thing->{foo}{int}); }, "$]" >= 5.035009 ? 'on perls >= 5.35.9, reading the string form of an integer value no longer sets the flag SVf_POK' : '', ], [ 'string->dualvar' => sub ($thing) { $thing->{foo}{string} = dualvar(1, 'one'); } ], [ 'integer->dualvar' => sub ($thing) { $thing->{foo}{int} = dualvar(1, 'one'); } ], [ 'blessed hash replacement' => sub ($thing) { $thing->{foo} = bless($thing->{foo}, 'MyHash'); } ], [ 'tied hash replacement' => sub ($thing) { my %hash; tie(%hash, 'Tie::StdHash'); @hash{keys %{$thing->{foo}}} = values %{$thing->{foo}}; $thing->{foo} = \%hash; } ], [ 'bigint' => sub ($thing) { $thing->{foo}{bigint} += 1; } ], [ 'bignum' => sub ($thing) { $thing->{foo}{bignum} += 1; } ], ) { my ($test_name, $mutator, $skip) = @$test; foreach my $type (qw(data schema)) { if ($skip) { SKIP: { skip $test_name.' in '.$type.': '.$skip, 1 } next; } my $accepter = Test::JSON::Schema::Acceptance->new(test_dir => 't/tests/mutation'); my $events = intercept( sub { $accepter->acceptance(validate_data => sub ($schema, $data) { $mutator->($type eq 'data' ? $data : $type eq 'schema' ? $schema : die "$type?!"); return 1; }); } ); my $TODO = todo 'JSON::PP may mutate some bignums' if Test::JSON::Schema::Acceptance::_JSON_BACKEND eq 'JSON::PP' and $test_name =~ /^big/; cmp_result( [ map exists $_->{parent} ? { details => $_->{assert}{details}, pass => $_->{assert}{pass}, children => [ map exists $_->{assert} ? $_->{assert} : (), @{$_->{parent}{children}} ], } : (), map $_->facet_data, @$events ], [ { details => 'hash.json: "mutation of hashes" - "object of integers"', pass => 0, children => [ superhashof({ details => 'test passes: data is valid: true', pass => 1, }), superhashof({ details => 'evaluator did not mutate '.$type, pass => 0, }), ], }, ], $test_name.' in '.$type, ); } } done_testing; 16-skip_dir.t100640000766000024 300615240201330 20553 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use Test::JSON::Schema::Acceptance; use lib 't/lib'; use SchemaParser; use Helper; my $accepter = Test::JSON::Schema::Acceptance->new( test_dir => 't/tests/skip_dir', include_optional => 1, skip_dir => ['optional/beta'], ); my $parser = SchemaParser->new; my $events = intercept( sub { $accepter->acceptance(sub ($schema, $input_data) { return $parser->validate_data($input_data, $schema); }); } ); my @bool_tests = grep $_->isa('Test2::Event::Ok'), @$events; is(@bool_tests, 4, 'correct number of tests ran'); cmp_result( [ map $_->name, @bool_tests ], [ 'main.json: "test group" - "test"', 'optional/alpha/test.json: "test group" - "test"', 'optional/betadyne/test.json: "test group" - "test"', 'optional/gamma/test.json: "test group" - "test"', ], 'correct test files ran', ); done_testing; lib000755000766000024 015240201330 16751 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/tHelper.pm100640000766000024 365315240201330 20671 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/lib# vim: set ft=perl ts=8 sts=2 sw=2 tw=100 et : # no package, so things defined here appear in the namespace of the parent. use strictures 2; use 5.020; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; no feature 'switch'; use open ':std', ':encoding(UTF-8)'; # force stdin, stdout, stderr into utf8 use Test::Deep qw(!array !hash !blessed); # import symbols: ignore, re etc use Test2::API 'context_do'; my $encoder = JSON::PP->new->allow_nonref(1)->utf8(0)->allow_blessed(1)->allow_bignum(1)->canonical(1)->convert_blessed(1)->pretty(1)->space_before(0); # deep comparison, with Test::Deep syntax sugar sub cmp_result ($got, $expected, $test_name) { context_do { my $ctx = shift; my ($got, $expected, $test_name) = @_; my ($equal, $stack) = Test::Deep::cmp_details($got, $expected); if ($equal) { $ctx->pass($test_name); } else { $ctx->fail($test_name); my $method = # be less noisy for expected failures (grep $_->{todo}, Test2::API::test2_stack->top->{_pre_filters}->@*) ? 'note' : $ENV{AUTHOR_TESTING} || $ENV{AUTOMATED_TESTING} ? 'diag' : 'note'; $ctx->$method(Test::Deep::deep_diag($stack)); $ctx->$method("got result:\n".$encoder->encode($got)); } return $equal; } $got, $expected, $test_name; } sub failing_test_names ($events) { my $sub = sub (@events) { map +( ($_->{pass}//1) ? () : ( $_->{name}, $_->{subevents} ? (map +(' '.$_), __SUB__->($_->{subevents}->@*)) : (), ) ), @events }; $sub->($events->flatten(args => [ include_subevents => 1 ])->@*); } 1; author000755000766000024 015240201330 17675 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xteol.t100644000766000024 460715240201330 21010 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/authoruse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::EOL 0.19 use Test::More 0.88; use Test::EOL; my @files = ( 'examples/run_all_tests', 'lib/Test/JSON/Schema/Acceptance.pm', 't/00-report-prereqs.dd', 't/00-report-prereqs.t', 't/01-basic.t', 't/02-constructor.t', 't/03-validate_data.t', 't/04-validate_json_string.t', 't/05-test-descriptions.t', 't/06-subset-of-tests.t', 't/07-skip-tests-deprecated.t', 't/08-todo-tests.t', 't/09-unicode.t', 't/10-exception.t', 't/11-additional-resources.t', 't/12-include-optional.t', 't/13-empty-test-dir.t', 't/14-add-resource.t', 't/15-mutation.t', 't/16-skip_dir.t', 't/99-sanity.t', 't/lib/Helper.pm', 't/lib/SchemaParser.pm', 't/tests/add_resource/foo.json', 't/tests/add_resource/remotes/draft2019-09/remote4.json', 't/tests/add_resource/remotes/draft2020-12/remote3.json', 't/tests/add_resource/remotes/draft6/remote5.json', 't/tests/add_resource/remotes/remote1.json', 't/tests/add_resource/remotes/subfolder/remote2.json', 't/tests/bad/invalid-schema.json', 't/tests/empty/keep', 't/tests/include_optional/extra/foo.json', 't/tests/include_optional/foo.json', 't/tests/include_optional/optional/alpha.json', 't/tests/include_optional/optional/beta.json', 't/tests/include_optional/zulu.json', 't/tests/mutation/hash.json', 't/tests/simple-booleans/bar.json', 't/tests/simple-booleans/foo.json', 't/tests/skip_dir/main.json', 't/tests/skip_dir/optional/alpha/test.json', 't/tests/skip_dir/optional/beta/test.json', 't/tests/skip_dir/optional/betadyne/test.json', 't/tests/skip_dir/optional/gamma/test.json', 't/tests/subset/bar.json', 't/tests/subset/baz.json', 't/tests/subset/foo.json', 't/tests/unicode/unicode.json', 'xt/author/00-compile.t', 'xt/author/clean-namespaces.t', 'xt/author/distmeta.t', 'xt/author/eol.t', 'xt/author/kwalitee.t', 'xt/author/live-data-sanity.t', 'xt/author/minimum-version.t', 'xt/author/mojibake.t', 'xt/author/no-tabs.t', 'xt/author/pod-coverage.t', 'xt/author/pod-spell.t', 'xt/author/pod-syntax.t', 'xt/author/portability.t', 'xt/release/changes_has_content.t', 'xt/release/cpan-changes.t' ); eol_unix_ok($_, { trailing_whitespace => 1 }) foreach @files; done_testing; 10-exception.t100640000766000024 504615240201330 20745 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::JSON::Schema::Acceptance; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use lib 't/lib'; use Helper; my $accepter = Test::JSON::Schema::Acceptance->new(test_dir => 't/tests/bad'); my $events = intercept( sub { $accepter->acceptance( validate_data => sub ($schema, $data) { die 'ach I am slain' if $data->{exception}; return 1; }, tests => { file => 'invalid-schema.json' }, ); } ); cmp_result( [ map exists $_->{parent} ? { details => $_->{assert}{details}, pass => $_->{assert}{pass}, children => [ map exists $_->{assert} ? $_->{assert} : (), @{$_->{parent}{children}} ], } : (), map $_->facet_data, @$events ], [ { details => 'invalid-schema.json: "exception handling" - "no exception; expect invalid: want test failure"', pass => 0, children => [ superhashof({ details => 'evaluation result is incorrect', pass => 0, }), ], }, { details => 'invalid-schema.json: "exception handling" - "no exception; expect valid: want test pass"', pass => 1, children => [ superhashof({ details => 'test passes: data is valid: true', pass => 1, }), ], }, { details => 'invalid-schema.json: "exception handling" - "exception; expect invalid: want test failure (via exception)"', pass => 0, children => [ superhashof({ details => re(qr/^died: ach I am slain /), pass => 0, }), ], }, { details => 'invalid-schema.json: "exception handling" - "exception; expect valid: want test failure (via exception)"', pass => 0, children => [ superhashof({ details => re(qr/^died: ach I am slain /), pass => 0, }), ], }, ], 'four tests, all with correct results', ); done_testing; 08-todo-tests.t100640000766000024 1353115240201330 21101 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::JSON::Schema::Acceptance; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use lib 't/lib'; use SchemaParser; use Helper; my $accepter = Test::JSON::Schema::Acceptance->new(test_dir => 't/tests/subset'); my $parser = SchemaParser->new; # bar contains only failing tests (3x3) # baz contains only passing tests (3) # foo contains only passing tests (3x3) foreach my $test ( # match tests in this file { todo_count => 9, todo_tests => [ { file => 'foo.json' } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 0, fail => 9 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, # match tests in these files { todo_count => 9+3, todo_tests => [ { file => [ 'foo.json', 'baz.json' ] } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 0, fail => 9 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, # match tests in any file, with this group description { todo_count => 3+3, todo_tests => [ { group_description => 'false schema' } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 3, fail => 6 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, # match tests in this file with this group description { todo_count => 3, todo_tests => [ { file => 'foo.json', group_description => 'false schema' } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 0, fail => 9 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, # match tests in this file with these group descriptions { todo_count => 3+3, todo_tests => [ { file => 'foo.json', group_description => [ 'true schema', 'false schema' ] } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 0, fail => 9 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, # match tests in this file with this group description and test description { todo_count => 1, todo_tests => [ { file => 'foo.json', group_description => 'true schema', test_description => 'boolean false', } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 0, fail => 9 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, # match tests in this file with this group description and these test descriptions { todo_count => 2, todo_tests => [ { file => 'bar.json', group_description => 'false schema', test_description => [ 'boolean true', 'boolean false' ], } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 2, fail => 7 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, # match tests in any file with this group description and this test description { todo_count => 1+1+1, todo_tests => [ { group_description => 'empty schema', test_description => [ 'boolean true' ], } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 1, fail => 8 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, # match tests in any file with any group description with this test description { todo_count => 3+3+1, todo_tests => [ { test_description => [ 'boolean true' ] } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 3, fail => 6 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, # match tests with multiple specifications at once { todo_count => 9+3, todo_tests => [ { file => 'foo.json' }, { group_description => 'true schema' } ], results => [ { file => str('bar.json'), pass => 0, todo_fail => 3, fail => 6 }, { file => str('baz.json'), pass => 3, todo_fail => 0, fail => 0 }, { file => str('foo.json'), pass => 9, todo_fail => 0, fail => 0 }, ], }, ) { my $todo_count = delete $test->{todo_count}; my $events = intercept( sub { $accepter->acceptance( validate_data => sub ($schema, $data) { return $parser->validate_data($data, $schema); }, %$test, ); } ); is(scalar(grep $_->isa('Test2::Event::Skip'), @$events), 0, 'skipped and todo_skipped no tests'); is( scalar( grep exists $_->{assert} && (grep $_->{tag} eq 'TODO', @{$_->{amnesty} // []}), map $_->facet_data, @$events ), $todo_count, 'right number of tests are marked TODO ('.$todo_count.')', ); cmp_result( $accepter->results, $test->{results}, 'result data was populated', ); } done_testing; 02-constructor.t100640000766000024 377215240201330 21341 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::V0 -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test2::Tools::Exception; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use Test::JSON::Schema::Acceptance; is( Test::JSON::Schema::Acceptance->new->specification, 'draft2020-12', '"specification" defaults to latest draft' ); is( Test::JSON::Schema::Acceptance->new(specification => 'latest')->specification, 'draft2020-12', 'latest becomes draft2020-12', ); foreach my $version (3,4,6,7) { is( Test::JSON::Schema::Acceptance->new($version)->specification, 'draft'.$version, '->new('.$version.') becomes ->new(specification => \'draft'.$version.'\')', ); is( Test::JSON::Schema::Acceptance->new(specification => 'draft'.$version)->specification, 'draft'.$version, '->new(specification => '.$version.') passed through normally', ); } foreach my $version ('a', 2, 'foo') { like( dies { Test::JSON::Schema::Acceptance->new($version) }, qr/Value "draft$version" did not pass type constraint/, 'does not accept version = '.$version, ); } like( dies { Test::JSON::Schema::Acceptance->new(test_dir => 'foo') }, qr/test_dir does not exist: .*foo/, 'explicit test_dir argument is checked', ); SKIP: { skip 'this test can only be run in the git repository', 1 if not -d '.git'; is(readlink('share/tests/latest'), 'draft2020-12', 'latest draft is still 2020-12') or warn 'a new draft has been released! update the "latest" munging in BUILDARGS!'; } done_testing; empty000755000766000024 015240201330 20503 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/testskeep100644000766000024 015240201330 21420 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/empty14-add-resource.t100640000766000024 360715240201330 21331 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::JSON::Schema::Acceptance; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use JSON::PP; use lib 't/lib'; use Helper; my %additional_resources; my $accepter = Test::JSON::Schema::Acceptance->new( test_dir => 't/tests/add_resource', additional_resources => 't/tests/add_resource/remotes', include_optional => 0, supported_specifications => [ qw(draft2019-09 draft2020-12) ], ); $accepter->acceptance( validate_data => sub ($schema, $data) { return 1; # all schemas evaluate to true here }, add_resource => sub ($uri, $schema, %options) { $additional_resources{$uri} = [ $schema, \%options ]; }, ); cmp_result( \%additional_resources, { 'http://localhost:1234/remote1.json' => [ { '$defs' => { foo => bool(1) } }, {} ], 'http://localhost:1234/subfolder/remote2.json' => [ { '$defs' => { bar => bool(0) } }, {} ], 'http://localhost:1234/draft2020-12/remote3.json' => [ { '$defs' => { baz => bool(0) } }, { specification_version => 'draft2020-12' } ], 'http://localhost:1234/draft2019-09/remote4.json' => [ { '$defs' => { quux => bool(0) } }, { specification_version => 'draft2019-09' } ], # but not http://localhost:1234/draft6/remote5.json }, 'user-supplied subref is called with additional resources found in test directory', ); done_testing; no-tabs.t100644000766000024 455515240201330 21576 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/authoruse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.15 use Test::More 0.88; use Test::NoTabs; my @files = ( 'examples/run_all_tests', 'lib/Test/JSON/Schema/Acceptance.pm', 't/00-report-prereqs.dd', 't/00-report-prereqs.t', 't/01-basic.t', 't/02-constructor.t', 't/03-validate_data.t', 't/04-validate_json_string.t', 't/05-test-descriptions.t', 't/06-subset-of-tests.t', 't/07-skip-tests-deprecated.t', 't/08-todo-tests.t', 't/09-unicode.t', 't/10-exception.t', 't/11-additional-resources.t', 't/12-include-optional.t', 't/13-empty-test-dir.t', 't/14-add-resource.t', 't/15-mutation.t', 't/16-skip_dir.t', 't/99-sanity.t', 't/lib/Helper.pm', 't/lib/SchemaParser.pm', 't/tests/add_resource/foo.json', 't/tests/add_resource/remotes/draft2019-09/remote4.json', 't/tests/add_resource/remotes/draft2020-12/remote3.json', 't/tests/add_resource/remotes/draft6/remote5.json', 't/tests/add_resource/remotes/remote1.json', 't/tests/add_resource/remotes/subfolder/remote2.json', 't/tests/bad/invalid-schema.json', 't/tests/empty/keep', 't/tests/include_optional/extra/foo.json', 't/tests/include_optional/foo.json', 't/tests/include_optional/optional/alpha.json', 't/tests/include_optional/optional/beta.json', 't/tests/include_optional/zulu.json', 't/tests/mutation/hash.json', 't/tests/simple-booleans/bar.json', 't/tests/simple-booleans/foo.json', 't/tests/skip_dir/main.json', 't/tests/skip_dir/optional/alpha/test.json', 't/tests/skip_dir/optional/beta/test.json', 't/tests/skip_dir/optional/betadyne/test.json', 't/tests/skip_dir/optional/gamma/test.json', 't/tests/subset/bar.json', 't/tests/subset/baz.json', 't/tests/subset/foo.json', 't/tests/unicode/unicode.json', 'xt/author/00-compile.t', 'xt/author/clean-namespaces.t', 'xt/author/distmeta.t', 'xt/author/eol.t', 'xt/author/kwalitee.t', 'xt/author/live-data-sanity.t', 'xt/author/minimum-version.t', 'xt/author/mojibake.t', 'xt/author/no-tabs.t', 'xt/author/pod-coverage.t', 'xt/author/pod-spell.t', 'xt/author/pod-syntax.t', 'xt/author/portability.t', 'xt/release/changes_has_content.t', 'xt/release/cpan-changes.t' ); notabs_ok($_) foreach @files; done_testing; 03-validate_data.t100640000766000024 302015240201330 21521 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::Deep qw(!array !hash);; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use Test::JSON::Schema::Acceptance; use lib 't/lib'; use SchemaParser; # this is similar to t/01-basic.t only it uses the new option to pass a "validate as inflated # data" subref. my $accepter = Test::JSON::Schema::Acceptance->new(specification => 'draft7'); my $parser = SchemaParser->new; my $events = intercept( sub { $accepter->acceptance(validate_data => sub ($schema, $data) { return $parser->validate_data($data, $schema); }); } ); my @bool_tests = grep $_->isa('Test2::Event::Ok') && $_->name =~ /boolean type matches booleans/, @$events; is(@bool_tests, 10, 'found all the tests that check for boolean type'); cmp_deeply( \@bool_tests, array_each(methods( pass => 1, effective_pass => 1, )), 'tests pass for checking schemas that test for boolean type', ); done_testing; distmeta.t100644000766000024 22215240201330 22010 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/author#!perl # This file was automatically generated by Dist::Zilla::Plugin::MetaTests use strict; use warnings; use Test::CPAN::Meta; meta_yaml_ok(); kwalitee.t100644000766000024 27515240201330 22013 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/author# this test was generated with Dist::Zilla::Plugin::Test::Kwalitee 2.13 use strict; use warnings; use Test::More 0.88; use Test::Kwalitee 1.21 'kwalitee_ok'; kwalitee_ok(); done_testing; mojibake.t100644000766000024 15115240201330 21760 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/author#!perl use strict; use warnings qw(all); use Test::More; use Test::Mojibake; all_files_encoding_ok(); CONTRIBUTING.md100640000766000024 1737715240201330 21466 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share# Contributing to the Suite All contributors to the test suite should familiarize themselves with this document. Both pull requests *and* reviews are welcome from any and all, regardless of their "formal" relationship (or lack thereof) with the JSON Schema organization. ## Commit Access Any existing members with commit access to the repository may nominate new members to get access, or a contributor may request access for themselves. Access generally should be granted liberally to anyone who has shown positive contributions to the repository or organization. All who are active in other parts of the JSON Schema organization should get access to this repository as well. Access for a former contributor may be removed after long periods of inactivity. ## Reviewing a Pull Request Pull requests may (and often should) be reviewed for approval by a single reviewer whose job it is to confirm the change is specified, correct, minimal and follows general style in the repository. A reviewer who does not feel comfortable signing off on the correctness of a change is free to comment without explicit approval. Other contributors are also encouraged to comment on pull requests whenever they have feedback, even if another contributor has submitted review comments. A submitter may also choose to request additional feedback if they feel the change is particularly technical or complex, or requires expertise in a particular area of the specification. If additional reviewers have participated in a pull request, the submitter should not rely on a single reviewer's approval without some form of confirmation that all participating reviewers are satisfied. On the other hand, whenever possible, reviewers who have minor comments should explicitly mention that they are OK with the PR being merged after or potentially *without* addressing them. When submitting a change, explicitly soliciting a specific reviewer explicitly is currently not needed, as the entire review team is generally pinged for pull requests. Nevertheless, submitters may choose to do so if they want specific review from an individual, or if a pull request is sitting without review for a period of time. For the latter scenario, leaving a comment on the pull request or in Slack is also reasonable. Confirming that a pull request runs successfully on an implementation is *not* generally sufficient to merge, though it is helpful evidence, and highly encouraged. Proposed changes should be confirmed by reading the specification and ensuring the behavior is specified and correct. Submitters are encouraged to link to the specification whenever doing so will be helpful to a reviewer. A reviewer may indicate that the proposed changes are too large for them to review. In such cases the submitter may wait for another reviewer who is comfortable reviewing the changes, but is generally strongly encouraged to split up the changes into multiple smaller ones. Reviewing pull requests is an extremely valuable contribution! New reviewers are highly encouraged to attempt to review pull requests even if they do not have experience doing so, and to themselves expect feedback from the submitter or from other reviewers on improving the quality of their reviews. In such cases the submitter should use their judgement to decide whether the new contributor's review is sufficient for merging, or whether they should wait for further feedback. ## Merging Changes Approval of a change may be given using the GitHub UI or via a comment reply. Once it has been given, the pull request may be merged at any point. To merge a pull request, *either* the submitter or reviewer must have commit access to the repo (though this is also partially simply because that party's access is needed to merge). *Either* the submitter or reviewer may be the one to do the actual merge (whether via hitting the merge button or externally to the GitHub UI). If the submitter wishes to make final changes after a review they should attempt to say so (and thereby take responsibility for merging themselves). Contributors *should not* leave pull requests stagnant whenever possible, and particularly after they have been reviewed and approved. Changes should not be merged while continuous integration is failing. Failures typically are not spurious and indicate issues with the changes. In the event the change is indeed correct and CI is flaky or itself incorrect, effort should be made by the submitter, reviewer, or a solicited other contributor to fix the CI before the change is made. Improvements to CI itself are very valuable as well, and reviewers who find repeated issues with proposed changes are highly encouraged to improve CI for any changes which may be automatically detected. Changes should be merged *as-is* and not squashed into single commits. Submitters are free to structure their commits as they wish throughout the review process, or in some cases to restructure the commits after a review is finished and they are merging the branch, but are not required to do so, and reviewers should not do so on behalf of the submitter without being requested to do so. Contributors with commit access may choose to merge pull requests (or commit directly) to the repository for trivial changes. The definition of "trivial" is intentionally slightly ambiguous, and intended to be followed by good-faith contributors. An example of a trivial change is fixing a typo in the README, or bumping a version of a dependency used by the continuous integration suite. If another contributor takes issue with a change merged in this fashion, simply commenting politely that they have concerns about the change (either in an issue or directly) is the right remedy. ## Writing Good Tests Be familiar with the test structure and assumptions documented in the [README](README.md). Test cases should include both valid and invalid instances which exercise the test case schema whenever possible. Exceptions include schemas where only one result is ever possible (such as the `false` schema, or ones using keywords which only produce annotations). Schemas should be *minimal*, by which we mean that they should contain only those keywords which are being tested by the specific test case, and should not contain complex values when simpler ones would do. The same applies to instances -- prefer simpler instances to more complex ones, and when testing string instances, consider using ones which are self-descriptive whenever it aids readability. Comments can and should be used to explain tests which are unclear or complex. The `comment` field is present both for test cases and individual tests for this purpose. Links to the relevant specification sections are also encouraged, though they can be tedious to maintain from one version to the next. When adding test cases, they should be added to all past (and future) versions of the specification which they apply to, potentially with minor modifications (e.g. changing `$id` to `id` or accounting for `$ref` not allowing siblings on older drafts). Changing the schema used in a particular test case should be done with extra caution, though it is not formally discouraged if the change simplifies the schema. Contributors should not generally append *additional* behavior to existing test case schemas, unless doing so has specific justification. Instead, new cases should be added, as it can often be subtle to predict which precise parts of a test case are unique. Adding additional *tests* however (instances) is of course safe and encouraged if gaps are found. Tests which are *incorrect* (against the specification) should be prioritized for fixing or removal whenever possible, as their continued presence in the suite can create confusion for downstream users of the suite. ## Proposing Changes to the Policy This policy itself is of course changeable, and changes to it may be proposed in a discussion. 13-empty-test-dir.t100640000766000024 236515240201330 21642 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::JSON::Schema::Acceptance; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use lib 't/lib'; use SchemaParser; my $accepter = Test::JSON::Schema::Acceptance->new( test_dir => 't/tests/empty', include_optional => 1, ); is(@{$accepter->_test_data}, 0, 'an empty test directory means no test data'); my $parser = SchemaParser->new; my $events = intercept( sub { $accepter->acceptance(sub ($schema, $data) { return $parser->validate_data($data, $schema); }); } ); is( scalar(grep exists $_->{assert}, map $_->facet_data, @$events), 0, 'no tests are run when test directory is empty', ); done_testing; SchemaParser.pm100640000766000024 302515240201330 22020 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/libuse strict; use warnings; package SchemaParser; use 5.020; use stable 0.031 'postderef'; use experimental 'signatures'; use feature 'state'; use builtin::compat 'blessed'; sub new { return bless {}, __PACKAGE__; } # this is a very simple schema validator. # It only understands boolean schemas, or schemas that say {"type":"boolean"}. # Unrecognized keywords will be treated as the empty schema (i.e. a pass). sub validate_data ($self, $data, $schema) { return $schema if is_bool($schema); die 'unrecognized schema type '.ref $schema if ref $schema ne 'HASH'; return 1 if not exists $schema->{type} or ref $schema->{type} eq 'HASH'; return is_bool($data) ? 1 : 0 if $schema->{type} eq 'boolean'; return 1; } sub validate_json_string ($self, $data_string, $schema) { state $decoder = (Mojo::JSON::JSON_XS ? 'Cpanel::JSON::XS' : 'JSON::PP')->new->utf8(1)->allow_nonref(1); return $self->validate_data($decoder->decode($data_string), $schema); } # lifted from JSON::Schema::Modern::Utilities, which lifted it from JSON::MaybeXS # note: unlike builtin::compat::is_bool on older perls, we do not accept # dualvar(0,"") or dualvar(1,"1") because JSON::PP and Cpanel::JSON::XS # do not encode these as booleans. use constant HAVE_BUILTIN => "$]" >= 5.035010; use if HAVE_BUILTIN, experimental => 'builtin'; sub is_bool ($value) { HAVE_BUILTIN and builtin::is_bool($value) or !!blessed($value) and ($value->isa('JSON::PP::Boolean') or $value->isa('Cpanel::JSON::XS::Boolean') or $value->isa('JSON::XS::Boolean')); } 1; pod-spell.t100644000766000024 54515240201330 22105 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/authoruse strict; use warnings; use Test::More; # generated by Dist::Zilla::Plugin::Test::PodSpelling 2.007006 use Test::Spelling 0.17; use Pod::Wordlist; add_stopwords(); all_pod_files_spelling_ok( qw( examples lib script t xt ) ); __DATA__ Acceptance Ben Daniel Etheridge Hutton JSON Karen Perrett Schema Test dp13 ether irc lib relequest relequestual 00-report-prereqs.t100644000766000024 1406415240201330 21764 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t#!perl use strict; use warnings; # This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.029 use Test::More tests => 1; use ExtUtils::MakeMaker; use File::Spec; # from $version::LAX my $lax_version_re = qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )? | (?:\.[0-9]+) (?:_[0-9]+)? ) | (?: v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )? | (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)? ) )/x; # hide optional CPAN::Meta modules from prereq scanner # and check if they are available my $cpan_meta = "CPAN::Meta"; my $cpan_meta_pre = "CPAN::Meta::Prereqs"; my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic # Verify requirements? my $DO_VERIFY_PREREQS = 1; sub _max { my $max = shift; $max = ( $_ > $max ) ? $_ : $max for @_; return $max; } sub _merge_prereqs { my ($collector, $prereqs) = @_; # CPAN::Meta::Prereqs object if (ref $collector eq $cpan_meta_pre) { return $collector->with_merged_prereqs( CPAN::Meta::Prereqs->new( $prereqs ) ); } # Raw hashrefs for my $phase ( keys %$prereqs ) { for my $type ( keys %{ $prereqs->{$phase} } ) { for my $module ( keys %{ $prereqs->{$phase}{$type} } ) { $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module}; } } } return $collector; } my @include = qw( Encode File::Temp JSON::PP Module::Runtime Sub::Name YAML::PP YAML::XS autodie JSON::PP Cpanel::JSON::XS JSON::XS Mojolicious builtin builtin::Backport ); my @exclude = qw( ); # Add static prereqs to the included modules list my $static_prereqs = do './t/00-report-prereqs.dd'; # Merge all prereqs (either with ::Prereqs or a hashref) my $full_prereqs = _merge_prereqs( ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ), $static_prereqs ); # Add dynamic prereqs to the included modules list (if we can) my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml'; my $cpan_meta_error; if ( $source && $HAS_CPAN_META && (my $meta = eval { CPAN::Meta->load_file($source) } ) ) { $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs); } else { $cpan_meta_error = $@; # capture error from CPAN::Meta->load_file($source) $source = 'static metadata'; } my @full_reports; my @dep_errors; my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs; # Add static includes into a fake section for my $mod (@include) { $req_hash->{other}{modules}{$mod} = 0; } for my $phase ( qw(configure build test runtime develop other) ) { next unless $req_hash->{$phase}; next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING}); for my $type ( qw(requires recommends suggests conflicts modules) ) { next unless $req_hash->{$phase}{$type}; my $title = ucfirst($phase).' '.ucfirst($type); my @reports = [qw/Module Want Have/]; for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) { next if grep { $_ eq $mod } @exclude; my $want = $req_hash->{$phase}{$type}{$mod}; $want = "undef" unless defined $want; $want = "any" if !$want && $want == 0; if ($mod eq 'perl') { push @reports, ['perl', $want, $]]; next; } my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required"; my $file = $mod; $file =~ s{::}{/}g; $file .= ".pm"; my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC; if ($prefix) { my $have = MM->parse_version( File::Spec->catfile($prefix, $file) ); $have = "undef" unless defined $have; push @reports, [$mod, $want, $have]; if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) { if ( $have !~ /\A$lax_version_re\z/ ) { push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)"; } elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) { push @dep_errors, "$mod version '$have' is not in required range '$want'"; } } } else { push @reports, [$mod, $want, "missing"]; if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) { push @dep_errors, "$mod is not installed ($req_string)"; } } } if ( @reports ) { push @full_reports, "=== $title ===\n\n"; my $ml = _max( map { length $_->[0] } @reports ); my $wl = _max( map { length $_->[1] } @reports ); my $hl = _max( map { length $_->[2] } @reports ); if ($type eq 'modules') { splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl]; push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports; } else { splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl]; push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports; } push @full_reports, "\n"; } } } if ( @full_reports ) { diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports; } if ( $cpan_meta_error || @dep_errors ) { diag "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n"; } if ( $cpan_meta_error ) { my ($orig_source) = grep { -f } 'MYMETA.json', 'MYMETA.yml'; diag "\nCPAN::Meta->load_file('$orig_source') failed with: $cpan_meta_error\n"; } if ( @dep_errors ) { diag join("\n", "\nThe following REQUIRED prerequisites were not satisfied:\n", @dep_errors, "\n" ); } pass('Reported prereqs'); # vim: ts=4 sts=4 sw=4 et: test-schema.json100640000766000024 1313515240201330 22331 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://json-schema.org/tests/test-schema", "description": "A schema for files contained within this suite", "type": "array", "minItems": 1, "items": { "description": "An individual test case, containing multiple tests of a single schema's behavior", "type": "object", "required": [ "description", "schema", "tests" ], "properties": { "description": { "description": "The test case description", "type": "string" }, "comment": { "description": "Any additional comments about the test case", "type": "string" }, "schema": { "description": "A valid JSON Schema (one written for the corresponding version directory that the file sits within)." }, "tests": { "description": "A set of related tests all using the same schema", "type": "array", "items": { "$ref": "#/$defs/test" }, "minItems": 1 }, "specification":{ "description": "A reference to a specification document which defines the behavior tested by this test case. Typically this should be a JSON Schema specification document, though in cases where the JSON Schema specification points to another RFC it should contain *both* the portion of the JSON Schema specification which indicates what RFC (and section) to follow as *well* as information on where in that specification the behavior is specified.", "type": "array", "minItems": 1, "uniqueItems": true, "items":{ "properties": { "core": { "description": "A section in official JSON Schema core drafts", "url": "https://json-schema.org/specification-links", "pattern": "^[0-9a-zA-Z]+(\\.[0-9a-zA-Z]+)*$", "type":"string" }, "validation": { "description": "A section in official JSON Schema validation drafts", "url": "https://json-schema.org/specification-links", "pattern": "^[0-9a-zA-Z]+(\\.[0-9a-zA-Z]+)*$", "type":"string" }, "ecma262": { "description": "A section in official ECMA 262 specification for defining regular expressions", "url": "https://262.ecma-international.org/", "pattern": "^[0-9a-zA-Z]+(\\.[0-9a-zA-Z]+)*$", "type":"string" }, "perl5": { "description": "A section name in Perl documentation for defining regular expressions", "url": "https://perldoc.perl.org/perlre", "type":"string" }, "quote": { "description": "Quote describing the test case", "type":"string" } }, "patternProperties": { "^rfc\\d+$": { "description": "A section in official RFC for the given rfc number", "url": "https://www.rfc-editor.org/", "pattern": "^[0-9a-zA-Z]+(\\.[0-9a-zA-Z]+)*$", "type":"string" }, "^iso\\d+$": { "description": "A section in official ISO for the given iso number", "pattern": "^[0-9a-zA-Z]+(\\.[0-9a-zA-Z]+)*$", "type": "string" } }, "additionalProperties": { "type": "string" }, "minProperties": 1, "propertyNames": { "oneOf": [ { "pattern": "^((iso)|(rfc))[0-9]+$" }, { "enum": [ "core", "validation", "ecma262", "perl5", "quote" ] } ] } } } }, "additionalProperties": false }, "$defs": { "test": { "description": "A single test", "type": "object", "required": [ "description", "data", "valid" ], "properties": { "description": { "description": "The test description, briefly explaining which behavior it exercises", "type": "string" }, "comment": { "description": "Any additional comments about the test", "type": "string" }, "data": { "description": "The instance which should be validated against the schema in \"schema\"." }, "valid": { "description": "Whether the validation process of this instance should consider the instance valid or not", "type": "boolean" } }, "additionalProperties": false } } } examples000755000766000024 015240201330 17556 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038run_all_tests100644000766000024 144515240201330 22523 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/examples# vim: set ft=perl ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; no if "$]" >= 5.031009, feature => 'indirect'; # this line is only needed of Test::JSON::Schema::Acceptance is not installed (we will need to find # the test suite data in the local share/) use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use Test2::Tools::Basic; use Test::JSON::Schema::Acceptance; use lib 't/lib'; use SchemaParser; my $accepter = Test::JSON::Schema::Acceptance->new( specification => 'draft2020-12', verbose => 1, include_optional => 1, ); my $parser = SchemaParser->new; $accepter->acceptance( validate_data => sub { my ($schema, $input_data) = @_; return $parser->validate_data($input_data, $schema); }, ); Test2::Tools::Basic::done_testing; 06-subset-of-tests.t100640000766000024 676115240201330 22030 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::JSON::Schema::Acceptance; use List::Util 'sum'; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use lib 't/lib'; use SchemaParser; use Helper; my $accepter = Test::JSON::Schema::Acceptance->new(test_dir => 't/tests/subset'); my $parser = SchemaParser->new; # bar contains only failing tests (3x3) # baz contains only passing tests (3) # foo contains only passing tests (3x3) # count indicates the number of tests run from each of: bar.json, baz.json, foo.json foreach my $test ( # run tests in this file { count => [0,0,9], tests => { file => 'foo.json' } }, # run tests in these files { count => [0,3,9], tests => { file => [ 'foo.json', 'baz.json' ] } }, # run tests in any file, with this group description { count => [3,'0 but true',3], tests => { group_description => 'false schema' } }, # run tests in this file with this group description { count => [0,0,3], tests => { file => 'foo.json', group_description => 'false schema' } }, # run tests in this file with these group descriptions { count => [0,0,3+3], tests => { file => 'foo.json', group_description => [ 'true schema', 'false schema' ], }, }, # run tests in this file with this group description and test description { count => [0,0,1], tests => { file => 'foo.json', group_description => 'true schema', test_description => 'boolean false', } }, # run tests in this file with this group description and these test descriptions { count => [2,0,0], tests => { file => 'bar.json', group_description => 'false schema', test_description => [ 'boolean true', 'boolean false' ], } }, # run tests in any file with this group description and this test description { count => [1,1,1], tests => { group_description => 'empty schema', test_description => [ 'boolean true' ], } }, # run tests in any file with any group description with this test description { count => [3,1,3], tests => { test_description => [ 'boolean true' ], } }, ) { my ($count, $test_options) = @{$test}{qw(count tests)}; my $events = intercept( # Test2::API::InterceptResult sub { $accepter->acceptance( validate_data => sub ($schema, $data) { return $parser->validate_data($data, $schema); }, tests => $test_options, ); } ); my @tests = grep $_->isa('Test2::Event::Ok'), @$events; is(scalar(@tests), sum(@$count), 'ran ('.join('+',@$count).') tests'); cmp_result( $accepter->results, [ map +( $count->[$_] ? +{ file => str([ qw(bar.json baz.json foo.json) ]->[$_]), pass => ($_ ? 0+$count->[$_] : 0), todo_fail => 0, fail => ($_ ? 0 : 0+$count->[$_]), } : () ), (0..2) ], 'result data was populated', ) or diag "all failing tests:\n", join("\n", failing_test_names($events)); } done_testing; 00-compile.t100644000766000024 522215240201330 22070 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/authoruse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::Compile 2.059 use Test::More 0.94; plan tests => 3; my @module_files = ( 'Test/JSON/Schema/Acceptance.pm' ); my @scripts = ( 'examples/run_all_tests' ); # no fake home requested my @switches = ( -d 'blib' ? '-Mblib' : '-Ilib', ); use File::Spec; use IPC::Open3; use IO::Handle; open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!"; my @warnings; for my $lib (@module_files) { # see L my $stderr = IO::Handle->new; diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'}.$str.q{'} } $^X, @switches, '-e', "require q[$lib]")) if $ENV{PERL_COMPILE_TEST_DEBUG}; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]"); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$lib loaded ok"); shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ and not eval { +require blib; blib->VERSION('1.01') }; if (@_warnings) { warn @_warnings; push @warnings, @_warnings; } } foreach my $file (@scripts) { SKIP: { open my $fh, '<', $file or warn("Unable to open $file: $!"), next; my $line = <$fh>; close $fh and skip("$file isn't perl", 1) unless $line =~ /^#!\s*(?:\S*(?:env )?perl\S*)((?:\s+-\w*)*)(?:\s*#.*)?$/; @switches = (@switches, split(' ', $1)) if $1; close $fh and skip("$file uses -T; not testable with PERL5LIB", 1) if grep $_ eq '-T', @switches and $ENV{PERL5LIB}; my $stderr = IO::Handle->new; diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'}.$str.q{'} } $^X, @switches, '-c', $file)) if $ENV{PERL_COMPILE_TEST_DEBUG}; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-c', $file); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$file compiled ok"); shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ and not eval { +require blib; blib->VERSION('1.01') }; # in older perls, -c output is simply the file portion of the path being tested if (@_warnings = grep !/\bsyntax OK$/, grep { chomp; $_ ne (File::Spec->splitpath($file))[2] } @_warnings) { warn @_warnings; push @warnings, @_warnings; } } } is(scalar(@warnings), 0, 'no warnings found') or diag 'got warnings: ', explain(\@warnings); BAIL_OUT("Compilation problems") if !Test::More->builder->is_passing; pod-syntax.t100644000766000024 25115240201330 22306 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/author#!perl # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests use strict; use warnings; use Test::More; use Test::Pod 1.41; all_pod_files_ok(); 00-report-prereqs.dd100644000766000024 2707315240201330 22114 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/tdo { my $x = { 'configure' => { 'requires' => { 'ExtUtils::MakeMaker' => '0', 'File::ShareDir::Install' => '0.06', 'Text::ParseWords' => '0', 'perl' => '5.020' } }, 'develop' => { 'recommends' => { 'Dist::Zilla::PluginBundle::Author::ETHER' => '0.174', 'Dist::Zilla::PluginBundle::Git::VersionManager' => '0.007' }, 'requires' => { 'Encode' => '0', 'ExtUtils::HasCompiler' => '0.014', 'IO::Handle' => '0', 'IPC::Open3' => '0', 'Pod::Wordlist' => '0', 'Test2::V0' => '0', 'Test2::Warnings' => '0', 'Test::CPAN::Changes' => '0.19', 'Test::CPAN::Meta' => '0', 'Test::CleanNamespaces' => '0.15', 'Test::EOL' => '0', 'Test::File::ShareDir' => '0', 'Test::Kwalitee' => '1.21', 'Test::MinimumVersion' => '0', 'Test::Mojibake' => '0', 'Test::NoTabs' => '0', 'Test::Pod' => '1.41', 'Test::Pod::Coverage::TrustMe' => '0.002001', 'Test::Portability::Files' => '0', 'Test::Spelling' => '0.17' } }, 'runtime' => { 'requires' => { 'Feature::Compat::Try' => '0', 'File::ShareDir' => '0', 'Git::Wrapper' => '0', 'JSON::PP' => '4.11', 'List::Util' => '1.33', 'Mojolicious' => '7.87', 'Moo' => '0', 'MooX::TypeTiny' => '0.002002', 'Path::Tiny' => '0.069', 'Test2::Todo' => '0', 'Types::Common::Numeric' => '0', 'Types::Standard' => '1.016003', 'autovivification' => '0', 'experimental' => '0', 'if' => '0', 'namespace::clean' => '0', 'perl' => '5.020', 'stable' => '0.031', 'strictures' => '2' }, 'suggests' => { 'Class::XSAccessor' => '0', 'Cpanel::JSON::XS' => '0', 'Type::Tiny::XS' => '0' } }, 'test' => { 'recommends' => { 'CPAN::Meta' => '2.120900' }, 'requires' => { 'ExtUtils::MakeMaker' => '0', 'JSON::PP' => '4.11', 'Test2::Suite' => '0.000131', 'Test2::Tools::Exception' => '0', 'Test2::V0' => '0', 'Test2::Warnings' => '0', 'Test::Deep' => '0', 'Test::File::ShareDir' => '0', 'Test::Simple' => '1.302176', 'builtin::compat' => '0', 'perl' => '5.020' } }, 'x_Dist_Zilla' => { 'requires' => { 'Dist::Zilla' => '5', 'Dist::Zilla::Plugin::Authority' => '1.009', 'Dist::Zilla::Plugin::AutoMetaResources' => '0', 'Dist::Zilla::Plugin::AutoPrereqs' => '5.038', 'Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional' => '0.004', 'Dist::Zilla::Plugin::CheckIssues' => '0', 'Dist::Zilla::Plugin::CheckMetaResources' => '0', 'Dist::Zilla::Plugin::CheckPrereqsIndexed' => '0.019', 'Dist::Zilla::Plugin::CheckSelfDependency' => '0', 'Dist::Zilla::Plugin::CheckStrictVersion' => '0', 'Dist::Zilla::Plugin::ConfirmRelease' => '0', 'Dist::Zilla::Plugin::CopyFilesFromRelease' => '0', 'Dist::Zilla::Plugin::DynamicPrereqs' => '0.040', 'Dist::Zilla::Plugin::EnsureLatestPerl' => '0', 'Dist::Zilla::Plugin::FileFinder::ByName' => '0', 'Dist::Zilla::Plugin::GenerateFile' => '0', 'Dist::Zilla::Plugin::GenerateFile::FromShareDir' => '0', 'Dist::Zilla::Plugin::Git::Check' => '0', 'Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch' => '0.004', 'Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts' => '0', 'Dist::Zilla::Plugin::Git::Commit' => '2.020', 'Dist::Zilla::Plugin::Git::Contributors' => '0.029', 'Dist::Zilla::Plugin::Git::Describe' => '0.004', 'Dist::Zilla::Plugin::Git::GatherDir' => '2.016', 'Dist::Zilla::Plugin::Git::Push' => '0', 'Dist::Zilla::Plugin::Git::Remote::Check' => '0', 'Dist::Zilla::Plugin::Git::Tag' => '0', 'Dist::Zilla::Plugin::GitHub::Update' => '0.40', 'Dist::Zilla::Plugin::GithubMeta' => '0.54', 'Dist::Zilla::Plugin::InstallGuide' => '1.200005', 'Dist::Zilla::Plugin::Keywords' => '0.004', 'Dist::Zilla::Plugin::License' => '5.038', 'Dist::Zilla::Plugin::MakeMaker' => '0', 'Dist::Zilla::Plugin::Manifest' => '0', 'Dist::Zilla::Plugin::MetaConfig' => '0', 'Dist::Zilla::Plugin::MetaJSON' => '0', 'Dist::Zilla::Plugin::MetaNoIndex' => '0', 'Dist::Zilla::Plugin::MetaProvides::Package' => '1.15000002', 'Dist::Zilla::Plugin::MetaTests' => '0', 'Dist::Zilla::Plugin::MetaYAML' => '0', 'Dist::Zilla::Plugin::MinimumPerl' => '1.006', 'Dist::Zilla::Plugin::MojibakeTests' => '0.8', 'Dist::Zilla::Plugin::NextRelease' => '5.033', 'Dist::Zilla::Plugin::PodSyntaxTests' => '5.040', 'Dist::Zilla::Plugin::PodWeaver' => '4.008', 'Dist::Zilla::Plugin::Prereqs' => '0', 'Dist::Zilla::Plugin::Prereqs::AuthorDeps' => '0.006', 'Dist::Zilla::Plugin::PromptIfStale' => '0', 'Dist::Zilla::Plugin::Readme' => '0', 'Dist::Zilla::Plugin::ReadmeAnyFromPod' => '0.142180', 'Dist::Zilla::Plugin::RemovePrereqs' => '0', 'Dist::Zilla::Plugin::RewriteVersion::Transitional' => '0.006', 'Dist::Zilla::Plugin::Run::AfterBuild' => '0.041', 'Dist::Zilla::Plugin::Run::AfterRelease' => '0.038', 'Dist::Zilla::Plugin::Run::BeforeBuild' => '0', 'Dist::Zilla::Plugin::Run::BeforeRelease' => '0.050', 'Dist::Zilla::Plugin::RunExtraTests' => '0.024', 'Dist::Zilla::Plugin::ShareDir' => '0', 'Dist::Zilla::Plugin::StaticInstall' => '0.005', 'Dist::Zilla::Plugin::Test::CPAN::Changes' => '0.012', 'Dist::Zilla::Plugin::Test::ChangesHasContent' => '0', 'Dist::Zilla::Plugin::Test::CleanNamespaces' => '0.006', 'Dist::Zilla::Plugin::Test::Compile' => '2.039', 'Dist::Zilla::Plugin::Test::EOL' => '0.17', 'Dist::Zilla::Plugin::Test::Kwalitee' => '2.10', 'Dist::Zilla::Plugin::Test::MinimumVersion' => '2.000010', 'Dist::Zilla::Plugin::Test::NoTabs' => '0.08', 'Dist::Zilla::Plugin::Test::Pod::Coverage::TrustMe' => '0', 'Dist::Zilla::Plugin::Test::PodSpelling' => '2.006003', 'Dist::Zilla::Plugin::Test::Portability' => '2.000007', 'Dist::Zilla::Plugin::Test::ReportPrereqs' => '0.022', 'Dist::Zilla::Plugin::TestRelease' => '0', 'Dist::Zilla::Plugin::UploadToCPAN' => '0', 'Dist::Zilla::Plugin::UseUnsafeInc' => '0', 'Dist::Zilla::PluginBundle::Author::ETHER' => '0.174', 'Dist::Zilla::PluginBundle::Git::VersionManager' => '0.007', 'Software::License::MIT' => '0' } } }; $x; }submodule_status100644000766000024 22715240201330 22510 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share6648e8194c69697b2e1a15fe76a06a480b183a51 (Test-JSON-Schema-Acceptance-1.037-124-g6648e81) /Volumes/chambord/Users/ether/git/JSON-Schema-Test-Suite.git v1000755000766000024 015240201330 20532 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/testsnot.json100640000766000024 2010215240201330 22374 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "not", "schema": { "$schema": "https://json-schema.org/v1", "not": {"type": "integer"} }, "tests": [ { "description": "allowed", "data": "foo", "valid": true }, { "description": "disallowed", "data": 1, "valid": false } ] }, { "description": "not multiple types", "schema": { "$schema": "https://json-schema.org/v1", "not": {"type": ["integer", "boolean"]} }, "tests": [ { "description": "valid", "data": "foo", "valid": true }, { "description": "mismatch", "data": 1, "valid": false }, { "description": "other mismatch", "data": true, "valid": false } ] }, { "description": "not more complex schema", "schema": { "$schema": "https://json-schema.org/v1", "not": { "type": "object", "properties": { "foo": { "type": "string" } } } }, "tests": [ { "description": "match", "data": 1, "valid": true }, { "description": "other match", "data": {"foo": 1}, "valid": true }, { "description": "mismatch", "data": {"foo": "bar"}, "valid": false } ] }, { "description": "forbidden property", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": { "not": {} } } }, "tests": [ { "description": "property present", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "property absent", "data": {"bar": 1, "baz": 2}, "valid": true } ] }, { "description": "forbid everything with empty schema", "schema": { "$schema": "https://json-schema.org/v1", "not": {} }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "forbid everything with boolean schema true", "schema": { "$schema": "https://json-schema.org/v1", "not": true }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "allow everything with boolean schema false", "schema": { "$schema": "https://json-schema.org/v1", "not": false }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "double negation", "schema": { "$schema": "https://json-schema.org/v1", "not": { "not": {} } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "collect annotations inside a 'not', even if collection is disabled", "schema": { "$schema": "https://json-schema.org/v1", "not": { "$comment": "this subschema must still produce annotations internally, even though the 'not' will ultimately discard them", "anyOf": [ true, { "properties": { "foo": true } } ], "unevaluatedProperties": false } }, "tests": [ { "description": "unevaluated property", "data": { "bar": 1 }, "valid": true }, { "description": "annotations are still collected inside a 'not'", "data": { "foo": 1 }, "valid": false } ] } ] ref.json100640000766000024 10006615240201330 22400 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "root pointer ref", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {"$ref": "#"} }, "additionalProperties": false }, "tests": [ { "description": "match", "data": {"foo": false}, "valid": true }, { "description": "recursive match", "data": {"foo": {"foo": false}}, "valid": true }, { "description": "mismatch", "data": {"bar": false}, "valid": false }, { "description": "recursive mismatch", "data": {"foo": {"bar": false}}, "valid": false } ] }, { "description": "relative pointer ref to object", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {"type": "integer"}, "bar": {"$ref": "#/properties/foo"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "relative pointer ref to array", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ {"type": "integer"}, {"$ref": "#/prefixItems/0"} ] }, "tests": [ { "description": "match array", "data": [1, 2], "valid": true }, { "description": "mismatch array", "data": [1, "foo"], "valid": false } ] }, { "description": "escaped pointer ref", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "tilde~field": {"type": "integer"}, "slash/field": {"type": "integer"}, "percent%field": {"type": "integer"} }, "properties": { "tilde": {"$ref": "#/$defs/tilde~0field"}, "slash": {"$ref": "#/$defs/slash~1field"}, "percent": {"$ref": "#/$defs/percent%25field"} } }, "tests": [ { "description": "slash invalid", "data": {"slash": "aoeu"}, "valid": false }, { "description": "tilde invalid", "data": {"tilde": "aoeu"}, "valid": false }, { "description": "percent invalid", "data": {"percent": "aoeu"}, "valid": false }, { "description": "slash valid", "data": {"slash": 123}, "valid": true }, { "description": "tilde valid", "data": {"tilde": 123}, "valid": true }, { "description": "percent valid", "data": {"percent": 123}, "valid": true } ] }, { "description": "nested refs", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "a": {"type": "integer"}, "b": {"$ref": "#/$defs/a"}, "c": {"$ref": "#/$defs/b"} }, "$ref": "#/$defs/c" }, "tests": [ { "description": "nested ref valid", "data": 5, "valid": true }, { "description": "nested ref invalid", "data": "a", "valid": false } ] }, { "description": "ref applies alongside sibling keywords", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "reffed": { "type": "array" } }, "properties": { "foo": { "$ref": "#/$defs/reffed", "maxItems": 2 } } }, "tests": [ { "description": "ref valid, maxItems valid", "data": { "foo": [] }, "valid": true }, { "description": "ref valid, maxItems invalid", "data": { "foo": [1, 2, 3] }, "valid": false }, { "description": "ref invalid", "data": { "foo": "string" }, "valid": false } ] }, { "description": "remote ref, containing refs itself", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/ref-and-defs.json" }, "tests": [ { "description": "remote ref valid", "data": { "bar": "" }, "valid": true }, { "description": "remote ref invalid", "data": { "bar": 0 }, "valid": false } ] }, { "description": "property named $ref that is not a reference", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "$ref": {"type": "string"} } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "property named $ref, containing an actual $ref", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "$ref": {"$ref": "#/$defs/is-string"} }, "$defs": { "is-string": { "type": "string" } } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "$ref to boolean schema true", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "#/$defs/bool", "$defs": { "bool": true } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "$ref to boolean schema false", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "#/$defs/bool", "$defs": { "bool": false } }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "Recursive references between schemas", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/tree", "description": "tree of nodes", "type": "object", "properties": { "meta": {"type": "string"}, "nodes": { "type": "array", "items": {"$ref": "node"} } }, "required": ["meta", "nodes"], "$defs": { "node": { "$id": "http://localhost:1234/v1/node", "description": "node", "type": "object", "properties": { "value": {"type": "number"}, "subtree": {"$ref": "tree"} }, "required": ["value"] } } }, "tests": [ { "description": "valid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": 1.1}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": true }, { "description": "invalid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": "string is invalid"}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": false } ] }, { "description": "refs with quote", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo\"bar": {"$ref": "#/$defs/foo%22bar"} }, "$defs": { "foo\"bar": {"type": "number"} } }, "tests": [ { "description": "object with numbers is valid", "data": { "foo\"bar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\"bar": "1" }, "valid": false } ] }, { "description": "ref creates new scope when adjacent to keywords", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "A": { "unevaluatedProperties": false } }, "properties": { "prop1": { "type": "string" } }, "$ref": "#/$defs/A" }, "tests": [ { "description": "referenced subschema doesn't see annotations from properties", "data": { "prop1": "match" }, "valid": false } ] }, { "description": "naive replacement of $ref with its destination is not correct", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "a_string": { "type": "string" } }, "enum": [ { "$ref": "#/$defs/a_string" } ] }, "tests": [ { "description": "do not evaluate the $ref inside the enum, matching any string", "data": "this is a string", "valid": false }, { "description": "do not evaluate the $ref inside the enum, definition exact match", "data": { "type": "string" }, "valid": false }, { "description": "match the enum exactly", "data": { "$ref": "#/$defs/a_string" }, "valid": true } ] }, { "description": "refs with relative uris and defs", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://example.com/schema-relative-uri-defs1.json", "properties": { "foo": { "$id": "schema-relative-uri-defs2.json", "$defs": { "inner": { "properties": { "bar": { "type": "string" } } } }, "$ref": "#/$defs/inner" } }, "$ref": "schema-relative-uri-defs2.json" }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "relative refs with absolute uris and defs", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://example.com/schema-refs-absolute-uris-defs1.json", "properties": { "foo": { "$id": "http://example.com/schema-refs-absolute-uris-defs2.json", "$defs": { "inner": { "properties": { "bar": { "type": "string" } } } }, "$ref": "#/$defs/inner" } }, "$ref": "schema-refs-absolute-uris-defs2.json" }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "$id must be resolved against nearest parent, not just immediate parent", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://example.com/a.json", "$defs": { "x": { "$id": "http://example.com/b/c.json", "not": { "$defs": { "y": { "$id": "d.json", "type": "number" } } } } }, "allOf": [ { "$ref": "http://example.com/b/d.json" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "order of evaluation: $id and $ref", "schema": { "$schema": "https://json-schema.org/v1", "$comment": "$id must be evaluated before $ref to get the proper $ref destination", "$id": "https://example.com/v1/ref-and-id1/base.json", "$ref": "int.json", "$defs": { "bigint": { "$comment": "canonical uri: https://example.com/ref-and-id1/int.json", "$id": "int.json", "maximum": 10 }, "smallint": { "$comment": "canonical uri: https://example.com/ref-and-id1-int.json", "$id": "/v1/ref-and-id1-int.json", "maximum": 2 } } }, "tests": [ { "description": "data is valid against first definition", "data": 5, "valid": true }, { "description": "data is invalid against first definition", "data": 50, "valid": false } ] }, { "description": "order of evaluation: $id and $anchor and $ref", "schema": { "$schema": "https://json-schema.org/v1", "$comment": "$id must be evaluated before $ref to get the proper $ref destination", "$id": "https://example.com/v1/ref-and-id2/base.json", "$ref": "#bigint", "$defs": { "bigint": { "$comment": "canonical uri: https://example.com/ref-and-id2/base.json#/$defs/bigint; another valid uri for this location: https://example.com/ref-and-id2/base.json#bigint", "$anchor": "bigint", "maximum": 10 }, "smallint": { "$comment": "canonical uri: https://example.com/ref-and-id2#/$defs/smallint; another valid uri for this location: https://example.com/ref-and-id2/#bigint", "$id": "/v1/ref-and-id2/", "$anchor": "bigint", "maximum": 2 } } }, "tests": [ { "description": "data is valid against first definition", "data": 5, "valid": true }, { "description": "data is invalid against first definition", "data": 50, "valid": false } ] }, { "description": "order of evaluation: $id and $ref on nested schema", "schema": { "$comment": "$id must be evaluated before $ref to get the proper $ref destination", "$schema": "https://json-schema.org/v1", "$id": "https://example.com/v1/ref-and-id3/base.json", "$ref": "nested/foo.json", "$defs": { "foo": { "$comment": "canonical uri: https://example.com/v1/ref-and-id3/nested/foo.json", "$id": "nested/foo.json", "$ref": "./bar.json" }, "bar": { "$comment": "canonical uri: https://example.com/v1/ref-and-id3/nested/bar.json", "$id": "nested/bar.json", "type": "number" } } }, "tests": [ { "description": "data is valid against nested sibling", "data": 5, "valid": true }, { "description": "data is invalid against nested sibling", "data": "a", "valid": false } ] }, { "description": "simple URN base URI with $ref via the URN", "schema": { "$schema": "https://json-schema.org/v1", "$comment": "URIs do not have to have HTTP(s) schemes", "$id": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed", "minimum": 30, "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed"} } }, "tests": [ { "description": "valid under the URN IDed schema", "data": {"foo": 37}, "valid": true }, { "description": "invalid under the URN IDed schema", "data": {"foo": 12}, "valid": false } ] }, { "description": "simple URN base URI with JSON pointer", "schema": { "$schema": "https://json-schema.org/v1", "$comment": "URIs do not have to have HTTP(s) schemes", "$id": "urn:uuid:deadbeef-1234-00ff-ff00-4321feebdaed", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with NSS", "schema": { "$schema": "https://json-schema.org/v1", "$comment": "RFC 8141 §2.2", "$id": "urn:example:1/406/47452/2", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with r-component", "schema": { "$schema": "https://json-schema.org/v1", "$comment": "RFC 8141 §2.3.1", "$id": "urn:example:foo-bar-baz-qux?+CCResolve:cc=uk", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with q-component", "schema": { "$schema": "https://json-schema.org/v1", "$comment": "RFC 8141 §2.3.2", "$id": "urn:example:weather?=op=map&lat=39.56&lon=-104.85&datetime=1969-07-21T02:56:15Z", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and JSON pointer ref", "schema": { "$schema": "https://json-schema.org/v1", "$id": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and anchor ref", "schema": { "$schema": "https://json-schema.org/v1", "$id": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed#something"} }, "$defs": { "bar": { "$anchor": "something", "type": "string" } } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN ref with nested pointer ref", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", "$defs": { "foo": { "$id": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", "$defs": {"bar": {"type": "string"}}, "$ref": "#/$defs/bar" } } }, "tests": [ { "description": "a string is valid", "data": "bar", "valid": true }, { "description": "a non-string is invalid", "data": 12, "valid": false } ] }, { "description": "ref to if", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://example.com/ref/if", "if": { "$id": "http://example.com/ref/if", "type": "integer" } }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref to then", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://example.com/ref/then", "then": { "$id": "http://example.com/ref/then", "type": "integer" } }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref to else", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://example.com/ref/else", "else": { "$id": "http://example.com/ref/else", "type": "integer" } }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref with absolute-path-reference", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://example.com/ref/absref.json", "$defs": { "a": { "$id": "http://example.com/ref/absref/foobar.json", "type": "number" }, "b": { "$id": "http://example.com/absref/foobar.json", "type": "string" } }, "$ref": "/absref/foobar.json" }, "tests": [ { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "an integer is invalid", "data": 12, "valid": false } ] }, { "description": "$id with file URI still resolves pointers - *nix", "schema": { "$schema": "https://json-schema.org/v1", "$id": "file:///folder/file.json", "$defs": { "foo": { "type": "number" } }, "$ref": "#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "$id with file URI still resolves pointers - windows", "schema": { "$schema": "https://json-schema.org/v1", "$id": "file:///c:/folder/file.json", "$defs": { "foo": { "type": "number" } }, "$ref": "#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "empty tokens in $ref json-pointer", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "": { "$defs": { "": { "type": "number" } } } }, "allOf": [ { "$ref": "#/$defs//$defs/" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] remotes000755000766000024 015240201330 20520 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/sharename.json100644000766000024 215240201330 22403 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}tree.json100644000766000024 215240201330 22422 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}inc000755000766000024 015240201330 16511 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038OldShareDirFiles.pm100640000766000024 372315240201330 22333 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/incuse strict; use warnings; package inc::OldShareDirFiles; use Moose; with 'Dist::Zilla::Role::FileGatherer', 'Dist::Zilla::Role::BeforeRelease'; use Dist::Zilla::File::InMemory; use Capture::Tiny 'capture'; use Path::Tiny; use namespace::autoclean; # for every file leaving the test suite, we must replace it with an empty file so ->_test_data can # filter it out, because File::ShareDir::Install cannot remove old files when installing a new # sharedir over top. see https://rt.cpan.org/Ticket/Display.html?id=92084#txn-1324511 has removed => ( is => 'ro', isa => 'ArrayRef[Str]', required => 1 ); sub mvp_multivalue_args { qw(removed) }; sub gather_files { my $self = shift; foreach my $filename (@{$self->removed}) { my $content = path('share/tests')->subsumes($filename) ? '[]' : path('share/remotes')->subsumes($filename) ? '{}' : die "don't know how to handle filename '$filename'"; $self->add_file(Dist::Zilla::File::InMemory->new({ name => $filename, content => $content })) } return; } sub before_release { my $self = shift; my $distname = $self->zilla->name; my $version = $self->zilla->version; my ($diff, $error) = capture { system('diff', '-u', $distname.'-'.sprintf("%.3f", $version-0.001).'/MANIFEST', $distname.'-'.$version.'/MANIFEST'); }; die $error if $error; # skip old share/tests/draft-future and draft-next, now replaced by "v1" # and to be entirely ignored $diff =~ s{^-share/(?:output-tests|remotes|tests)/draft-(?:future|next)/.+\n}{}gm; # note: if a removed file was re-added in the submodule, we will get a "aborting; duplicate files # would be produced" fatal error from Gather plugins, so we don't need to explicitly check for # this case if (my @missing = map s/^-//r, grep m{^-share/}, split /\n/, $diff) { $self->log_fatal(join "\n", '', 'These files were removed from the test suite and must be added to the config for [=inc::OldShareDirFiles]:', @missing, '', ); } } 1; 12-include-optional.t100640000766000024 220115240201330 22205 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::JSON::Schema::Acceptance; use lib 't/lib'; use Helper; my $accepter = Test::JSON::Schema::Acceptance->new( test_dir => 't/tests/include_optional', include_optional => 1, ); cmp_result( $accepter->_test_data, [ { file => str('foo.json'), json => ignore }, { file => str('zulu.json'), json => ignore }, { file => str('extra/foo.json'), json => ignore }, { file => str('optional/alpha.json'), json => ignore }, { file => str('optional/beta.json'), json => ignore }, ], 'picked up optional files in test_data, in the correct order', ); done_testing; subset000755000766000024 015240201330 20652 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/testsbar.json100644000766000024 300115240201330 22443 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/subset[ { "description": "empty schema", "schema": {}, "tests": [ { "description": "integer", "data": 2, "valid": false }, { "description": "boolean false", "data": "false", "valid": false }, { "description": "boolean true", "data": "true", "valid": false } ] }, { "description": "false schema", "schema": false, "tests": [ { "description": "integer", "data": 2, "valid": true }, { "description": "boolean false", "data": "false", "valid": true }, { "description": "boolean true", "data": "true", "valid": true } ] }, { "description": "true schema", "schema": true, "tests": [ { "description": "integer", "data": 2, "valid": false }, { "description": "boolean false", "data": "false", "valid": false }, { "description": "boolean true", "data": "true", "valid": false } ] } ] baz.json100640000766000024 77715240201330 22450 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/subset[ { "description": "empty schema", "schema": {}, "tests": [ { "description": "integer", "data": 2, "valid": true }, { "description": "boolean false", "data": "false", "valid": true }, { "description": "boolean true", "data": "true", "valid": true } ] } ] foo.json100640000766000024 277615240201330 22500 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/subset[ { "description": "empty schema", "schema": {}, "tests": [ { "description": "integer", "data": 2, "valid": true }, { "description": "boolean false", "data": "false", "valid": true }, { "description": "boolean true", "data": "true", "valid": true } ] }, { "description": "false schema", "schema": false, "tests": [ { "description": "integer", "data": 2, "valid": false }, { "description": "boolean false", "data": "false", "valid": false }, { "description": "boolean true", "data": "true", "valid": false } ] }, { "description": "true schema", "schema": true, "tests": [ { "description": "integer", "data": 2, "valid": true }, { "description": "boolean false", "data": "false", "valid": true }, { "description": "boolean true", "data": "true", "valid": true } ] } ] portability.t100644000766000024 13015240201330 22536 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/authoruse strict; use warnings; use Test::More; use Test::Portability::Files; run_tests(); enum.json100640000766000024 2512715240201330 22554 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "simple enum validation", "schema": { "$schema": "https://json-schema.org/v1", "enum": [1, 2, 3] }, "tests": [ { "description": "one of the enum is valid", "data": 1, "valid": true }, { "description": "something else is invalid", "data": 4, "valid": false } ] }, { "description": "heterogeneous enum validation", "schema": { "$schema": "https://json-schema.org/v1", "enum": [6, "foo", [], true, {"foo": 12}] }, "tests": [ { "description": "one of the enum is valid", "data": [], "valid": true }, { "description": "something else is invalid", "data": null, "valid": false }, { "description": "objects are deep compared", "data": {"foo": false}, "valid": false }, { "description": "valid object matches", "data": {"foo": 12}, "valid": true }, { "description": "extra properties in object is invalid", "data": {"foo": 12, "boo": 42}, "valid": false } ] }, { "description": "heterogeneous enum-with-null validation", "schema": { "$schema": "https://json-schema.org/v1", "enum": [6, null] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "number is valid", "data": 6, "valid": true }, { "description": "something else is invalid", "data": "test", "valid": false } ] }, { "description": "enums in properties", "schema": { "$schema": "https://json-schema.org/v1", "type":"object", "properties": { "foo": {"enum":["foo"]}, "bar": {"enum":["bar"]} }, "required": ["bar"] }, "tests": [ { "description": "both properties are valid", "data": {"foo":"foo", "bar":"bar"}, "valid": true }, { "description": "wrong foo value", "data": {"foo":"foot", "bar":"bar"}, "valid": false }, { "description": "wrong bar value", "data": {"foo":"foo", "bar":"bart"}, "valid": false }, { "description": "missing optional property is valid", "data": {"bar":"bar"}, "valid": true }, { "description": "missing required property is invalid", "data": {"foo":"foo"}, "valid": false }, { "description": "missing all properties is invalid", "data": {}, "valid": false } ] }, { "description": "enum with escaped characters", "schema": { "$schema": "https://json-schema.org/v1", "enum": ["foo\nbar", "foo\rbar"] }, "tests": [ { "description": "member 1 is valid", "data": "foo\nbar", "valid": true }, { "description": "member 2 is valid", "data": "foo\rbar", "valid": true }, { "description": "another string is invalid", "data": "abc", "valid": false } ] }, { "description": "enum with false does not match 0", "schema": { "$schema": "https://json-schema.org/v1", "enum": [false] }, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "enum with [false] does not match [0]", "schema": { "$schema": "https://json-schema.org/v1", "enum": [[false]] }, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "enum with true does not match 1", "schema": { "$schema": "https://json-schema.org/v1", "enum": [true] }, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "enum with [true] does not match [1]", "schema": { "$schema": "https://json-schema.org/v1", "enum": [[true]] }, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "enum with 0 does not match false", "schema": { "$schema": "https://json-schema.org/v1", "enum": [0] }, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true } ] }, { "description": "enum with [0] does not match [false]", "schema": { "$schema": "https://json-schema.org/v1", "enum": [[0]] }, "tests": [ { "description": "[false] is invalid", "data": [false], "valid": false }, { "description": "[0] is valid", "data": [0], "valid": true }, { "description": "[0.0] is valid", "data": [0.0], "valid": true } ] }, { "description": "enum with 1 does not match true", "schema": { "$schema": "https://json-schema.org/v1", "enum": [1] }, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "enum with [1] does not match [true]", "schema": { "$schema": "https://json-schema.org/v1", "enum": [[1]] }, "tests": [ { "description": "[true] is invalid", "data": [true], "valid": false }, { "description": "[1] is valid", "data": [1], "valid": true }, { "description": "[1.0] is valid", "data": [1.0], "valid": true } ] }, { "description": "nul characters in strings", "schema": { "$schema": "https://json-schema.org/v1", "enum": [ "hello\u0000there" ] }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] }, { "description": "empty enum", "schema": { "$schema": "https://json-schema.org/v1", "enum": [] }, "tests": [ { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "number is invalid", "data": 42, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": [], "valid": false }, { "description": "boolean is invalid", "data": false, "valid": false } ] } ] type.json100640000766000024 3352715240201330 22574 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "integer type matches integers", "schema": { "$schema": "https://json-schema.org/v1", "type": "integer" }, "tests": [ { "description": "an integer is an integer", "data": 1, "valid": true }, { "description": "a float with zero fractional part is an integer", "data": 1.0, "valid": true }, { "description": "a float is not an integer", "data": 1.1, "valid": false }, { "description": "a string is not an integer", "data": "foo", "valid": false }, { "description": "a string is still not an integer, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not an integer", "data": {}, "valid": false }, { "description": "an array is not an integer", "data": [], "valid": false }, { "description": "a boolean is not an integer", "data": true, "valid": false }, { "description": "null is not an integer", "data": null, "valid": false } ] }, { "description": "number type matches numbers", "schema": { "$schema": "https://json-schema.org/v1", "type": "number" }, "tests": [ { "description": "an integer is a number", "data": 1, "valid": true }, { "description": "a float with zero fractional part is a number (and an integer)", "data": 1.0, "valid": true }, { "description": "a float is a number", "data": 1.1, "valid": true }, { "description": "a string is not a number", "data": "foo", "valid": false }, { "description": "a string is still not a number, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not a number", "data": {}, "valid": false }, { "description": "an array is not a number", "data": [], "valid": false }, { "description": "a boolean is not a number", "data": true, "valid": false }, { "description": "null is not a number", "data": null, "valid": false } ] }, { "description": "string type matches strings", "schema": { "$schema": "https://json-schema.org/v1", "type": "string" }, "tests": [ { "description": "1 is not a string", "data": 1, "valid": false }, { "description": "a float is not a string", "data": 1.1, "valid": false }, { "description": "a string is a string", "data": "foo", "valid": true }, { "description": "a string is still a string, even if it looks like a number", "data": "1", "valid": true }, { "description": "an empty string is still a string", "data": "", "valid": true }, { "description": "an object is not a string", "data": {}, "valid": false }, { "description": "an array is not a string", "data": [], "valid": false }, { "description": "a boolean is not a string", "data": true, "valid": false }, { "description": "null is not a string", "data": null, "valid": false } ] }, { "description": "object type matches objects", "schema": { "$schema": "https://json-schema.org/v1", "type": "object" }, "tests": [ { "description": "an integer is not an object", "data": 1, "valid": false }, { "description": "a float is not an object", "data": 1.1, "valid": false }, { "description": "a string is not an object", "data": "foo", "valid": false }, { "description": "an object is an object", "data": {}, "valid": true }, { "description": "an array is not an object", "data": [], "valid": false }, { "description": "a boolean is not an object", "data": true, "valid": false }, { "description": "null is not an object", "data": null, "valid": false } ] }, { "description": "array type matches arrays", "schema": { "$schema": "https://json-schema.org/v1", "type": "array" }, "tests": [ { "description": "an integer is not an array", "data": 1, "valid": false }, { "description": "a float is not an array", "data": 1.1, "valid": false }, { "description": "a string is not an array", "data": "foo", "valid": false }, { "description": "an object is not an array", "data": {}, "valid": false }, { "description": "an array is an array", "data": [], "valid": true }, { "description": "a boolean is not an array", "data": true, "valid": false }, { "description": "null is not an array", "data": null, "valid": false } ] }, { "description": "boolean type matches booleans", "schema": { "$schema": "https://json-schema.org/v1", "type": "boolean" }, "tests": [ { "description": "an integer is not a boolean", "data": 1, "valid": false }, { "description": "zero is not a boolean", "data": 0, "valid": false }, { "description": "a float is not a boolean", "data": 1.1, "valid": false }, { "description": "a string is not a boolean", "data": "foo", "valid": false }, { "description": "an empty string is not a boolean", "data": "", "valid": false }, { "description": "an object is not a boolean", "data": {}, "valid": false }, { "description": "an array is not a boolean", "data": [], "valid": false }, { "description": "true is a boolean", "data": true, "valid": true }, { "description": "false is a boolean", "data": false, "valid": true }, { "description": "null is not a boolean", "data": null, "valid": false } ] }, { "description": "null type matches only the null object", "schema": { "$schema": "https://json-schema.org/v1", "type": "null" }, "tests": [ { "description": "an integer is not null", "data": 1, "valid": false }, { "description": "a float is not null", "data": 1.1, "valid": false }, { "description": "zero is not null", "data": 0, "valid": false }, { "description": "a string is not null", "data": "foo", "valid": false }, { "description": "an empty string is not null", "data": "", "valid": false }, { "description": "an object is not null", "data": {}, "valid": false }, { "description": "an array is not null", "data": [], "valid": false }, { "description": "true is not null", "data": true, "valid": false }, { "description": "false is not null", "data": false, "valid": false }, { "description": "null is null", "data": null, "valid": true } ] }, { "description": "multiple types can be specified in an array", "schema": { "$schema": "https://json-schema.org/v1", "type": ["integer", "string"] }, "tests": [ { "description": "an integer is valid", "data": 1, "valid": true }, { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "a float is invalid", "data": 1.1, "valid": false }, { "description": "an object is invalid", "data": {}, "valid": false }, { "description": "an array is invalid", "data": [], "valid": false }, { "description": "a boolean is invalid", "data": true, "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type as array with one item", "schema": { "$schema": "https://json-schema.org/v1", "type": ["string"] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is invalid", "data": 123, "valid": false } ] }, { "description": "type: array or object", "schema": { "$schema": "https://json-schema.org/v1", "type": ["array", "object"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type: array, object or null", "schema": { "$schema": "https://json-schema.org/v1", "type": ["array", "object", "null"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false } ] } ] defs.json100644000766000024 215240201330 22416 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[]05-test-descriptions.t100640000766000024 321315240201330 22430 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::Deep qw(!array !hash);; use Test::JSON::Schema::Acceptance; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use lib 't/lib'; use SchemaParser; use Helper; my $accepter = Test::JSON::Schema::Acceptance->new(test_dir => 't/tests/simple-booleans'); my $parser = SchemaParser->new; my $events = intercept( sub { $accepter->acceptance(sub ($schema, $input_data) { return $parser->validate_data($input_data, $schema); }); } ); my @bool_tests = grep $_->isa('Test2::Event::Ok'), @$events; is(@bool_tests, 18, 'found all the tests'); cmp_deeply( \@bool_tests, array_each(methods( pass => 1, effective_pass => 1, )), 'all tests pass', ); cmp_result( [ map $_->name, @bool_tests ], [ map do { my $file = $_; map do { my $group = $_; map $file.'.json: "'.$group.'" - "'.$_.'"', 'integer', 'boolean false', 'boolean true' }, 'empty schema', 'false schema', 'true schema' }, qw(bar foo) ], 'test names are shown correctly', ); done_testing; pod-coverage.t100644000766000024 56015240201330 22556 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/author# This file was automatically generated by Dist::Zilla::Plugin::Test::Pod::Coverage::TrustMe v1.0.1 use strict; use warnings; use Test::More; use Test::Pod::Coverage::TrustMe; my $config = {}; my $modules = [ "Test::JSON::Schema::Acceptance", ]; plan tests => scalar @$modules; for my $module (@$modules) { pod_coverage_ok($module, $config); } done_testing; allOf.json100640000766000024 2044515240201330 22643 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "allOf", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "allOf", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "mismatch second", "data": {"foo": "baz"}, "valid": false }, { "description": "mismatch first", "data": {"bar": 2}, "valid": false }, { "description": "wrong type", "data": {"foo": "baz", "bar": "quux"}, "valid": false } ] }, { "description": "allOf with base schema", "schema": { "$schema": "https://json-schema.org/v1", "properties": {"bar": {"type": "integer"}}, "required": ["bar"], "allOf" : [ { "properties": { "foo": {"type": "string"} }, "required": ["foo"] }, { "properties": { "baz": {"type": "null"} }, "required": ["baz"] } ] }, "tests": [ { "description": "valid", "data": {"foo": "quux", "bar": 2, "baz": null}, "valid": true }, { "description": "mismatch base schema", "data": {"foo": "quux", "baz": null}, "valid": false }, { "description": "mismatch first allOf", "data": {"bar": 2, "baz": null}, "valid": false }, { "description": "mismatch second allOf", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "mismatch both", "data": {"bar": 2}, "valid": false } ] }, { "description": "allOf simple types", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ {"maximum": 30}, {"minimum": 20} ] }, "tests": [ { "description": "valid", "data": 25, "valid": true }, { "description": "mismatch one", "data": 35, "valid": false } ] }, { "description": "allOf with boolean schemas, all true", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [true, true] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "allOf with boolean schemas, some false", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [true, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with boolean schemas, all false", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [false, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with one empty schema", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with two empty schemas", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ {}, {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with the first empty schema", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ {}, { "type": "number" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with the last empty schema", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "nested allOf, to check validation semantics", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "allOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] }, { "description": "allOf combined with anyOf, oneOf", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "multipleOf": 2 } ], "anyOf": [ { "multipleOf": 3 } ], "oneOf": [ { "multipleOf": 5 } ] }, "tests": [ { "description": "allOf: false, anyOf: false, oneOf: false", "data": 1, "valid": false }, { "description": "allOf: false, anyOf: false, oneOf: true", "data": 5, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: false", "data": 3, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: true", "data": 15, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: false", "data": 2, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: true", "data": 10, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: false", "data": 6, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: true", "data": 30, "valid": true } ] } ] anyOf.json100640000766000024 1230515240201330 22656 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "anyOf", "schema": { "$schema": "https://json-schema.org/v1", "anyOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first anyOf valid", "data": 1, "valid": true }, { "description": "second anyOf valid", "data": 2.5, "valid": true }, { "description": "both anyOf valid", "data": 3, "valid": true }, { "description": "neither anyOf valid", "data": 1.5, "valid": false } ] }, { "description": "anyOf with base schema", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "anyOf" : [ { "maxLength": 2 }, { "minLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one anyOf valid", "data": "foobar", "valid": true }, { "description": "both anyOf invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf with boolean schemas, all true", "schema": { "$schema": "https://json-schema.org/v1", "anyOf": [true, true] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, some true", "schema": { "$schema": "https://json-schema.org/v1", "anyOf": [true, false] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, all false", "schema": { "$schema": "https://json-schema.org/v1", "anyOf": [false, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf complex types", "schema": { "$schema": "https://json-schema.org/v1", "anyOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first anyOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second anyOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both anyOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "neither anyOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "anyOf with one empty schema", "schema": { "$schema": "https://json-schema.org/v1", "anyOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is valid", "data": 123, "valid": true } ] }, { "description": "nested anyOf, to check validation semantics", "schema": { "$schema": "https://json-schema.org/v1", "anyOf": [ { "anyOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] const.json100640000766000024 2751315240201330 22737 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "const validation", "schema": { "$schema": "https://json-schema.org/v1", "const": 2 }, "tests": [ { "description": "same value is valid", "data": 2, "valid": true }, { "description": "another value is invalid", "data": 5, "valid": false }, { "description": "another type is invalid", "data": "a", "valid": false } ] }, { "description": "const with object", "schema": { "$schema": "https://json-schema.org/v1", "const": {"foo": "bar", "baz": "bax"} }, "tests": [ { "description": "same object is valid", "data": {"foo": "bar", "baz": "bax"}, "valid": true }, { "description": "same object with different property order is valid", "data": {"baz": "bax", "foo": "bar"}, "valid": true }, { "description": "another object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "another type is invalid", "data": [1, 2], "valid": false } ] }, { "description": "const with array", "schema": { "$schema": "https://json-schema.org/v1", "const": [{ "foo": "bar" }] }, "tests": [ { "description": "same array is valid", "data": [{"foo": "bar"}], "valid": true }, { "description": "another array item is invalid", "data": [2], "valid": false }, { "description": "array with additional items is invalid", "data": [1, 2, 3], "valid": false } ] }, { "description": "const with null", "schema": { "$schema": "https://json-schema.org/v1", "const": null }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "not null is invalid", "data": 0, "valid": false } ] }, { "description": "const with false does not match 0", "schema": { "$schema": "https://json-schema.org/v1", "const": false }, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "const with true does not match 1", "schema": { "$schema": "https://json-schema.org/v1", "const": true }, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "const with [false] does not match [0]", "schema": { "$schema": "https://json-schema.org/v1", "const": [false] }, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "const with [true] does not match [1]", "schema": { "$schema": "https://json-schema.org/v1", "const": [true] }, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "const with {\"a\": false} does not match {\"a\": 0}", "schema": { "$schema": "https://json-schema.org/v1", "const": {"a": false} }, "tests": [ { "description": "{\"a\": false} is valid", "data": {"a": false}, "valid": true }, { "description": "{\"a\": 0} is invalid", "data": {"a": 0}, "valid": false }, { "description": "{\"a\": 0.0} is invalid", "data": {"a": 0.0}, "valid": false } ] }, { "description": "const with {\"a\": true} does not match {\"a\": 1}", "schema": { "$schema": "https://json-schema.org/v1", "const": {"a": true} }, "tests": [ { "description": "{\"a\": true} is valid", "data": {"a": true}, "valid": true }, { "description": "{\"a\": 1} is invalid", "data": {"a": 1}, "valid": false }, { "description": "{\"a\": 1.0} is invalid", "data": {"a": 1.0}, "valid": false } ] }, { "description": "const with 0 does not match other zero-like types", "schema": { "$schema": "https://json-schema.org/v1", "const": 0 }, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "empty string is invalid", "data": "", "valid": false } ] }, { "description": "const with 1 does not match true", "schema": { "$schema": "https://json-schema.org/v1", "const": 1 }, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "const with -2.0 matches integer and float types", "schema": { "$schema": "https://json-schema.org/v1", "const": -2.0 }, "tests": [ { "description": "integer -2 is valid", "data": -2, "valid": true }, { "description": "integer 2 is invalid", "data": 2, "valid": false }, { "description": "float -2.0 is valid", "data": -2.0, "valid": true }, { "description": "float 2.0 is invalid", "data": 2.0, "valid": false }, { "description": "float -2.00001 is invalid", "data": -2.00001, "valid": false } ] }, { "description": "float and integers are equal up to 64-bit representation limits", "schema": { "$schema": "https://json-schema.org/v1", "const": 9007199254740992 }, "tests": [ { "description": "integer is valid", "data": 9007199254740992, "valid": true }, { "description": "integer minus one is invalid", "data": 9007199254740991, "valid": false }, { "description": "float is valid", "data": 9007199254740992.0, "valid": true }, { "description": "float minus one is invalid", "data": 9007199254740991.0, "valid": false } ] }, { "description": "nul characters in strings", "schema": { "$schema": "https://json-schema.org/v1", "const": "hello\u0000there" }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] }, { "description": "characters with the same visual representation but different codepoint", "schema": { "$schema": "https://json-schema.org/v1", "const": "μ", "$comment": "U+03BC" }, "tests": [ { "description": "character uses the same codepoint", "data": "μ", "comment": "U+03BC", "valid": true }, { "description": "character looks the same but uses a different codepoint", "data": "µ", "comment": "U+00B5", "valid": false } ] }, { "description": "characters with the same visual representation, but different number of codepoints", "schema": { "$schema": "https://json-schema.org/v1", "const": "ä", "$comment": "U+00E4" }, "tests": [ { "description": "character uses the same codepoint", "data": "ä", "comment": "U+00E4", "valid": true }, { "description": "character looks the same but uses combining marks", "data": "ä", "comment": "a, U+0308", "valid": false } ] } ] items.json100640000766000024 2150515240201330 22725 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "a schema given for items", "schema": { "$schema": "https://json-schema.org/v1", "items": {"type": "integer"} }, "tests": [ { "description": "valid items", "data": [ 1, 2, 3 ], "valid": true }, { "description": "wrong type of items", "data": [1, "x"], "valid": false }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "length": 1 }, "valid": true } ] }, { "description": "items with boolean schema (true)", "schema": { "$schema": "https://json-schema.org/v1", "items": true }, "tests": [ { "description": "any array is valid", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items with boolean schema (false)", "schema": { "$schema": "https://json-schema.org/v1", "items": false }, "tests": [ { "description": "any non-empty array is invalid", "data": [ 1, "foo", true ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items and subitems", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "item": { "type": "array", "items": false, "prefixItems": [ { "$ref": "#/$defs/sub-item" }, { "$ref": "#/$defs/sub-item" } ] }, "sub-item": { "type": "object", "required": ["foo"] } }, "type": "array", "items": false, "prefixItems": [ { "$ref": "#/$defs/item" }, { "$ref": "#/$defs/item" }, { "$ref": "#/$defs/item" } ] }, "tests": [ { "description": "valid items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": true }, { "description": "too many items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "too many sub-items", "data": [ [ {"foo": null}, {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong item", "data": [ {"foo": null}, [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong sub-item", "data": [ [ {}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "fewer items is valid", "data": [ [ {"foo": null} ], [ {"foo": null} ] ], "valid": true } ] }, { "description": "nested items", "schema": { "$schema": "https://json-schema.org/v1", "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" } } } } }, "tests": [ { "description": "valid nested array", "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], "valid": true }, { "description": "nested array with invalid type", "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], "valid": false }, { "description": "not deep enough", "data": [[[1], [2],[3]], [[4], [5], [6]]], "valid": false } ] }, { "description": "prefixItems with no additional items allowed", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [{}, {}, {}], "items": false }, "tests": [ { "description": "empty array", "data": [ ], "valid": true }, { "description": "fewer number of items present (1)", "data": [ 1 ], "valid": true }, { "description": "fewer number of items present (2)", "data": [ 1, 2 ], "valid": true }, { "description": "equal number of items present", "data": [ 1, 2, 3 ], "valid": true }, { "description": "additional items are not permitted", "data": [ 1, 2, 3, 4 ], "valid": false } ] }, { "description": "items does not look in applicators, valid case", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "prefixItems": [ { "minimum": 3 } ] } ], "items": { "minimum": 5 } }, "tests": [ { "description": "prefixItems in allOf does not constrain items, invalid case", "data": [ 3, 5 ], "valid": false }, { "description": "prefixItems in allOf does not constrain items, valid case", "data": [ 5, 5 ], "valid": true } ] }, { "description": "prefixItems validation adjusts the starting index for items", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "type": "string" } ], "items": { "type": "integer" } }, "tests": [ { "description": "valid items", "data": [ "x", 2, 3 ], "valid": true }, { "description": "wrong type of second item", "data": [ "x", "y" ], "valid": false } ] }, { "description": "items with heterogeneous array", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [{}], "items": false }, "tests": [ { "description": "heterogeneous invalid instance", "data": [ "foo", "bar", 37 ], "valid": false }, { "description": "valid instance", "data": [ null ], "valid": true } ] }, { "description": "items with null instance elements", "schema": { "$schema": "https://json-schema.org/v1", "items": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] oneOf.json100640000766000024 1736515240201330 22663 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "oneOf", "schema": { "$schema": "https://json-schema.org/v1", "oneOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first oneOf valid", "data": 1, "valid": true }, { "description": "second oneOf valid", "data": 2.5, "valid": true }, { "description": "both oneOf valid", "data": 3, "valid": false }, { "description": "neither oneOf valid", "data": 1.5, "valid": false } ] }, { "description": "oneOf with base schema", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "oneOf" : [ { "minLength": 2 }, { "maxLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one oneOf valid", "data": "foobar", "valid": true }, { "description": "both oneOf valid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all true", "schema": { "$schema": "https://json-schema.org/v1", "oneOf": [true, true, true] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, one true", "schema": { "$schema": "https://json-schema.org/v1", "oneOf": [true, false, false] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "oneOf with boolean schemas, more than one true", "schema": { "$schema": "https://json-schema.org/v1", "oneOf": [true, true, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all false", "schema": { "$schema": "https://json-schema.org/v1", "oneOf": [false, false, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf complex types", "schema": { "$schema": "https://json-schema.org/v1", "oneOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second oneOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both oneOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": false }, { "description": "neither oneOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "oneOf with empty schema", "schema": { "$schema": "https://json-schema.org/v1", "oneOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "one valid - valid", "data": "foo", "valid": true }, { "description": "both valid - invalid", "data": 123, "valid": false } ] }, { "description": "oneOf with required", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "oneOf": [ { "required": ["foo", "bar"] }, { "required": ["foo", "baz"] } ] }, "tests": [ { "description": "both invalid - invalid", "data": {"bar": 2}, "valid": false }, { "description": "first valid - valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "second valid - valid", "data": {"foo": 1, "baz": 3}, "valid": true }, { "description": "both valid - invalid", "data": {"foo": 1, "bar": 2, "baz" : 3}, "valid": false } ] }, { "description": "oneOf with missing optional property", "schema": { "$schema": "https://json-schema.org/v1", "oneOf": [ { "properties": { "bar": true, "baz": true }, "required": ["bar"] }, { "properties": { "foo": true }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid", "data": {"bar": 8}, "valid": true }, { "description": "second oneOf valid", "data": {"foo": "foo"}, "valid": true }, { "description": "both oneOf valid", "data": {"foo": "foo", "bar": 8}, "valid": false }, { "description": "neither oneOf valid", "data": {"baz": "quux"}, "valid": false } ] }, { "description": "nested oneOf, to check validation semantics", "schema": { "$schema": "https://json-schema.org/v1", "oneOf": [ { "oneOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] release000755000766000024 015240201330 20013 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xtcpan-changes.t100644000766000024 34415240201330 22650 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/releaseuse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::CPAN::Changes 0.013 use Test::More 0.96 tests => 1; use Test::CPAN::Changes; subtest 'changes_ok' => sub { changes_file_ok('Changes'); }; integer.json100640000766000024 3215240201330 23137 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{ "type": "integer" } v1000755000766000024 015240201330 21046 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotestree.json100640000766000024 57615240201330 23024 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$schema": "https://json-schema.org/v1", "description": "tree schema, extensible", "$id": "http://localhost:1234/v1/tree.json", "$dynamicAnchor": "node", "type": "object", "properties": { "data": true, "children": { "type": "array", "items": { "$dynamicRef": "#node" } } } } anchor.json100640000766000024 646415240201330 23045 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "Location-independent identifier", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "#foo", "$defs": { "A": { "$anchor": "foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Location-independent identifier with absolute URI", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/bar#foo", "$defs": { "A": { "$id": "http://localhost:1234/v1/bar", "$anchor": "foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Location-independent identifier with base URI change in subschema", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/root", "$ref": "http://localhost:1234/v1/nested.json#foo", "$defs": { "A": { "$id": "nested.json", "$defs": { "B": { "$anchor": "foo", "type": "integer" } } } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "same $anchor with different base uri", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/foobar", "$defs": { "A": { "$id": "child1", "allOf": [ { "$id": "child2", "$anchor": "my_anchor", "type": "number" }, { "$anchor": "my_anchor", "type": "string" } ] } }, "$ref": "child1#my_anchor" }, "tests": [ { "description": "$ref resolves to /$defs/A/allOf/1", "data": "a", "valid": true }, { "description": "$ref does not resolve to /$defs/A/allOf/0", "data": 1, "valid": false } ] } ] draft4000755000766000024 015240201330 21370 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/testsid.json100644000766000024 215240201330 22727 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[]draft6000755000766000024 015240201330 21372 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/testsid.json100644000766000024 215240201330 22731 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[]draft7000755000766000024 015240201330 21373 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/testsid.json100644000766000024 215240201330 22732 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[]mutation000755000766000024 015240201330 21205 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/testshash.json100640000766000024 64115240201330 23140 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/mutation[ { "description": "mutation of hashes", "schema": { "foo": { "string": "1", "int": 1, "bigint": 99999999999999999999, "bignum": 0.2 } }, "tests": [ { "description": "object of integers", "data": { "foo": { "string": "1", "int": 1, "bigint": 99999999999999999999, "bignum": 0.2 } }, "valid": true } ] } ] skip_dir000755000766000024 015240201330 21151 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/testsmain.json100640000766000024 34615240201330 23107 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/skip_dir[ { "description": "test group", "schema": true, "tests": [ { "description": "test", "data": 1, "valid": true } ] } ] draft3000755000766000024 015240201330 21367 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/testsref.json100640000766000024 1774115240201330 23224 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "root pointer ref", "schema": { "properties": { "foo": {"$ref": "#"} }, "additionalProperties": false }, "tests": [ { "description": "match", "data": {"foo": false}, "valid": true }, { "description": "recursive match", "data": {"foo": {"foo": false}}, "valid": true }, { "description": "mismatch", "data": {"bar": false}, "valid": false }, { "description": "recursive mismatch", "data": {"foo": {"bar": false}}, "valid": false } ] }, { "description": "relative pointer ref to object", "schema": { "properties": { "foo": {"type": "integer"}, "bar": {"$ref": "#/properties/foo"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "relative pointer ref to array", "schema": { "items": [ {"type": "integer"}, {"$ref": "#/items/0"} ] }, "tests": [ { "description": "match array", "data": [1, 2], "valid": true }, { "description": "mismatch array", "data": [1, "foo"], "valid": false } ] }, { "description": "escaped pointer ref", "schema": { "definitions": { "tilde~field": {"type": "integer"}, "slash/field": {"type": "integer"}, "percent%field": {"type": "integer"} }, "properties": { "tilde": {"$ref": "#/definitions/tilde~0field"}, "slash": {"$ref": "#/definitions/slash~1field"}, "percent": {"$ref": "#/definitions/percent%25field"} } }, "tests": [ { "description": "slash invalid", "data": {"slash": "aoeu"}, "valid": false }, { "description": "tilde invalid", "data": {"tilde": "aoeu"}, "valid": false }, { "description": "percent invalid", "data": {"percent": "aoeu"}, "valid": false }, { "description": "slash valid", "data": {"slash": 123}, "valid": true }, { "description": "tilde valid", "data": {"tilde": 123}, "valid": true }, { "description": "percent valid", "data": {"percent": 123}, "valid": true } ] }, { "description": "nested refs", "schema": { "definitions": { "a": {"type": "integer"}, "b": {"$ref": "#/definitions/a"}, "c": {"$ref": "#/definitions/b"} }, "extends": { "$ref": "#/definitions/c" } }, "tests": [ { "description": "nested ref valid", "data": 5, "valid": true }, { "description": "nested ref invalid", "data": "a", "valid": false } ] }, { "description": "ref overrides any sibling keywords", "schema": { "definitions": { "reffed": { "type": "array" } }, "properties": { "foo": { "$ref": "#/definitions/reffed", "maxItems": 2 } } }, "tests": [ { "description": "remote ref valid", "data": { "foo": [] }, "valid": true }, { "description": "remote ref valid, maxItems ignored", "data": { "foo": [ 1, 2, 3] }, "valid": true }, { "description": "ref invalid", "data": { "foo": "string" }, "valid": false } ] }, { "description": "property named $ref, containing an actual $ref", "schema": { "properties": { "$ref": {"$ref": "#/definitions/is-string"} }, "definitions": { "is-string": { "type": "string" } } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "$ref prevents a sibling id from changing the base uri", "schema": { "id": "http://localhost:1234/sibling_id/base/", "definitions": { "foo": { "id": "http://localhost:1234/sibling_id/foo.json", "type": "string" }, "base_foo": { "$comment": "this canonical uri is http://localhost:1234/sibling_id/base/foo.json", "id": "foo.json", "type": "number" } }, "extends": [ { "$comment": "$ref resolves to http://localhost:1234/sibling_id/base/foo.json, not http://localhost:1234/sibling_id/foo.json", "id": "http://localhost:1234/sibling_id/", "$ref": "foo.json" } ] }, "tests": [ { "description": "$ref resolves to /definitions/base_foo, data does not validate", "data": "a", "valid": false }, { "description": "$ref resolves to /definitions/base_foo, data validates", "data": 1, "valid": true } ] }, { "description": "remote ref, containing refs itself", "schema": {"$ref": "http://json-schema.org/draft-03/schema#"}, "tests": [ { "description": "remote ref valid", "data": {"items": {"type": "integer"}}, "valid": true }, { "description": "remote ref invalid", "data": {"items": {"type": 1}}, "valid": false } ] }, { "description": "naive replacement of $ref with its destination is not correct", "schema": { "definitions": { "a_string": { "type": "string" } }, "enum": [ { "$ref": "#/definitions/a_string" } ] }, "tests": [ { "description": "do not evaluate the $ref inside the enum, matching any string", "data": "this is a string", "valid": false }, { "description": "match the enum exactly", "data": { "$ref": "#/definitions/a_string" }, "valid": true } ] } ] not.json100640000766000024 761215240201330 23225 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "not", "schema": { "not": {"type": "integer"} }, "tests": [ { "description": "allowed", "data": "foo", "valid": true }, { "description": "disallowed", "data": 1, "valid": false } ] }, { "description": "not multiple types", "schema": { "not": {"type": ["integer", "boolean"]} }, "tests": [ { "description": "valid", "data": "foo", "valid": true }, { "description": "mismatch", "data": 1, "valid": false }, { "description": "other mismatch", "data": true, "valid": false } ] }, { "description": "not more complex schema", "schema": { "not": { "type": "object", "properties": { "foo": { "type": "string" } } } }, "tests": [ { "description": "match", "data": 1, "valid": true }, { "description": "other match", "data": {"foo": 1}, "valid": true }, { "description": "mismatch", "data": {"foo": "bar"}, "valid": false } ] }, { "description": "forbidden property", "schema": { "properties": { "foo": { "not": {} } } }, "tests": [ { "description": "property present", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "property absent", "data": {"bar": 1, "baz": 2}, "valid": true } ] }, { "description": "forbid everything with empty schema", "schema": { "not": {} }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "double negation", "schema": { "not": { "not": {} } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] } ] ref.json100640000766000024 4133215240201330 23216 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "root pointer ref", "schema": { "properties": { "foo": {"$ref": "#"} }, "additionalProperties": false }, "tests": [ { "description": "match", "data": {"foo": false}, "valid": true }, { "description": "recursive match", "data": {"foo": {"foo": false}}, "valid": true }, { "description": "mismatch", "data": {"bar": false}, "valid": false }, { "description": "recursive mismatch", "data": {"foo": {"bar": false}}, "valid": false } ] }, { "description": "relative pointer ref to object", "schema": { "properties": { "foo": {"type": "integer"}, "bar": {"$ref": "#/properties/foo"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "relative pointer ref to array", "schema": { "items": [ {"type": "integer"}, {"$ref": "#/items/0"} ] }, "tests": [ { "description": "match array", "data": [1, 2], "valid": true }, { "description": "mismatch array", "data": [1, "foo"], "valid": false } ] }, { "description": "escaped pointer ref", "schema": { "definitions": { "tilde~field": {"type": "integer"}, "slash/field": {"type": "integer"}, "percent%field": {"type": "integer"} }, "properties": { "tilde": {"$ref": "#/definitions/tilde~0field"}, "slash": {"$ref": "#/definitions/slash~1field"}, "percent": {"$ref": "#/definitions/percent%25field"} } }, "tests": [ { "description": "slash invalid", "data": {"slash": "aoeu"}, "valid": false }, { "description": "tilde invalid", "data": {"tilde": "aoeu"}, "valid": false }, { "description": "percent invalid", "data": {"percent": "aoeu"}, "valid": false }, { "description": "slash valid", "data": {"slash": 123}, "valid": true }, { "description": "tilde valid", "data": {"tilde": 123}, "valid": true }, { "description": "percent valid", "data": {"percent": 123}, "valid": true } ] }, { "description": "nested refs", "schema": { "definitions": { "a": {"type": "integer"}, "b": {"$ref": "#/definitions/a"}, "c": {"$ref": "#/definitions/b"} }, "allOf": [{ "$ref": "#/definitions/c" }] }, "tests": [ { "description": "nested ref valid", "data": 5, "valid": true }, { "description": "nested ref invalid", "data": "a", "valid": false } ] }, { "description": "ref overrides any sibling keywords", "schema": { "definitions": { "reffed": { "type": "array" } }, "properties": { "foo": { "$ref": "#/definitions/reffed", "maxItems": 2 } } }, "tests": [ { "description": "ref valid", "data": { "foo": [] }, "valid": true }, { "description": "ref valid, maxItems ignored", "data": { "foo": [ 1, 2, 3] }, "valid": true }, { "description": "ref invalid", "data": { "foo": "string" }, "valid": false } ] }, { "description": "$ref prevents a sibling id from changing the base uri", "schema": { "id": "http://localhost:1234/sibling_id/base/", "definitions": { "foo": { "id": "http://localhost:1234/sibling_id/foo.json", "type": "string" }, "base_foo": { "$comment": "this canonical uri is http://localhost:1234/sibling_id/base/foo.json", "id": "foo.json", "type": "number" } }, "allOf": [ { "$comment": "$ref resolves to http://localhost:1234/sibling_id/base/foo.json, not http://localhost:1234/sibling_id/foo.json", "id": "http://localhost:1234/sibling_id/", "$ref": "foo.json" } ] }, "tests": [ { "description": "$ref resolves to /definitions/base_foo, data does not validate", "data": "a", "valid": false }, { "description": "$ref resolves to /definitions/base_foo, data validates", "data": 1, "valid": true } ] }, { "description": "remote ref, containing refs itself", "schema": {"$ref": "http://json-schema.org/draft-04/schema#"}, "tests": [ { "description": "remote ref valid", "data": {"minLength": 1}, "valid": true }, { "description": "remote ref invalid", "data": {"minLength": -1}, "valid": false } ] }, { "description": "property named $ref that is not a reference", "schema": { "properties": { "$ref": {"type": "string"} } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "property named $ref, containing an actual $ref", "schema": { "properties": { "$ref": {"$ref": "#/definitions/is-string"} }, "definitions": { "is-string": { "type": "string" } } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "Recursive references between schemas", "schema": { "id": "http://localhost:1234/tree", "description": "tree of nodes", "type": "object", "properties": { "meta": {"type": "string"}, "nodes": { "type": "array", "items": {"$ref": "node"} } }, "required": ["meta", "nodes"], "definitions": { "node": { "id": "http://localhost:1234/node", "description": "node", "type": "object", "properties": { "value": {"type": "number"}, "subtree": {"$ref": "tree"} }, "required": ["value"] } } }, "tests": [ { "description": "valid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": 1.1}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": true }, { "description": "invalid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": "string is invalid"}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": false } ] }, { "description": "refs with quote", "schema": { "properties": { "foo\"bar": {"$ref": "#/definitions/foo%22bar"} }, "definitions": { "foo\"bar": {"type": "number"} } }, "tests": [ { "description": "object with numbers is valid", "data": { "foo\"bar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\"bar": "1" }, "valid": false } ] }, { "description": "Location-independent identifier", "schema": { "allOf": [{ "$ref": "#foo" }], "definitions": { "A": { "id": "#foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Location-independent identifier with base URI change in subschema", "schema": { "id": "http://localhost:1234/root", "allOf": [{ "$ref": "http://localhost:1234/nested.json#foo" }], "definitions": { "A": { "id": "nested.json", "definitions": { "B": { "id": "#foo", "type": "integer" } } } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "naive replacement of $ref with its destination is not correct", "schema": { "definitions": { "a_string": { "type": "string" } }, "enum": [ { "$ref": "#/definitions/a_string" } ] }, "tests": [ { "description": "do not evaluate the $ref inside the enum, matching any string", "data": "this is a string", "valid": false }, { "description": "match the enum exactly", "data": { "$ref": "#/definitions/a_string" }, "valid": true } ] }, { "description": "id must be resolved against nearest parent, not just immediate parent", "schema": { "id": "http://example.com/a.json", "definitions": { "x": { "id": "http://example.com/b/c.json", "not": { "definitions": { "y": { "id": "d.json", "type": "number" } } } } }, "allOf": [ { "$ref": "http://example.com/b/d.json" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "id with file URI still resolves pointers - *nix", "schema": { "id": "file:///folder/file.json", "definitions": { "foo": { "type": "number" } }, "allOf": [ { "$ref": "#/definitions/foo" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "id with file URI still resolves pointers - windows", "schema": { "id": "file:///c:/folder/file.json", "definitions": { "foo": { "type": "number" } }, "allOf": [ { "$ref": "#/definitions/foo" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "empty tokens in $ref json-pointer", "schema": { "definitions": { "": { "definitions": { "": { "type": "number" } } } }, "allOf": [ { "$ref": "#/definitions//definitions/" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] not.json100640000766000024 1531015240201330 23241 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "not", "schema": { "not": {"type": "integer"} }, "tests": [ { "description": "allowed", "data": "foo", "valid": true }, { "description": "disallowed", "data": 1, "valid": false } ] }, { "description": "not multiple types", "schema": { "not": {"type": ["integer", "boolean"]} }, "tests": [ { "description": "valid", "data": "foo", "valid": true }, { "description": "mismatch", "data": 1, "valid": false }, { "description": "other mismatch", "data": true, "valid": false } ] }, { "description": "not more complex schema", "schema": { "not": { "type": "object", "properties": { "foo": { "type": "string" } } } }, "tests": [ { "description": "match", "data": 1, "valid": true }, { "description": "other match", "data": {"foo": 1}, "valid": true }, { "description": "mismatch", "data": {"foo": "bar"}, "valid": false } ] }, { "description": "forbidden property", "schema": { "properties": { "foo": { "not": {} } } }, "tests": [ { "description": "property present", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "property absent", "data": {"bar": 1, "baz": 2}, "valid": true } ] }, { "description": "forbid everything with empty schema", "schema": { "not": {} }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "forbid everything with boolean schema true", "schema": { "not": true }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "allow everything with boolean schema false", "schema": { "not": false }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "double negation", "schema": { "not": { "not": {} } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] } ] ref.json100640000766000024 6521315240201330 23224 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "root pointer ref", "schema": { "properties": { "foo": {"$ref": "#"} }, "additionalProperties": false }, "tests": [ { "description": "match", "data": {"foo": false}, "valid": true }, { "description": "recursive match", "data": {"foo": {"foo": false}}, "valid": true }, { "description": "mismatch", "data": {"bar": false}, "valid": false }, { "description": "recursive mismatch", "data": {"foo": {"bar": false}}, "valid": false } ] }, { "description": "relative pointer ref to object", "schema": { "properties": { "foo": {"type": "integer"}, "bar": {"$ref": "#/properties/foo"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "relative pointer ref to array", "schema": { "items": [ {"type": "integer"}, {"$ref": "#/items/0"} ] }, "tests": [ { "description": "match array", "data": [1, 2], "valid": true }, { "description": "mismatch array", "data": [1, "foo"], "valid": false } ] }, { "description": "escaped pointer ref", "schema": { "definitions": { "tilde~field": {"type": "integer"}, "slash/field": {"type": "integer"}, "percent%field": {"type": "integer"} }, "properties": { "tilde": {"$ref": "#/definitions/tilde~0field"}, "slash": {"$ref": "#/definitions/slash~1field"}, "percent": {"$ref": "#/definitions/percent%25field"} } }, "tests": [ { "description": "slash invalid", "data": {"slash": "aoeu"}, "valid": false }, { "description": "tilde invalid", "data": {"tilde": "aoeu"}, "valid": false }, { "description": "percent invalid", "data": {"percent": "aoeu"}, "valid": false }, { "description": "slash valid", "data": {"slash": 123}, "valid": true }, { "description": "tilde valid", "data": {"tilde": 123}, "valid": true }, { "description": "percent valid", "data": {"percent": 123}, "valid": true } ] }, { "description": "nested refs", "schema": { "definitions": { "a": {"type": "integer"}, "b": {"$ref": "#/definitions/a"}, "c": {"$ref": "#/definitions/b"} }, "allOf": [{ "$ref": "#/definitions/c" }] }, "tests": [ { "description": "nested ref valid", "data": 5, "valid": true }, { "description": "nested ref invalid", "data": "a", "valid": false } ] }, { "description": "ref overrides any sibling keywords", "schema": { "definitions": { "reffed": { "type": "array" } }, "properties": { "foo": { "$ref": "#/definitions/reffed", "maxItems": 2 } } }, "tests": [ { "description": "ref valid", "data": { "foo": [] }, "valid": true }, { "description": "ref valid, maxItems ignored", "data": { "foo": [ 1, 2, 3] }, "valid": true }, { "description": "ref invalid", "data": { "foo": "string" }, "valid": false } ] }, { "description": "$ref prevents a sibling $id from changing the base uri", "schema": { "$id": "http://localhost:1234/sibling_id/base/", "definitions": { "foo": { "$id": "http://localhost:1234/sibling_id/foo.json", "type": "string" }, "base_foo": { "$comment": "this canonical uri is http://localhost:1234/sibling_id/base/foo.json", "$id": "foo.json", "type": "number" } }, "allOf": [ { "$comment": "$ref resolves to http://localhost:1234/sibling_id/base/foo.json, not http://localhost:1234/sibling_id/foo.json", "$id": "http://localhost:1234/sibling_id/", "$ref": "foo.json" } ] }, "tests": [ { "description": "$ref resolves to /definitions/base_foo, data does not validate", "data": "a", "valid": false }, { "description": "$ref resolves to /definitions/base_foo, data validates", "data": 1, "valid": true } ] }, { "description": "remote ref, containing refs itself", "schema": {"$ref": "http://json-schema.org/draft-06/schema#"}, "tests": [ { "description": "remote ref valid", "data": {"minLength": 1}, "valid": true }, { "description": "remote ref invalid", "data": {"minLength": -1}, "valid": false } ] }, { "description": "property named $ref that is not a reference", "schema": { "properties": { "$ref": {"type": "string"} } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "property named $ref, containing an actual $ref", "schema": { "properties": { "$ref": {"$ref": "#/definitions/is-string"} }, "definitions": { "is-string": { "type": "string" } } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "$ref to boolean schema true", "schema": { "allOf": [{ "$ref": "#/definitions/bool" }], "definitions": { "bool": true } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "$ref to boolean schema false", "schema": { "allOf": [{ "$ref": "#/definitions/bool" }], "definitions": { "bool": false } }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "Recursive references between schemas", "schema": { "$id": "http://localhost:1234/tree", "description": "tree of nodes", "type": "object", "properties": { "meta": {"type": "string"}, "nodes": { "type": "array", "items": {"$ref": "node"} } }, "required": ["meta", "nodes"], "definitions": { "node": { "$id": "http://localhost:1234/node", "description": "node", "type": "object", "properties": { "value": {"type": "number"}, "subtree": {"$ref": "tree"} }, "required": ["value"] } } }, "tests": [ { "description": "valid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": 1.1}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": true }, { "description": "invalid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": "string is invalid"}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": false } ] }, { "description": "refs with quote", "schema": { "properties": { "foo\"bar": {"$ref": "#/definitions/foo%22bar"} }, "definitions": { "foo\"bar": {"type": "number"} } }, "tests": [ { "description": "object with numbers is valid", "data": { "foo\"bar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\"bar": "1" }, "valid": false } ] }, { "description": "Location-independent identifier", "schema": { "allOf": [{ "$ref": "#foo" }], "definitions": { "A": { "$id": "#foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Reference an anchor with a non-relative URI", "schema": { "$id": "https://example.com/schema-with-anchor", "allOf": [{ "$ref": "https://example.com/schema-with-anchor#foo" }], "definitions": { "A": { "$id": "#foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Location-independent identifier with base URI change in subschema", "schema": { "$id": "http://localhost:1234/root", "allOf": [{ "$ref": "http://localhost:1234/nested.json#foo" }], "definitions": { "A": { "$id": "nested.json", "definitions": { "B": { "$id": "#foo", "type": "integer" } } } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "naive replacement of $ref with its destination is not correct", "schema": { "definitions": { "a_string": { "type": "string" } }, "enum": [ { "$ref": "#/definitions/a_string" } ] }, "tests": [ { "description": "do not evaluate the $ref inside the enum, matching any string", "data": "this is a string", "valid": false }, { "description": "do not evaluate the $ref inside the enum, definition exact match", "data": { "type": "string" }, "valid": false }, { "description": "match the enum exactly", "data": { "$ref": "#/definitions/a_string" }, "valid": true } ] }, { "description": "refs with relative uris and defs", "schema": { "$id": "http://example.com/schema-relative-uri-defs1.json", "properties": { "foo": { "$id": "schema-relative-uri-defs2.json", "definitions": { "inner": { "properties": { "bar": { "type": "string" } } } }, "allOf": [ { "$ref": "#/definitions/inner" } ] } }, "allOf": [ { "$ref": "schema-relative-uri-defs2.json" } ] }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "relative refs with absolute uris and defs", "schema": { "$id": "http://example.com/schema-refs-absolute-uris-defs1.json", "properties": { "foo": { "$id": "http://example.com/schema-refs-absolute-uris-defs2.json", "definitions": { "inner": { "properties": { "bar": { "type": "string" } } } }, "allOf": [ { "$ref": "#/definitions/inner" } ] } }, "allOf": [ { "$ref": "schema-refs-absolute-uris-defs2.json" } ] }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "simple URN base URI with $ref via the URN", "schema": { "$comment": "URIs do not have to have HTTP(s) schemes", "$id": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed", "minimum": 30, "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed"} } }, "tests": [ { "description": "valid under the URN IDed schema", "data": {"foo": 37}, "valid": true }, { "description": "invalid under the URN IDed schema", "data": {"foo": 12}, "valid": false } ] }, { "description": "simple URN base URI with JSON pointer", "schema": { "$comment": "URIs do not have to have HTTP(s) schemes", "$id": "urn:uuid:deadbeef-1234-00ff-ff00-4321feebdaed", "properties": { "foo": {"$ref": "#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with NSS", "schema": { "$comment": "RFC 8141 §2.2", "$id": "urn:example:1/406/47452/2", "properties": { "foo": {"$ref": "#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with r-component", "schema": { "$comment": "RFC 8141 §2.3.1", "$id": "urn:example:foo-bar-baz-qux?+CCResolve:cc=uk", "properties": { "foo": {"$ref": "#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with q-component", "schema": { "$comment": "RFC 8141 §2.3.2", "$id": "urn:example:weather?=op=map&lat=39.56&lon=-104.85&datetime=1969-07-21T02:56:15Z", "properties": { "foo": {"$ref": "#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and JSON pointer ref", "schema": { "$id": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and anchor ref", "schema": { "$id": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed#something"} }, "definitions": { "bar": { "$id": "#something", "type": "string" } } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "ref with absolute-path-reference", "schema": { "$id": "http://example.com/ref/absref.json", "definitions": { "a": { "$id": "http://example.com/ref/absref/foobar.json", "type": "number" }, "b": { "$id": "http://example.com/absref/foobar.json", "type": "string" } }, "allOf": [ { "$ref": "/absref/foobar.json" } ] }, "tests": [ { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "an integer is invalid", "data": 12, "valid": false } ] }, { "description": "$id with file URI still resolves pointers - *nix", "schema": { "$id": "file:///folder/file.json", "definitions": { "foo": { "type": "number" } }, "allOf": [ { "$ref": "#/definitions/foo" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "$id with file URI still resolves pointers - windows", "schema": { "$id": "file:///c:/folder/file.json", "definitions": { "foo": { "type": "number" } }, "allOf": [ { "$ref": "#/definitions/foo" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "empty tokens in $ref json-pointer", "schema": { "definitions": { "": { "definitions": { "": { "type": "number" } } } }, "allOf": [ { "$ref": "#/definitions//definitions/" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] not.json100640000766000024 1531015240201330 23242 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "not", "schema": { "not": {"type": "integer"} }, "tests": [ { "description": "allowed", "data": "foo", "valid": true }, { "description": "disallowed", "data": 1, "valid": false } ] }, { "description": "not multiple types", "schema": { "not": {"type": ["integer", "boolean"]} }, "tests": [ { "description": "valid", "data": "foo", "valid": true }, { "description": "mismatch", "data": 1, "valid": false }, { "description": "other mismatch", "data": true, "valid": false } ] }, { "description": "not more complex schema", "schema": { "not": { "type": "object", "properties": { "foo": { "type": "string" } } } }, "tests": [ { "description": "match", "data": 1, "valid": true }, { "description": "other match", "data": {"foo": 1}, "valid": true }, { "description": "mismatch", "data": {"foo": "bar"}, "valid": false } ] }, { "description": "forbidden property", "schema": { "properties": { "foo": { "not": {} } } }, "tests": [ { "description": "property present", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "property absent", "data": {"bar": 1, "baz": 2}, "valid": true } ] }, { "description": "forbid everything with empty schema", "schema": { "not": {} }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "forbid everything with boolean schema true", "schema": { "not": true }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "allow everything with boolean schema false", "schema": { "not": false }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "double negation", "schema": { "not": { "not": {} } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] } ] ref.json100640000766000024 7315215240201330 23226 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "root pointer ref", "schema": { "properties": { "foo": {"$ref": "#"} }, "additionalProperties": false }, "tests": [ { "description": "match", "data": {"foo": false}, "valid": true }, { "description": "recursive match", "data": {"foo": {"foo": false}}, "valid": true }, { "description": "mismatch", "data": {"bar": false}, "valid": false }, { "description": "recursive mismatch", "data": {"foo": {"bar": false}}, "valid": false } ] }, { "description": "relative pointer ref to object", "schema": { "properties": { "foo": {"type": "integer"}, "bar": {"$ref": "#/properties/foo"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "relative pointer ref to array", "schema": { "items": [ {"type": "integer"}, {"$ref": "#/items/0"} ] }, "tests": [ { "description": "match array", "data": [1, 2], "valid": true }, { "description": "mismatch array", "data": [1, "foo"], "valid": false } ] }, { "description": "escaped pointer ref", "schema": { "definitions": { "tilde~field": {"type": "integer"}, "slash/field": {"type": "integer"}, "percent%field": {"type": "integer"} }, "properties": { "tilde": {"$ref": "#/definitions/tilde~0field"}, "slash": {"$ref": "#/definitions/slash~1field"}, "percent": {"$ref": "#/definitions/percent%25field"} } }, "tests": [ { "description": "slash invalid", "data": {"slash": "aoeu"}, "valid": false }, { "description": "tilde invalid", "data": {"tilde": "aoeu"}, "valid": false }, { "description": "percent invalid", "data": {"percent": "aoeu"}, "valid": false }, { "description": "slash valid", "data": {"slash": 123}, "valid": true }, { "description": "tilde valid", "data": {"tilde": 123}, "valid": true }, { "description": "percent valid", "data": {"percent": 123}, "valid": true } ] }, { "description": "nested refs", "schema": { "definitions": { "a": {"type": "integer"}, "b": {"$ref": "#/definitions/a"}, "c": {"$ref": "#/definitions/b"} }, "allOf": [{ "$ref": "#/definitions/c" }] }, "tests": [ { "description": "nested ref valid", "data": 5, "valid": true }, { "description": "nested ref invalid", "data": "a", "valid": false } ] }, { "description": "ref overrides any sibling keywords", "schema": { "definitions": { "reffed": { "type": "array" } }, "properties": { "foo": { "$ref": "#/definitions/reffed", "maxItems": 2 } } }, "tests": [ { "description": "ref valid", "data": { "foo": [] }, "valid": true }, { "description": "ref valid, maxItems ignored", "data": { "foo": [ 1, 2, 3] }, "valid": true }, { "description": "ref invalid", "data": { "foo": "string" }, "valid": false } ] }, { "description": "$ref prevents a sibling $id from changing the base uri", "schema": { "$id": "http://localhost:1234/sibling_id/base/", "definitions": { "foo": { "$id": "http://localhost:1234/sibling_id/foo.json", "type": "string" }, "base_foo": { "$comment": "this canonical uri is http://localhost:1234/sibling_id/base/foo.json", "$id": "foo.json", "type": "number" } }, "allOf": [ { "$comment": "$ref resolves to http://localhost:1234/sibling_id/base/foo.json, not http://localhost:1234/sibling_id/foo.json", "$id": "http://localhost:1234/sibling_id/", "$ref": "foo.json" } ] }, "tests": [ { "description": "$ref resolves to /definitions/base_foo, data does not validate", "data": "a", "valid": false }, { "description": "$ref resolves to /definitions/base_foo, data validates", "data": 1, "valid": true } ] }, { "description": "remote ref, containing refs itself", "schema": {"$ref": "http://json-schema.org/draft-07/schema#"}, "tests": [ { "description": "remote ref valid", "data": {"minLength": 1}, "valid": true }, { "description": "remote ref invalid", "data": {"minLength": -1}, "valid": false } ] }, { "description": "property named $ref that is not a reference", "schema": { "properties": { "$ref": {"type": "string"} } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "property named $ref, containing an actual $ref", "schema": { "properties": { "$ref": {"$ref": "#/definitions/is-string"} }, "definitions": { "is-string": { "type": "string" } } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "$ref to boolean schema true", "schema": { "allOf": [{ "$ref": "#/definitions/bool" }], "definitions": { "bool": true } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "$ref to boolean schema false", "schema": { "allOf": [{ "$ref": "#/definitions/bool" }], "definitions": { "bool": false } }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "Recursive references between schemas", "schema": { "$id": "http://localhost:1234/tree", "description": "tree of nodes", "type": "object", "properties": { "meta": {"type": "string"}, "nodes": { "type": "array", "items": {"$ref": "node"} } }, "required": ["meta", "nodes"], "definitions": { "node": { "$id": "http://localhost:1234/node", "description": "node", "type": "object", "properties": { "value": {"type": "number"}, "subtree": {"$ref": "tree"} }, "required": ["value"] } } }, "tests": [ { "description": "valid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": 1.1}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": true }, { "description": "invalid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": "string is invalid"}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": false } ] }, { "description": "refs with quote", "schema": { "properties": { "foo\"bar": {"$ref": "#/definitions/foo%22bar"} }, "definitions": { "foo\"bar": {"type": "number"} } }, "tests": [ { "description": "object with numbers is valid", "data": { "foo\"bar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\"bar": "1" }, "valid": false } ] }, { "description": "Location-independent identifier", "schema": { "allOf": [{ "$ref": "#foo" }], "definitions": { "A": { "$id": "#foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Reference an anchor with a non-relative URI", "schema": { "$id": "https://example.com/schema-with-anchor", "allOf": [{ "$ref": "https://example.com/schema-with-anchor#foo" }], "definitions": { "A": { "$id": "#foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Location-independent identifier with base URI change in subschema", "schema": { "$id": "http://localhost:1234/root", "allOf": [{ "$ref": "http://localhost:1234/nested.json#foo" }], "definitions": { "A": { "$id": "nested.json", "definitions": { "B": { "$id": "#foo", "type": "integer" } } } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "naive replacement of $ref with its destination is not correct", "schema": { "definitions": { "a_string": { "type": "string" } }, "enum": [ { "$ref": "#/definitions/a_string" } ] }, "tests": [ { "description": "do not evaluate the $ref inside the enum, matching any string", "data": "this is a string", "valid": false }, { "description": "do not evaluate the $ref inside the enum, definition exact match", "data": { "type": "string" }, "valid": false }, { "description": "match the enum exactly", "data": { "$ref": "#/definitions/a_string" }, "valid": true } ] }, { "description": "refs with relative uris and defs", "schema": { "$id": "http://example.com/schema-relative-uri-defs1.json", "properties": { "foo": { "$id": "schema-relative-uri-defs2.json", "definitions": { "inner": { "properties": { "bar": { "type": "string" } } } }, "allOf": [ { "$ref": "#/definitions/inner" } ] } }, "allOf": [ { "$ref": "schema-relative-uri-defs2.json" } ] }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "relative refs with absolute uris and defs", "schema": { "$id": "http://example.com/schema-refs-absolute-uris-defs1.json", "properties": { "foo": { "$id": "http://example.com/schema-refs-absolute-uris-defs2.json", "definitions": { "inner": { "properties": { "bar": { "type": "string" } } } }, "allOf": [ { "$ref": "#/definitions/inner" } ] } }, "allOf": [ { "$ref": "schema-refs-absolute-uris-defs2.json" } ] }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "$id must be resolved against nearest parent, not just immediate parent", "schema": { "$id": "http://example.com/a.json", "definitions": { "x": { "$id": "http://example.com/b/c.json", "not": { "definitions": { "y": { "$id": "d.json", "type": "number" } } } } }, "allOf": [ { "$ref": "http://example.com/b/d.json" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "simple URN base URI with $ref via the URN", "schema": { "$comment": "URIs do not have to have HTTP(s) schemes", "$id": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed", "minimum": 30, "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed"} } }, "tests": [ { "description": "valid under the URN IDed schema", "data": {"foo": 37}, "valid": true }, { "description": "invalid under the URN IDed schema", "data": {"foo": 12}, "valid": false } ] }, { "description": "simple URN base URI with JSON pointer", "schema": { "$comment": "URIs do not have to have HTTP(s) schemes", "$id": "urn:uuid:deadbeef-1234-00ff-ff00-4321feebdaed", "properties": { "foo": {"$ref": "#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with NSS", "schema": { "$comment": "RFC 8141 §2.2", "$id": "urn:example:1/406/47452/2", "properties": { "foo": {"$ref": "#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with r-component", "schema": { "$comment": "RFC 8141 §2.3.1", "$id": "urn:example:foo-bar-baz-qux?+CCResolve:cc=uk", "properties": { "foo": {"$ref": "#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with q-component", "schema": { "$comment": "RFC 8141 §2.3.2", "$id": "urn:example:weather?=op=map&lat=39.56&lon=-104.85&datetime=1969-07-21T02:56:15Z", "properties": { "foo": {"$ref": "#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and JSON pointer ref", "schema": { "$id": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed#/definitions/bar"} }, "definitions": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and anchor ref", "schema": { "$id": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed#something"} }, "definitions": { "bar": { "$id": "#something", "type": "string" } } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "ref to if", "schema": { "allOf": [ {"$ref": "http://example.com/ref/if"}, { "if": { "$id": "http://example.com/ref/if", "type": "integer" } } ] }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref to then", "schema": { "allOf": [ {"$ref": "http://example.com/ref/then"}, { "then": { "$id": "http://example.com/ref/then", "type": "integer" } } ] }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref to else", "schema": { "allOf": [ {"$ref": "http://example.com/ref/else"}, { "else": { "$id": "http://example.com/ref/else", "type": "integer" } } ] }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref with absolute-path-reference", "schema": { "$id": "http://example.com/ref/absref.json", "definitions": { "a": { "$id": "http://example.com/ref/absref/foobar.json", "type": "number" }, "b": { "$id": "http://example.com/absref/foobar.json", "type": "string" } }, "allOf": [ { "$ref": "/absref/foobar.json" } ] }, "tests": [ { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "an integer is invalid", "data": 12, "valid": false } ] }, { "description": "$id with file URI still resolves pointers - *nix", "schema": { "$id": "file:///folder/file.json", "definitions": { "foo": { "type": "number" } }, "allOf": [ { "$ref": "#/definitions/foo" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "$id with file URI still resolves pointers - windows", "schema": { "$id": "file:///c:/folder/file.json", "definitions": { "foo": { "type": "number" } }, "allOf": [ { "$ref": "#/definitions/foo" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "empty tokens in $ref json-pointer", "schema": { "definitions": { "": { "definitions": { "": { "type": "number" } } } }, "allOf": [ { "$ref": "#/definitions//definitions/" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] content.json100640000766000024 1034515240201330 23256 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "validation of string-encoded content based on media type", "schema": { "$schema": "https://json-schema.org/v1", "contentMediaType": "application/json" }, "tests": [ { "description": "a valid JSON document", "data": "{\"foo\": \"bar\"}", "valid": true }, { "description": "an invalid JSON document; validates true", "data": "{:}", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary string-encoding", "schema": { "$schema": "https://json-schema.org/v1", "contentEncoding": "base64" }, "tests": [ { "description": "a valid base64 string", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "an invalid base64 string (% is not a valid character); validates true", "data": "eyJmb28iOi%iYmFyIn0K", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary-encoded media type documents", "schema": { "$schema": "https://json-schema.org/v1", "contentMediaType": "application/json", "contentEncoding": "base64" }, "tests": [ { "description": "a valid base64-encoded JSON document", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "a validly-encoded invalid JSON document; validates true", "data": "ezp9Cg==", "valid": true }, { "description": "an invalid base64 string that is valid JSON; validates true", "data": "{}", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary-encoded media type documents with schema", "schema": { "$schema": "https://json-schema.org/v1", "contentMediaType": "application/json", "contentEncoding": "base64", "contentSchema": { "type": "object", "required": ["foo"], "properties": { "foo": { "type": "string" } } } }, "tests": [ { "description": "a valid base64-encoded JSON document", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "another valid base64-encoded JSON document", "data": "eyJib28iOiAyMCwgImZvbyI6ICJiYXoifQ==", "valid": true }, { "description": "an invalid base64-encoded JSON document; validates true", "data": "eyJib28iOiAyMH0=", "valid": true }, { "description": "an empty object as a base64-encoded JSON document; validates true", "data": "e30=", "valid": true }, { "description": "an empty array as a base64-encoded JSON document", "data": "W10=", "valid": true }, { "description": "a validly-encoded invalid JSON document; validates true", "data": "ezp9Cg==", "valid": true }, { "description": "an invalid base64 string that is valid JSON; validates true", "data": "{}", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] } ] default.json100640000766000024 452615240201330 23214 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "invalid type for default", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": { "type": "integer", "default": [] } } }, "tests": [ { "description": "valid when property is specified", "data": {"foo": 13}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "invalid string value for default", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "bar": { "type": "string", "minLength": 4, "default": "bad" } } }, "tests": [ { "description": "valid when property is specified", "data": {"bar": "good"}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "the default keyword does not do anything if the property is missing", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "alpha": { "type": "number", "maximum": 3, "default": 5 } } }, "tests": [ { "description": "an explicit property value is checked against maximum (passing)", "data": { "alpha": 1 }, "valid": true }, { "description": "an explicit property value is checked against maximum (failing)", "data": { "alpha": 5 }, "valid": false }, { "description": "missing properties are not filled in with the default", "data": {}, "valid": true } ] } ] maximum.json100640000766000024 313015240201330 23233 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "maximum validation", "schema": { "$schema": "https://json-schema.org/v1", "maximum": 3.0 }, "tests": [ { "description": "below the maximum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 3.0, "valid": true }, { "description": "above the maximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "maximum validation with unsigned integer", "schema": { "$schema": "https://json-schema.org/v1", "maximum": 300 }, "tests": [ { "description": "below the maximum is valid", "data": 299.97, "valid": true }, { "description": "boundary point integer is valid", "data": 300, "valid": true }, { "description": "boundary point float is valid", "data": 300.00, "valid": true }, { "description": "above the maximum is invalid", "data": 300.5, "valid": false } ] } ] minimum.json100640000766000024 404015240201330 23232 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "minimum validation", "schema": { "$schema": "https://json-schema.org/v1", "minimum": 1.1 }, "tests": [ { "description": "above the minimum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 1.1, "valid": true }, { "description": "below the minimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "minimum validation with signed integer", "schema": { "$schema": "https://json-schema.org/v1", "minimum": -2 }, "tests": [ { "description": "negative above the minimum is valid", "data": -1, "valid": true }, { "description": "positive above the minimum is valid", "data": 0, "valid": true }, { "description": "boundary point is valid", "data": -2, "valid": true }, { "description": "boundary point with float is valid", "data": -2.0, "valid": true }, { "description": "float below the minimum is invalid", "data": -2.0001, "valid": false }, { "description": "int below the minimum is invalid", "data": -3, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] pattern.json100640000766000024 462515240201330 23245 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "pattern validation", "schema": { "$schema": "https://json-schema.org/v1", "pattern": "^a*$" }, "tests": [ { "description": "a matching pattern is valid", "data": "aaa", "valid": true }, { "description": "a non-matching pattern is invalid", "data": "abc", "valid": false }, { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "pattern is not anchored", "schema": { "$schema": "https://json-schema.org/v1", "pattern": "a+" }, "tests": [ { "description": "matches a substring", "data": "xxaayy", "valid": true } ] }, { "description": "pattern with Unicode property escape", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\p{Letter}+$" }, "tests": [ { "description": "a valid case with a Unicode letter", "data": "π", "valid": true }, { "description": "another valid case with multiple Unicode letters", "data": "πλ", "valid": true }, { "description": "an invalid case where the string contains digits", "data": "123", "valid": false } ] } ] 04-validate_json_string.t100640000766000024 306415240201330 23160 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool), -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::Deep qw(!array !hash);; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use Test::JSON::Schema::Acceptance; use lib 't/lib'; use SchemaParser; # this is just like t/01-basic.t only it uses the non-deprecated form of the "validate as a # json string" interface. my $accepter = Test::JSON::Schema::Acceptance->new(specification => 'draft7'); my $parser = SchemaParser->new; my $events = intercept( sub { $accepter->acceptance(validate_json_string => sub ($schema, $data_string) { return $parser->validate_json_string($data_string, $schema); }); } ); my @bool_tests = grep $_->isa('Test2::Event::Ok') && $_->name =~ /boolean type matches booleans/, @$events; is(@bool_tests, 10, 'found all the tests that check for boolean type'); cmp_deeply( \@bool_tests, array_each(methods( pass => 1, effective_pass => 1, )), 'tests pass for checking schemas that test for boolean type', ); done_testing; 11-additional-resources.t100640000766000024 170115240201330 23062 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::V0 -no_pragmas => 1; use if $ENV{AUTHOR_TESTING}, 'Test2::Warnings'; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use Test::JSON::Schema::Acceptance; my $accepter = Test::JSON::Schema::Acceptance->new(specification => 'draft2020-12'); ok($accepter->additional_resources->is_dir, 'additional_resources directory exists'); ok($accepter->additional_resources->child('integer.json')->is_file, 'integer.json file exists'); done_testing; minimum-version.t100644000766000024 15215240201330 23336 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/authoruse strict; use warnings; use Test::More; use Test::MinimumVersion; all_minimum_version_ok( qq{5.020} ); ExtUtils000755000766000024 015240201330 20272 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/incHasCompiler.pm100644000766000024 2236315240201330 23224 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/inc/ExtUtilspackage ExtUtils::HasCompiler; $ExtUtils::HasCompiler::VERSION = '0.025'; use strict; use warnings; use base 'Exporter'; our @EXPORT_OK = qw/can_compile_loadable_object can_compile_static_library can_compile_extension/; our %EXPORT_TAGS = (all => \@EXPORT_OK); use Config; use Carp 'carp'; use File::Basename 'basename'; use File::Spec::Functions qw/catfile catdir rel2abs curdir/; use File::Temp qw/tempdir tempfile/; my $tempdir = tempdir('HASCOMPILERXXXX', CLEANUP => 1, DIR => rel2abs(curdir)); my $loadable_object_format = <<'END'; #define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #ifndef PERL_UNUSED_VAR #define PERL_UNUSED_VAR(var) #endif XS(exported) { #ifdef dVAR dVAR; #endif dXSARGS; PERL_UNUSED_VAR(cv); /* -W */ PERL_UNUSED_VAR(items); /* -W */ XSRETURN_IV(42); } #ifndef XS_EXTERNAL #define XS_EXTERNAL(foo) XS(foo) #endif /* we don't want to mess with .def files on mingw */ #if defined(WIN32) && defined(__GNUC__) # define EXPORT __declspec(dllexport) #else # define EXPORT #endif EXPORT XS_EXTERNAL(boot_%s) { #ifdef dVAR dVAR; #endif dXSARGS; PERL_UNUSED_VAR(cv); /* -W */ PERL_UNUSED_VAR(items); /* -W */ newXS("%s::exported", exported, __FILE__); } END my $counter = 1; my %prelinking = map { $_ => 1 } qw/MSWin32 VMS aix/; sub can_compile_loadable_object { my %args = @_; my $output = $args{output} || \*STDOUT; my $config = $args{config} || 'ExtUtils::HasCompiler::Config'; return if not $config->get('usedl'); my ($source_handle, $source_name) = tempfile('TESTXXXX', DIR => $tempdir, SUFFIX => '.c', UNLINK => 1); my $basename = basename($source_name, '.c'); my $abs_basename = catfile($tempdir, $basename); my ($cc, $ccflags, $optimize, $cccdlflags, $ld, $ldflags, $lddlflags, $libperl, $perllibs, $archlibexp, $_o, $dlext) = map { $config->get($_) } qw/cc ccflags optimize cccdlflags ld ldflags lddlflags libperl perllibs archlibexp _o dlext/; my $incdir = catdir($archlibexp, 'CORE'); my $object_file = $abs_basename.$_o; my $loadable_object = "$abs_basename.$dlext"; my @commands; if ($^O eq 'MSWin32' && $cc =~ /^cl/) { push @commands, qq{$cc $ccflags $cccdlflags $optimize /I "$incdir" /c $source_name /Fo$object_file}; push @commands, qq{$ld $object_file $lddlflags $libperl $perllibs /out:$loadable_object /def:$abs_basename.def /pdb:$abs_basename.pdb}; } elsif ($^O eq 'VMS') { # Mksymlists is only the beginning of the story. open my $opt_fh, '>>', "$abs_basename.opt" or do { carp "Couldn't append to '$abs_basename.opt'"; return }; print $opt_fh "PerlShr/Share\n"; close $opt_fh; my $incdirs = $ccflags =~ s{ /inc[^=]+ (?:=)+ (?:\()? ( [^\/\)]* ) }{}xi ? "$1,$incdir" : $incdir; push @commands, qq{$cc $ccflags $optimize /include=($incdirs) $cccdlflags $source_name /obj=$object_file}; push @commands, qq{$ld $ldflags $lddlflags=$loadable_object $object_file,$abs_basename.opt/OPTIONS,${incdir}perlshr_attr.opt/OPTIONS' $perllibs}; } else { my @extra; my $inc = qq{"-I$incdir"}; if ($^O eq 'MSWin32') { my $lib = '-l' . ($libperl =~ /lib([^.]+)\./)[0]; push @extra, "$abs_basename.def", $lib, $perllibs; } elsif ($^O =~ /^(cygwin|msys)$/) { push @extra, catfile($incdir, $config->get('useshrplib') ? 'libperl.dll.a' : 'libperl.a'); } elsif ($^O eq 'aix') { $lddlflags =~ s/\Q$(BASEEXT)\E/$abs_basename/; $lddlflags =~ s/\Q$(PERL_INC)\E/$incdir/; } elsif ($^O eq 'android') { push @extra, qq{"-L$incdir"}, '-lperl', $perllibs; } elsif ($^O eq 'darwin' && $config->get('perlpath') eq '/usr/bin/perl' && ($config->get('osvers') =~ /(\d+)/)[0] >= 18) { $inc = qq{-iwithsysroot "$incdir"}; } push @commands, qq{$cc $ccflags $optimize $inc $cccdlflags -c $source_name -o $object_file}; push @commands, qq{$ld $object_file -o $loadable_object $lddlflags @extra}; } if ($prelinking{$^O}) { require ExtUtils::Mksymlists; ExtUtils::Mksymlists::Mksymlists(NAME => $basename, FILE => $abs_basename, IMPORTS => {}); } my $shortname = '_Loadable' . $counter++; my $package = "ExtUtils::HasCompiler::$shortname"; printf $source_handle $loadable_object_format, $basename, $package or do { carp "Couldn't write to $source_name: $!"; return }; close $source_handle or do { carp "Couldn't close $source_name: $!"; return }; for my $command (@commands) { print $output "$command\n" if not $args{quiet}; system $command and do { carp "Couldn't execute $command: $!"; return }; } # Skip loading when cross-compiling return 1 if exists $args{skip_load} ? $args{skip_load} : $config->get('usecrosscompile'); require DynaLoader; local @DynaLoader::dl_require_symbols = "boot_$basename"; my $handle = DynaLoader::dl_load_file(rel2abs($loadable_object), 0); if ($handle) { my $symbol = DynaLoader::dl_find_symbol($handle, "boot_$basename") or do { carp "Couldn't find boot symbol for $basename"; return }; my $compilet = DynaLoader::dl_install_xsub('__ANON__::__ANON__', $symbol, $source_name); my $ret = eval { $compilet->(); $package->exported } or carp $@; delete $ExtUtils::HasCompiler::{"$shortname\::"}; eval { DynaLoader::dl_unload_file($handle) } or carp $@; return defined $ret && $ret == 42; } else { carp "Couldn't load $loadable_object: " . DynaLoader::dl_error(); return; } } my %static_unsupported_on = map { $_ => 1 } qw/VMS aix MSWin32 cygwin/; sub can_compile_static_library { my %args = @_; my $output = $args{output} || \*STDOUT; my $config = $args{config} || 'ExtUtils::HasCompiler::Config'; return if $config->get('useshrplib') eq 'true'; my ($source_handle, $source_name) = tempfile('TESTXXXX', DIR => $tempdir, SUFFIX => '.c', UNLINK => 1); my $basename = basename($source_name, '.c'); my $abs_basename = catfile($tempdir, $basename); my ($cc, $ccflags, $optimize, $ar, $full_ar, $ranlib, $archlibexp, $_o, $lib_ext) = map { $config->get($_) } qw/cc ccflags optimize ar full_ar ranlib archlibexp _o lib_ext/; my $incdir = catdir($archlibexp, 'CORE'); my $object_file = "$abs_basename$_o"; my $static_library = $abs_basename.$lib_ext; my @commands; if ($static_unsupported_on{$^O}) { return; } else { my $my_ar = length $full_ar ? $full_ar : $ar; push @commands, qq{$cc $ccflags $optimize "-I$incdir" -c $source_name -o $object_file}; push @commands, qq{$my_ar cr $static_library $object_file}; push @commands, qq{$ranlib $static_library} if $ranlib ne ':'; } my $shortname = '_Loadable' . $counter++; my $package = "ExtUtils::HasCompiler::$shortname"; printf $source_handle $loadable_object_format, $basename, $package or do { carp "Couldn't write to $source_name: $!"; return }; close $source_handle or do { carp "Couldn't close $source_name: $!"; return }; for my $command (@commands) { print $output "$command\n" if not $args{quiet}; system $command and do { carp "Couldn't execute $command: $!"; return }; } return 1; } sub can_compile_extension { my %args = @_; $args{config} ||= 'ExtUtils::HasCompiler::Config'; my $linktype = $args{linktype} || ($args{config}->get('usedl') ? 'dynamic' : 'static'); return $linktype eq 'static' ? can_compile_static_library(%args) : can_compile_loadable_object(%args); } sub ExtUtils::HasCompiler::Config::get { my (undef, $key) = @_; return $ENV{uc $key} || $Config{$key}; } 1; # ABSTRACT: Check for the presence of a compiler __END__ =pod =encoding UTF-8 =head1 NAME ExtUtils::HasCompiler - Check for the presence of a compiler =head1 VERSION version 0.025 =head1 SYNOPSIS use ExtUtils::HasCompiler 'can_compile_extension'; if (can_compile_extension()) { ... } else { ... } =head1 DESCRIPTION This module tries to check if the current system is capable of compiling, linking and loading an XS module. B: this is an early release, interface stability isn't guaranteed yet. =head1 FUNCTIONS =head2 can_compile_loadable_object(%opts) This checks if the system can compile, link and load a perl loadable object. It may take the following options: =over 4 =item * quiet Do not output the executed compilation commands. =item * config An L (compatible) object for configuration. =item * skip_load This causes can_compile_loadable_object to not try to load the generated object. This defaults to true on a cross-compiling perl. =back =head2 can_compile_static_library(%opts) This checks if the system can compile and link a perl static library. It does not check it it can compile a new perl with it. It may take the following options: =over 4 =item * quiet Do not output the executed compilation commands. =item * config An L (compatible) object for configuration. =back =head2 can_compile_extension(%opts) This will call either C, or C, depending on which is the default on your configuration. In addition to the arguments listed above, it can take one more optional argument: =over 4 =item * linktype This will force the linktype to be either static or dynamic. Dynamic compilation on a static perl won't work, but static libraries can be viable on a dynamic perl. =back =head1 AUTHOR Leon Timmermans =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2014 by Leon Timmermans. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut output-tests000755000766000024 015240201330 21542 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/shareREADME.md100640000766000024 1037415240201330 23202 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-testsThese tests are intended to validate that implementations are correctly generating output in accordance with the specification. Output was initially specified with draft 2019-09. It remained largely unchanged for draft 2020-12, but will receive an update with the next release. _**NOTE** Although the formats didn't change much between 2019-09 and 2020-12, the tests are copied for 2020-12 because the `$schema` is different and implementations may (but shouldn't) produce different output._ ## Organization The tests are organized by specification release and then into two categories: content and structure. Content tests verify that the keywords are producing the correct annotations and/or error messages. Since there are no requirements on the content of error messages, there's not much that can be verified for them, but it is possible to identify when an error message _could_ be present. Primarily, these tests need to extensively cover the annotation behaviors of each keyword. The only output format needed for these tests is `basic` for 2019-09/2020-12 and `list` for later versions. Structure tests verify that the structures of the various formats (i.e. `flag`, `basic`, `detailed`, `verbose` for 2019-09/2020-12 and `flag`, `list`, `hierarchical` for later versions) are correct. These tests don't need to cover each keyword; rather they need to sufficiently cover the various aspects of building the output structures by using whatever keywords are necessary to do so. In each release folder, you'll also find an _output-schema.json_ file that contains the schema from the specification repo that describes output for that release. This schema will need to be loaded as the tests reference it. ## Test Files The content of a test file is similar to the validation tests in `tests/`: for each test case, the `valid` property has been removed, and an `output` property has been added. The `output` property itself has a property for each of the output formats where the value is a schema that will successfully validate for compliant output. For the content tests, only `basic`/`list` needs to be present. ## Other notes ### Ambiguity around 2019-09/2020-12 `basic` The 2019-09/2020-12 specs don't define the structure of `basic` very thoroughly. Specifically there is a nuance where if the list contains a single output node, there are two possible structures, given the text: - the output node for the root schema appears in the list with a containing node that just has a `valid` property ```json { "valid": false, "errors": [ { "valid": false, "keywordLocation": "", "absoluteKeywordLocation": "https://json-schema.org/tests/content/draft2019-09/general/0", "instanceLocation": "" } ] } ``` - the entire structure is collapsed to just the root output node as `detailed` would do. ```json { "valid": false, "keywordLocation": "", "absoluteKeywordLocation": "https://json-schema.org/tests/content/draft2019-09/general/0", "instanceLocation": "" } ``` As the Test Suite should not prefer one interpretation over another, these cases need to be tested another way. A simple solution (though there are likely others) is to force a second output unit by adding an `"anyOf": [ true ]`. This has no impact on the validation result while adding superfluous structure to the output that avoids the above ambiguous scenario. The test schema should still be targeted on what's being tested and ignore any output units generated by this extra keyword. ## Contributing Of course, first and foremost, follow the [Contributing guide](/CONTRIBUTING.md). When writing test cases, try to keep output validation schemas targeted to verify a single requirement. Where possible (and where it makes sense), create multiple tests to cover multiple requirements. This will help keep the output validation schemas small and increase readability. (It also increases your test count. 😉) For the content tests, there is also a _general.json_ file that contains tests that do not necessarily pertain to any single keyword. enum.json100640000766000024 644015240201330 23366 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "simple enum validation", "schema": {"enum": [1, 2, 3]}, "tests": [ { "description": "one of the enum is valid", "data": 1, "valid": true }, { "description": "something else is invalid", "data": 4, "valid": false } ] }, { "description": "heterogeneous enum validation", "schema": {"enum": [6, "foo", [], true, {"foo": 12}]}, "tests": [ { "description": "one of the enum is valid", "data": [], "valid": true }, { "description": "something else is invalid", "data": null, "valid": false }, { "description": "objects are deep compared", "data": {"foo": false}, "valid": false } ] }, { "description": "heterogeneous enum-with-null validation", "schema": { "enum": [6, null] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "number is valid", "data": 6, "valid": true }, { "description": "something else is invalid", "data": "test", "valid": false } ] }, { "description": "enums in properties", "schema": { "type":"object", "properties": { "foo": {"enum":["foo"]}, "bar": {"enum":["bar"], "required":true} } }, "tests": [ { "description": "both properties are valid", "data": {"foo":"foo", "bar":"bar"}, "valid": true }, { "description": "wrong foo value", "data": {"foo":"foot", "bar":"bar"}, "valid": false }, { "description": "wrong bar value", "data": {"foo":"foo", "bar":"bart"}, "valid": false }, { "description": "missing optional property is valid", "data": {"bar":"bar"}, "valid": true }, { "description": "missing required property is invalid", "data": {"foo":"foo"}, "valid": false }, { "description": "missing all properties is invalid", "data": {}, "valid": false } ] }, { "description": "nul characters in strings", "schema": { "enum": [ "hello\u0000there" ] }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] } ] type.json100640000766000024 3306415240201330 23425 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "integer type matches integers", "schema": {"type": "integer"}, "tests": [ { "description": "an integer is an integer", "data": 1, "valid": true }, { "description": "a float is not an integer", "data": 1.1, "valid": false }, { "description": "a string is not an integer", "data": "foo", "valid": false }, { "description": "a string is still not an integer, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not an integer", "data": {}, "valid": false }, { "description": "an array is not an integer", "data": [], "valid": false }, { "description": "a boolean is not an integer", "data": true, "valid": false }, { "description": "null is not an integer", "data": null, "valid": false } ] }, { "description": "number type matches numbers", "schema": {"type": "number"}, "tests": [ { "description": "an integer is a number", "data": 1, "valid": true }, { "description": "a float with zero fractional part is a number", "data": 1.0, "valid": true }, { "description": "a float is a number", "data": 1.1, "valid": true }, { "description": "a string is not a number", "data": "foo", "valid": false }, { "description": "a string is still not a number, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not a number", "data": {}, "valid": false }, { "description": "an array is not a number", "data": [], "valid": false }, { "description": "a boolean is not a number", "data": true, "valid": false }, { "description": "null is not a number", "data": null, "valid": false } ] }, { "description": "string type matches strings", "schema": {"type": "string"}, "tests": [ { "description": "1 is not a string", "data": 1, "valid": false }, { "description": "a float is not a string", "data": 1.1, "valid": false }, { "description": "a string is a string", "data": "foo", "valid": true }, { "description": "a string is still a string, even if it looks like a number", "data": "1", "valid": true }, { "description": "an object is not a string", "data": {}, "valid": false }, { "description": "an array is not a string", "data": [], "valid": false }, { "description": "a boolean is not a string", "data": true, "valid": false }, { "description": "null is not a string", "data": null, "valid": false } ] }, { "description": "object type matches objects", "schema": {"type": "object"}, "tests": [ { "description": "an integer is not an object", "data": 1, "valid": false }, { "description": "a float is not an object", "data": 1.1, "valid": false }, { "description": "a string is not an object", "data": "foo", "valid": false }, { "description": "an object is an object", "data": {}, "valid": true }, { "description": "an array is not an object", "data": [], "valid": false }, { "description": "a boolean is not an object", "data": true, "valid": false }, { "description": "null is not an object", "data": null, "valid": false } ] }, { "description": "array type matches arrays", "schema": {"type": "array"}, "tests": [ { "description": "an integer is not an array", "data": 1, "valid": false }, { "description": "a float is not an array", "data": 1.1, "valid": false }, { "description": "a string is not an array", "data": "foo", "valid": false }, { "description": "an object is not an array", "data": {}, "valid": false }, { "description": "an array is an array", "data": [], "valid": true }, { "description": "a boolean is not an array", "data": true, "valid": false }, { "description": "null is not an array", "data": null, "valid": false } ] }, { "description": "boolean type matches booleans", "schema": {"type": "boolean"}, "tests": [ { "description": "an integer is not a boolean", "data": 1, "valid": false }, { "description": "a float is not a boolean", "data": 1.1, "valid": false }, { "description": "a string is not a boolean", "data": "foo", "valid": false }, { "description": "an object is not a boolean", "data": {}, "valid": false }, { "description": "an array is not a boolean", "data": [], "valid": false }, { "description": "a boolean is a boolean", "data": true, "valid": true }, { "description": "null is not a boolean", "data": null, "valid": false } ] }, { "description": "null type matches only the null object", "schema": {"type": "null"}, "tests": [ { "description": "an integer is not null", "data": 1, "valid": false }, { "description": "a float is not null", "data": 1.1, "valid": false }, { "description": "a string is not null", "data": "foo", "valid": false }, { "description": "an object is not null", "data": {}, "valid": false }, { "description": "an array is not null", "data": [], "valid": false }, { "description": "a boolean is not null", "data": true, "valid": false }, { "description": "null is null", "data": null, "valid": true } ] }, { "description": "any type matches any type", "schema": {"type": "any"}, "tests": [ { "description": "any type includes integers", "data": 1, "valid": true }, { "description": "any type includes float", "data": 1.1, "valid": true }, { "description": "any type includes string", "data": "foo", "valid": true }, { "description": "any type includes object", "data": {}, "valid": true }, { "description": "any type includes array", "data": [], "valid": true }, { "description": "any type includes boolean", "data": true, "valid": true }, { "description": "any type includes null", "data": null, "valid": true } ] }, { "description": "multiple types can be specified in an array", "schema": {"type": ["integer", "string"]}, "tests": [ { "description": "an integer is valid", "data": 1, "valid": true }, { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "a float is invalid", "data": 1.1, "valid": false }, { "description": "an object is invalid", "data": {}, "valid": false }, { "description": "an array is invalid", "data": [], "valid": false }, { "description": "a boolean is invalid", "data": true, "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "types can include schemas", "schema": { "type": [ "array", {"type": "object"} ] }, "tests": [ { "description": "an integer is invalid", "data": 1, "valid": false }, { "description": "a string is invalid", "data": "foo", "valid": false }, { "description": "a float is invalid", "data": 1.1, "valid": false }, { "description": "an object is valid", "data": {}, "valid": true }, { "description": "an array is valid", "data": [], "valid": true }, { "description": "a boolean is invalid", "data": true, "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "applies a nested schema", "schema": { "type": [ "integer", { "properties": { "foo": {"type": "null"} } } ] }, "tests": [ { "description": "an integer is valid", "data": 1, "valid": true }, { "description": "an object is valid only if it is fully valid", "data": {"foo": null}, "valid": true }, { "description": "an object is invalid otherwise", "data": {"foo": "bar"}, "valid": false } ] }, { "description": "types from separate schemas are merged", "schema": { "type": [ {"type": ["string"]}, {"type": ["array", "null"]} ] }, "tests": [ { "description": "an integer is invalid", "data": 1, "valid": false }, { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "an array is valid", "data": [1, 2, 3], "valid": true } ] } ] enum.json100640000766000024 2356215240201330 23413 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "simple enum validation", "schema": {"enum": [1, 2, 3]}, "tests": [ { "description": "one of the enum is valid", "data": 1, "valid": true }, { "description": "something else is invalid", "data": 4, "valid": false } ] }, { "description": "heterogeneous enum validation", "schema": {"enum": [6, "foo", [], true, {"foo": 12}]}, "tests": [ { "description": "one of the enum is valid", "data": [], "valid": true }, { "description": "something else is invalid", "data": null, "valid": false }, { "description": "objects are deep compared", "data": {"foo": false}, "valid": false }, { "description": "valid object matches", "data": {"foo": 12}, "valid": true }, { "description": "extra properties in object is invalid", "data": {"foo": 12, "boo": 42}, "valid": false } ] }, { "description": "heterogeneous enum-with-null validation", "schema": { "enum": [6, null] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "number is valid", "data": 6, "valid": true }, { "description": "something else is invalid", "data": "test", "valid": false } ] }, { "description": "enums in properties", "schema": { "type":"object", "properties": { "foo": {"enum":["foo"]}, "bar": {"enum":["bar"]} }, "required": ["bar"] }, "tests": [ { "description": "both properties are valid", "data": {"foo":"foo", "bar":"bar"}, "valid": true }, { "description": "wrong foo value", "data": {"foo":"foot", "bar":"bar"}, "valid": false }, { "description": "wrong bar value", "data": {"foo":"foo", "bar":"bart"}, "valid": false }, { "description": "missing optional property is valid", "data": {"bar":"bar"}, "valid": true }, { "description": "missing required property is invalid", "data": {"foo":"foo"}, "valid": false }, { "description": "missing all properties is invalid", "data": {}, "valid": false } ] }, { "description": "enum with escaped characters", "schema": { "enum": ["foo\nbar", "foo\rbar"] }, "tests": [ { "description": "member 1 is valid", "data": "foo\nbar", "valid": true }, { "description": "member 2 is valid", "data": "foo\rbar", "valid": true }, { "description": "another string is invalid", "data": "abc", "valid": false } ] }, { "description": "enum with false does not match 0", "schema": {"enum": [false]}, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "enum with [false] does not match [0]", "schema": {"enum": [[false]]}, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "enum with true does not match 1", "schema": {"enum": [true]}, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "enum with [true] does not match [1]", "schema": {"enum": [[true]]}, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "enum with 0 does not match false", "schema": {"enum": [0]}, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true } ] }, { "description": "enum with [0] does not match [false]", "schema": {"enum": [[0]]}, "tests": [ { "description": "[false] is invalid", "data": [false], "valid": false }, { "description": "[0] is valid", "data": [0], "valid": true }, { "description": "[0.0] is valid", "data": [0.0], "valid": true } ] }, { "description": "enum with 1 does not match true", "schema": {"enum": [1]}, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "enum with [1] does not match [true]", "schema": {"enum": [[1]]}, "tests": [ { "description": "[true] is invalid", "data": [true], "valid": false }, { "description": "[1] is valid", "data": [1], "valid": true }, { "description": "[1.0] is valid", "data": [1.0], "valid": true } ] }, { "description": "nul characters in strings", "schema": { "enum": [ "hello\u0000there" ] }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] }, { "description": "characters with the same visual representation but different codepoint", "schema": { "enum": ["μ"], "$comment": "U+03BC" }, "tests": [ { "description": "character uses the same codepoint", "data": "μ", "comment": "U+03BC", "valid": true }, { "description": "character looks the same but uses a different codepoint", "data": "µ", "comment": "U+00B5", "valid": false } ] }, { "description": "characters with the same visual representation, but different number of codepoints", "schema": { "enum": ["ä"], "$comment": "U+00E4" }, "tests": [ { "description": "character uses the same codepoint", "data": "ä", "comment": "U+00E4", "valid": true }, { "description": "character looks the same but uses combining marks", "data": "ä", "comment": "a, U+0308", "valid": false } ] } ] type.json100640000766000024 3164515240201330 23431 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "integer type matches integers", "schema": {"type": "integer"}, "tests": [ { "description": "an integer is an integer", "data": 1, "valid": true }, { "description": "a float is not an integer", "data": 1.1, "valid": false }, { "description": "a string is not an integer", "data": "foo", "valid": false }, { "description": "a string is still not an integer, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not an integer", "data": {}, "valid": false }, { "description": "an array is not an integer", "data": [], "valid": false }, { "description": "a boolean is not an integer", "data": true, "valid": false }, { "description": "null is not an integer", "data": null, "valid": false } ] }, { "description": "number type matches numbers", "schema": {"type": "number"}, "tests": [ { "description": "an integer is a number", "data": 1, "valid": true }, { "description": "a float with zero fractional part is a number", "data": 1.0, "valid": true }, { "description": "a float is a number", "data": 1.1, "valid": true }, { "description": "a string is not a number", "data": "foo", "valid": false }, { "description": "a string is still not a number, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not a number", "data": {}, "valid": false }, { "description": "an array is not a number", "data": [], "valid": false }, { "description": "a boolean is not a number", "data": true, "valid": false }, { "description": "null is not a number", "data": null, "valid": false } ] }, { "description": "string type matches strings", "schema": {"type": "string"}, "tests": [ { "description": "1 is not a string", "data": 1, "valid": false }, { "description": "a float is not a string", "data": 1.1, "valid": false }, { "description": "a string is a string", "data": "foo", "valid": true }, { "description": "a string is still a string, even if it looks like a number", "data": "1", "valid": true }, { "description": "an empty string is still a string", "data": "", "valid": true }, { "description": "an object is not a string", "data": {}, "valid": false }, { "description": "an array is not a string", "data": [], "valid": false }, { "description": "a boolean is not a string", "data": true, "valid": false }, { "description": "null is not a string", "data": null, "valid": false } ] }, { "description": "object type matches objects", "schema": {"type": "object"}, "tests": [ { "description": "an integer is not an object", "data": 1, "valid": false }, { "description": "a float is not an object", "data": 1.1, "valid": false }, { "description": "a string is not an object", "data": "foo", "valid": false }, { "description": "an object is an object", "data": {}, "valid": true }, { "description": "an array is not an object", "data": [], "valid": false }, { "description": "a boolean is not an object", "data": true, "valid": false }, { "description": "null is not an object", "data": null, "valid": false } ] }, { "description": "array type matches arrays", "schema": {"type": "array"}, "tests": [ { "description": "an integer is not an array", "data": 1, "valid": false }, { "description": "a float is not an array", "data": 1.1, "valid": false }, { "description": "a string is not an array", "data": "foo", "valid": false }, { "description": "an object is not an array", "data": {}, "valid": false }, { "description": "an array is an array", "data": [], "valid": true }, { "description": "a boolean is not an array", "data": true, "valid": false }, { "description": "null is not an array", "data": null, "valid": false } ] }, { "description": "boolean type matches booleans", "schema": {"type": "boolean"}, "tests": [ { "description": "an integer is not a boolean", "data": 1, "valid": false }, { "description": "zero is not a boolean", "data": 0, "valid": false }, { "description": "a float is not a boolean", "data": 1.1, "valid": false }, { "description": "a string is not a boolean", "data": "foo", "valid": false }, { "description": "an empty string is not a boolean", "data": "", "valid": false }, { "description": "an object is not a boolean", "data": {}, "valid": false }, { "description": "an array is not a boolean", "data": [], "valid": false }, { "description": "true is a boolean", "data": true, "valid": true }, { "description": "false is a boolean", "data": false, "valid": true }, { "description": "null is not a boolean", "data": null, "valid": false } ] }, { "description": "null type matches only the null object", "schema": {"type": "null"}, "tests": [ { "description": "an integer is not null", "data": 1, "valid": false }, { "description": "a float is not null", "data": 1.1, "valid": false }, { "description": "zero is not null", "data": 0, "valid": false }, { "description": "a string is not null", "data": "foo", "valid": false }, { "description": "an empty string is not null", "data": "", "valid": false }, { "description": "an object is not null", "data": {}, "valid": false }, { "description": "an array is not null", "data": [], "valid": false }, { "description": "true is not null", "data": true, "valid": false }, { "description": "false is not null", "data": false, "valid": false }, { "description": "null is null", "data": null, "valid": true } ] }, { "description": "multiple types can be specified in an array", "schema": {"type": ["integer", "string"]}, "tests": [ { "description": "an integer is valid", "data": 1, "valid": true }, { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "a float is invalid", "data": 1.1, "valid": false }, { "description": "an object is invalid", "data": {}, "valid": false }, { "description": "an array is invalid", "data": [], "valid": false }, { "description": "a boolean is invalid", "data": true, "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type as array with one item", "schema": { "type": ["string"] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is invalid", "data": 123, "valid": false } ] }, { "description": "type: array or object", "schema": { "type": ["array", "object"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type: array, object or null", "schema": { "type": ["array", "object", "null"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false } ] } ] enum.json100640000766000024 2114615240201330 23411 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "simple enum validation", "schema": {"enum": [1, 2, 3]}, "tests": [ { "description": "one of the enum is valid", "data": 1, "valid": true }, { "description": "something else is invalid", "data": 4, "valid": false } ] }, { "description": "heterogeneous enum validation", "schema": {"enum": [6, "foo", [], true, {"foo": 12}]}, "tests": [ { "description": "one of the enum is valid", "data": [], "valid": true }, { "description": "something else is invalid", "data": null, "valid": false }, { "description": "objects are deep compared", "data": {"foo": false}, "valid": false }, { "description": "valid object matches", "data": {"foo": 12}, "valid": true }, { "description": "extra properties in object is invalid", "data": {"foo": 12, "boo": 42}, "valid": false } ] }, { "description": "heterogeneous enum-with-null validation", "schema": { "enum": [6, null] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "number is valid", "data": 6, "valid": true }, { "description": "something else is invalid", "data": "test", "valid": false } ] }, { "description": "enums in properties", "schema": { "type":"object", "properties": { "foo": {"enum":["foo"]}, "bar": {"enum":["bar"]} }, "required": ["bar"] }, "tests": [ { "description": "both properties are valid", "data": {"foo":"foo", "bar":"bar"}, "valid": true }, { "description": "wrong foo value", "data": {"foo":"foot", "bar":"bar"}, "valid": false }, { "description": "wrong bar value", "data": {"foo":"foo", "bar":"bart"}, "valid": false }, { "description": "missing optional property is valid", "data": {"bar":"bar"}, "valid": true }, { "description": "missing required property is invalid", "data": {"foo":"foo"}, "valid": false }, { "description": "missing all properties is invalid", "data": {}, "valid": false } ] }, { "description": "enum with escaped characters", "schema": { "enum": ["foo\nbar", "foo\rbar"] }, "tests": [ { "description": "member 1 is valid", "data": "foo\nbar", "valid": true }, { "description": "member 2 is valid", "data": "foo\rbar", "valid": true }, { "description": "another string is invalid", "data": "abc", "valid": false } ] }, { "description": "enum with false does not match 0", "schema": {"enum": [false]}, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "enum with [false] does not match [0]", "schema": {"enum": [[false]]}, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "enum with true does not match 1", "schema": {"enum": [true]}, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "enum with [true] does not match [1]", "schema": {"enum": [[true]]}, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "enum with 0 does not match false", "schema": {"enum": [0]}, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true } ] }, { "description": "enum with [0] does not match [false]", "schema": {"enum": [[0]]}, "tests": [ { "description": "[false] is invalid", "data": [false], "valid": false }, { "description": "[0] is valid", "data": [0], "valid": true }, { "description": "[0.0] is valid", "data": [0.0], "valid": true } ] }, { "description": "enum with 1 does not match true", "schema": {"enum": [1]}, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "enum with [1] does not match [true]", "schema": {"enum": [[1]]}, "tests": [ { "description": "[true] is invalid", "data": [true], "valid": false }, { "description": "[1] is valid", "data": [1], "valid": true }, { "description": "[1.0] is valid", "data": [1.0], "valid": true } ] }, { "description": "nul characters in strings", "schema": { "enum": [ "hello\u0000there" ] }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] } ] type.json100640000766000024 3214015240201330 23422 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "integer type matches integers", "schema": {"type": "integer"}, "tests": [ { "description": "an integer is an integer", "data": 1, "valid": true }, { "description": "a float with zero fractional part is an integer", "data": 1.0, "valid": true }, { "description": "a float is not an integer", "data": 1.1, "valid": false }, { "description": "a string is not an integer", "data": "foo", "valid": false }, { "description": "a string is still not an integer, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not an integer", "data": {}, "valid": false }, { "description": "an array is not an integer", "data": [], "valid": false }, { "description": "a boolean is not an integer", "data": true, "valid": false }, { "description": "null is not an integer", "data": null, "valid": false } ] }, { "description": "number type matches numbers", "schema": {"type": "number"}, "tests": [ { "description": "an integer is a number", "data": 1, "valid": true }, { "description": "a float with zero fractional part is a number (and an integer)", "data": 1.0, "valid": true }, { "description": "a float is a number", "data": 1.1, "valid": true }, { "description": "a string is not a number", "data": "foo", "valid": false }, { "description": "a string is still not a number, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not a number", "data": {}, "valid": false }, { "description": "an array is not a number", "data": [], "valid": false }, { "description": "a boolean is not a number", "data": true, "valid": false }, { "description": "null is not a number", "data": null, "valid": false } ] }, { "description": "string type matches strings", "schema": {"type": "string"}, "tests": [ { "description": "1 is not a string", "data": 1, "valid": false }, { "description": "a float is not a string", "data": 1.1, "valid": false }, { "description": "a string is a string", "data": "foo", "valid": true }, { "description": "a string is still a string, even if it looks like a number", "data": "1", "valid": true }, { "description": "an empty string is still a string", "data": "", "valid": true }, { "description": "an object is not a string", "data": {}, "valid": false }, { "description": "an array is not a string", "data": [], "valid": false }, { "description": "a boolean is not a string", "data": true, "valid": false }, { "description": "null is not a string", "data": null, "valid": false } ] }, { "description": "object type matches objects", "schema": {"type": "object"}, "tests": [ { "description": "an integer is not an object", "data": 1, "valid": false }, { "description": "a float is not an object", "data": 1.1, "valid": false }, { "description": "a string is not an object", "data": "foo", "valid": false }, { "description": "an object is an object", "data": {}, "valid": true }, { "description": "an array is not an object", "data": [], "valid": false }, { "description": "a boolean is not an object", "data": true, "valid": false }, { "description": "null is not an object", "data": null, "valid": false } ] }, { "description": "array type matches arrays", "schema": {"type": "array"}, "tests": [ { "description": "an integer is not an array", "data": 1, "valid": false }, { "description": "a float is not an array", "data": 1.1, "valid": false }, { "description": "a string is not an array", "data": "foo", "valid": false }, { "description": "an object is not an array", "data": {}, "valid": false }, { "description": "an array is an array", "data": [], "valid": true }, { "description": "a boolean is not an array", "data": true, "valid": false }, { "description": "null is not an array", "data": null, "valid": false } ] }, { "description": "boolean type matches booleans", "schema": {"type": "boolean"}, "tests": [ { "description": "an integer is not a boolean", "data": 1, "valid": false }, { "description": "zero is not a boolean", "data": 0, "valid": false }, { "description": "a float is not a boolean", "data": 1.1, "valid": false }, { "description": "a string is not a boolean", "data": "foo", "valid": false }, { "description": "an empty string is not a boolean", "data": "", "valid": false }, { "description": "an object is not a boolean", "data": {}, "valid": false }, { "description": "an array is not a boolean", "data": [], "valid": false }, { "description": "true is a boolean", "data": true, "valid": true }, { "description": "false is a boolean", "data": false, "valid": true }, { "description": "null is not a boolean", "data": null, "valid": false } ] }, { "description": "null type matches only the null object", "schema": {"type": "null"}, "tests": [ { "description": "an integer is not null", "data": 1, "valid": false }, { "description": "a float is not null", "data": 1.1, "valid": false }, { "description": "zero is not null", "data": 0, "valid": false }, { "description": "a string is not null", "data": "foo", "valid": false }, { "description": "an empty string is not null", "data": "", "valid": false }, { "description": "an object is not null", "data": {}, "valid": false }, { "description": "an array is not null", "data": [], "valid": false }, { "description": "true is not null", "data": true, "valid": false }, { "description": "false is not null", "data": false, "valid": false }, { "description": "null is null", "data": null, "valid": true } ] }, { "description": "multiple types can be specified in an array", "schema": {"type": ["integer", "string"]}, "tests": [ { "description": "an integer is valid", "data": 1, "valid": true }, { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "a float is invalid", "data": 1.1, "valid": false }, { "description": "an object is invalid", "data": {}, "valid": false }, { "description": "an array is invalid", "data": [], "valid": false }, { "description": "a boolean is invalid", "data": true, "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type as array with one item", "schema": { "type": ["string"] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is invalid", "data": 123, "valid": false } ] }, { "description": "type: array or object", "schema": { "type": ["array", "object"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type: array, object or null", "schema": { "type": ["array", "object", "null"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false } ] } ] enum.json100640000766000024 2114615240201330 23412 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "simple enum validation", "schema": {"enum": [1, 2, 3]}, "tests": [ { "description": "one of the enum is valid", "data": 1, "valid": true }, { "description": "something else is invalid", "data": 4, "valid": false } ] }, { "description": "heterogeneous enum validation", "schema": {"enum": [6, "foo", [], true, {"foo": 12}]}, "tests": [ { "description": "one of the enum is valid", "data": [], "valid": true }, { "description": "something else is invalid", "data": null, "valid": false }, { "description": "objects are deep compared", "data": {"foo": false}, "valid": false }, { "description": "valid object matches", "data": {"foo": 12}, "valid": true }, { "description": "extra properties in object is invalid", "data": {"foo": 12, "boo": 42}, "valid": false } ] }, { "description": "heterogeneous enum-with-null validation", "schema": { "enum": [6, null] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "number is valid", "data": 6, "valid": true }, { "description": "something else is invalid", "data": "test", "valid": false } ] }, { "description": "enums in properties", "schema": { "type":"object", "properties": { "foo": {"enum":["foo"]}, "bar": {"enum":["bar"]} }, "required": ["bar"] }, "tests": [ { "description": "both properties are valid", "data": {"foo":"foo", "bar":"bar"}, "valid": true }, { "description": "wrong foo value", "data": {"foo":"foot", "bar":"bar"}, "valid": false }, { "description": "wrong bar value", "data": {"foo":"foo", "bar":"bart"}, "valid": false }, { "description": "missing optional property is valid", "data": {"bar":"bar"}, "valid": true }, { "description": "missing required property is invalid", "data": {"foo":"foo"}, "valid": false }, { "description": "missing all properties is invalid", "data": {}, "valid": false } ] }, { "description": "enum with escaped characters", "schema": { "enum": ["foo\nbar", "foo\rbar"] }, "tests": [ { "description": "member 1 is valid", "data": "foo\nbar", "valid": true }, { "description": "member 2 is valid", "data": "foo\rbar", "valid": true }, { "description": "another string is invalid", "data": "abc", "valid": false } ] }, { "description": "enum with false does not match 0", "schema": {"enum": [false]}, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "enum with [false] does not match [0]", "schema": {"enum": [[false]]}, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "enum with true does not match 1", "schema": {"enum": [true]}, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "enum with [true] does not match [1]", "schema": {"enum": [[true]]}, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "enum with 0 does not match false", "schema": {"enum": [0]}, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true } ] }, { "description": "enum with [0] does not match [false]", "schema": {"enum": [[0]]}, "tests": [ { "description": "[false] is invalid", "data": [false], "valid": false }, { "description": "[0] is valid", "data": [0], "valid": true }, { "description": "[0.0] is valid", "data": [0.0], "valid": true } ] }, { "description": "enum with 1 does not match true", "schema": {"enum": [1]}, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "enum with [1] does not match [true]", "schema": {"enum": [[1]]}, "tests": [ { "description": "[true] is invalid", "data": [true], "valid": false }, { "description": "[1] is valid", "data": [1], "valid": true }, { "description": "[1.0] is valid", "data": [1.0], "valid": true } ] }, { "description": "nul characters in strings", "schema": { "enum": [ "hello\u0000there" ] }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] } ] type.json100640000766000024 3214015240201330 23423 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "integer type matches integers", "schema": {"type": "integer"}, "tests": [ { "description": "an integer is an integer", "data": 1, "valid": true }, { "description": "a float with zero fractional part is an integer", "data": 1.0, "valid": true }, { "description": "a float is not an integer", "data": 1.1, "valid": false }, { "description": "a string is not an integer", "data": "foo", "valid": false }, { "description": "a string is still not an integer, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not an integer", "data": {}, "valid": false }, { "description": "an array is not an integer", "data": [], "valid": false }, { "description": "a boolean is not an integer", "data": true, "valid": false }, { "description": "null is not an integer", "data": null, "valid": false } ] }, { "description": "number type matches numbers", "schema": {"type": "number"}, "tests": [ { "description": "an integer is a number", "data": 1, "valid": true }, { "description": "a float with zero fractional part is a number (and an integer)", "data": 1.0, "valid": true }, { "description": "a float is a number", "data": 1.1, "valid": true }, { "description": "a string is not a number", "data": "foo", "valid": false }, { "description": "a string is still not a number, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not a number", "data": {}, "valid": false }, { "description": "an array is not a number", "data": [], "valid": false }, { "description": "a boolean is not a number", "data": true, "valid": false }, { "description": "null is not a number", "data": null, "valid": false } ] }, { "description": "string type matches strings", "schema": {"type": "string"}, "tests": [ { "description": "1 is not a string", "data": 1, "valid": false }, { "description": "a float is not a string", "data": 1.1, "valid": false }, { "description": "a string is a string", "data": "foo", "valid": true }, { "description": "a string is still a string, even if it looks like a number", "data": "1", "valid": true }, { "description": "an empty string is still a string", "data": "", "valid": true }, { "description": "an object is not a string", "data": {}, "valid": false }, { "description": "an array is not a string", "data": [], "valid": false }, { "description": "a boolean is not a string", "data": true, "valid": false }, { "description": "null is not a string", "data": null, "valid": false } ] }, { "description": "object type matches objects", "schema": {"type": "object"}, "tests": [ { "description": "an integer is not an object", "data": 1, "valid": false }, { "description": "a float is not an object", "data": 1.1, "valid": false }, { "description": "a string is not an object", "data": "foo", "valid": false }, { "description": "an object is an object", "data": {}, "valid": true }, { "description": "an array is not an object", "data": [], "valid": false }, { "description": "a boolean is not an object", "data": true, "valid": false }, { "description": "null is not an object", "data": null, "valid": false } ] }, { "description": "array type matches arrays", "schema": {"type": "array"}, "tests": [ { "description": "an integer is not an array", "data": 1, "valid": false }, { "description": "a float is not an array", "data": 1.1, "valid": false }, { "description": "a string is not an array", "data": "foo", "valid": false }, { "description": "an object is not an array", "data": {}, "valid": false }, { "description": "an array is an array", "data": [], "valid": true }, { "description": "a boolean is not an array", "data": true, "valid": false }, { "description": "null is not an array", "data": null, "valid": false } ] }, { "description": "boolean type matches booleans", "schema": {"type": "boolean"}, "tests": [ { "description": "an integer is not a boolean", "data": 1, "valid": false }, { "description": "zero is not a boolean", "data": 0, "valid": false }, { "description": "a float is not a boolean", "data": 1.1, "valid": false }, { "description": "a string is not a boolean", "data": "foo", "valid": false }, { "description": "an empty string is not a boolean", "data": "", "valid": false }, { "description": "an object is not a boolean", "data": {}, "valid": false }, { "description": "an array is not a boolean", "data": [], "valid": false }, { "description": "true is a boolean", "data": true, "valid": true }, { "description": "false is a boolean", "data": false, "valid": true }, { "description": "null is not a boolean", "data": null, "valid": false } ] }, { "description": "null type matches only the null object", "schema": {"type": "null"}, "tests": [ { "description": "an integer is not null", "data": 1, "valid": false }, { "description": "a float is not null", "data": 1.1, "valid": false }, { "description": "zero is not null", "data": 0, "valid": false }, { "description": "a string is not null", "data": "foo", "valid": false }, { "description": "an empty string is not null", "data": "", "valid": false }, { "description": "an object is not null", "data": {}, "valid": false }, { "description": "an array is not null", "data": [], "valid": false }, { "description": "true is not null", "data": true, "valid": false }, { "description": "false is not null", "data": false, "valid": false }, { "description": "null is null", "data": null, "valid": true } ] }, { "description": "multiple types can be specified in an array", "schema": {"type": ["integer", "string"]}, "tests": [ { "description": "an integer is valid", "data": 1, "valid": true }, { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "a float is invalid", "data": 1.1, "valid": false }, { "description": "an object is invalid", "data": {}, "valid": false }, { "description": "an array is invalid", "data": [], "valid": false }, { "description": "a boolean is invalid", "data": true, "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type as array with one item", "schema": { "type": ["string"] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is invalid", "data": 123, "valid": false } ] }, { "description": "type: array or object", "schema": { "type": ["array", "object"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type: array, object or null", "schema": { "type": ["array", "object", "null"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false } ] } ] contains.json100640000766000024 1313615240201330 23423 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "contains keyword validation", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "minimum": 5 } }, "tests": [ { "description": "array with item matching schema (5) is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with item matching schema (6) is valid", "data": [3, 4, 6], "valid": true }, { "description": "array with two items matching schema (5, 6) is valid", "data": [3, 4, 5, 6], "valid": true }, { "description": "array without items matching schema is invalid", "data": [2, 3, 4], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "not array or object is valid", "data": 42, "valid": true } ] }, { "description": "contains keyword with const keyword", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "const": 5 } }, "tests": [ { "description": "array with item 5 is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with two items 5 is valid", "data": [3, 4, 5, 5], "valid": true }, { "description": "array without item 5 is invalid", "data": [1, 2, 3, 4], "valid": false } ] }, { "description": "contains keyword with boolean schema true", "schema": { "$schema": "https://json-schema.org/v1", "contains": true }, "tests": [ { "description": "any non-empty array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "contains keyword with boolean schema false", "schema": { "$schema": "https://json-schema.org/v1", "contains": false }, "tests": [ { "description": "any non-empty array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "non-arrays are valid - string", "data": "contains does not apply to strings", "valid": true }, { "description": "non-arrays are valid - object", "data": {}, "valid": true }, { "description": "non-arrays are valid - number", "data": 42, "valid": true }, { "description": "non-arrays are valid - boolean", "data": false, "valid": true }, { "description": "non-arrays are valid - null", "data": null, "valid": true } ] }, { "description": "items + contains", "schema": { "$schema": "https://json-schema.org/v1", "additionalProperties": { "multipleOf": 2 }, "items": { "multipleOf": 2 }, "contains": { "multipleOf": 3 } }, "tests": [ { "description": "matches items, does not match contains", "data": [2, 4, 8], "valid": false }, { "description": "does not match items, matches contains", "data": [3, 6, 9], "valid": false }, { "description": "matches both items and contains", "data": [6, 12], "valid": true }, { "description": "matches neither items nor contains", "data": [1, 5], "valid": false } ] }, { "description": "contains with false if subschema", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "if": false, "else": true } }, "tests": [ { "description": "any non-empty array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "contains with null instance elements", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "type": "null" } }, "tests": [ { "description": "allows null items", "data": [ null ], "valid": true } ] } ] maxItems.json100640000766000024 240315240201330 23347 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "maxItems validation", "schema": { "$schema": "https://json-schema.org/v1", "maxItems": 2 }, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "exact length is valid", "data": [1, 2], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false }, { "description": "ignores non-arrays", "data": "foobar", "valid": true } ] }, { "description": "maxItems validation with a decimal", "schema": { "$schema": "https://json-schema.org/v1", "maxItems": 2.0 }, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false } ] } ] minItems.json100640000766000024 236215240201330 23351 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "minItems validation", "schema": { "$schema": "https://json-schema.org/v1", "minItems": 1 }, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "exact length is valid", "data": [1], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false }, { "description": "ignores non-arrays", "data": "", "valid": true } ] }, { "description": "minItems validation with a decimal", "schema": { "$schema": "https://json-schema.org/v1", "minItems": 1.0 }, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false } ] } ] required.json100640000766000024 1131415240201330 23421 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "required validation", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {}, "bar": {} }, "required": ["foo"] }, "tests": [ { "description": "present required property is valid", "data": {"foo": 1}, "valid": true }, { "description": "non-present required property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores boolean", "data": true, "valid": true } ] }, { "description": "required default validation", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {} } }, "tests": [ { "description": "not required by default", "data": {}, "valid": true } ] }, { "description": "required with empty array", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {} }, "required": [] }, "tests": [ { "description": "property not required", "data": {}, "valid": true } ] }, { "description": "required with escaped characters", "schema": { "$schema": "https://json-schema.org/v1", "required": [ "foo\nbar", "foo\"bar", "foo\\bar", "foo\rbar", "foo\tbar", "foo\fbar" ] }, "tests": [ { "description": "object with all properties present is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with some properties missing is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1" }, "valid": false } ] }, { "description": "required properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "$schema": "https://json-schema.org/v1", "required": ["__proto__", "toString", "constructor"] }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": false }, { "description": "__proto__ present", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString present", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor present", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] name-defs.json100644000766000024 215240201330 23322 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}07-skip-tests-deprecated.t100640000766000024 440115240201330 23153 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t# vim: set ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::API 'intercept'; use Test2::V0 qw(!bag !bool !warnings), -no_pragmas => 1; use Test2::Warnings qw(warnings had_no_warnings :no_end_test); use Test::JSON::Schema::Acceptance; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use lib 't/lib'; use SchemaParser; use Helper; my $accepter = Test::JSON::Schema::Acceptance->new(test_dir => 't/tests/subset'); my $parser = SchemaParser->new; foreach my $test ( # match tests by group description { todo_count => 3+3, skip_tests => [ 'true schema' ] }, { todo_count => 2*(3+3), skip_tests => [ 'true schema', 'false schema' ] }, # match tests by regexp on test description { todo_count => 2*(3+3), skip_tests => [ '(true|false) schema' ] }, # match tests on both descriptions { todo_count => 2*(1+3+1) + 1, skip_tests => [ 'false' ] }, # match tests on group description and test description { todo_count => 3*2, skip_tests => [ 'empty schema.*boolean' ] }, ) { my $todo_count = delete $test->{todo_count}; my @warnings; my $events = intercept( sub { @warnings = warnings { $accepter->acceptance( validate_data => sub ($schema, $data) { return $parser->validate_data($data, $schema); }, %$test, ); } } ); is(scalar(grep $_->isa('Test2::Event::Skip'), @$events), 0, 'skipped and todo_skipped no tests'); is( scalar( grep exists $_->{assert} && (grep $_->{tag} eq 'TODO', @{$_->{amnesty} // []}), map $_->facet_data, @$events ), $todo_count, $todo_count.' tests are marked TODO', ); cmp_result( \@warnings, [ re(qr/'skip_tests' option is deprecated at /) ], 'got deprecation warnings for skip_tests feature', ); } had_no_warnings() if $ENV{AUTHOR_TESTING}; done_testing; unicode000755000766000024 015240201330 20773 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/testsunicode.json100644000766000024 450615240201330 23461 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/unicode[ { "description": "ascii schema", "schema": { "const": "hello world" }, "tests": [ { "description": "ascii data", "data": "hello world", "valid": true }, { "description": "latin1 data", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "very wide data", "data": "ಠ_ಠ", "valid": true } ] }, { "description": "latin1 schema", "schema": { "const": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire." }, "tests": [ { "description": "ascii data", "data": "hello world", "valid": true }, { "description": "latin1 data", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "very wide data", "data": "ಠ_ಠ", "valid": true } ] }, { "description": "very wide schema", "schema": { "const": "ಠ_ಠ" }, "tests": [ { "description": "ascii data", "data": "hello world", "valid": true }, { "description": "latin1 data", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "very wide data", "data": "ಠ_ಠ", "valid": true } ] } ] live-data-sanity.t100640000766000024 221515240201330 23371 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/author# vim: set ft=perl ts=8 sts=2 sw=2 tw=100 et : use strict; use warnings; use 5.020; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; use Test2::V0 -no_pragmas => 1; use Test2::Warnings; use Feature::Compat::Try; use Path::Tiny; use Test::File::ShareDir -share => { -dist => { 'Test-JSON-Schema-Acceptance' => 'share' } }; use Test::JSON::Schema::Acceptance; my $test_dir = path(File::ShareDir::dist_dir('Test-JSON-Schema-Acceptance'), 'tests'); foreach my $draft (sort $test_dir->children) { $draft = $draft->basename; next if $draft eq 'draft-next'; my $accepter = Test::JSON::Schema::Acceptance->new(specification => $draft); my $exception; try { $accepter->_test_data; } catch ($e) { $exception = $e; }; is($exception, undef, 'no errors loading data for '.$draft); } done_testing; clean-namespaces.t100644000766000024 36115240201330 23401 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/authoruse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::CleanNamespaces 0.006 use Test::More 0.94; use Test::CleanNamespaces 0.15; subtest all_namespaces_clean => sub { all_namespaces_clean() }; done_testing; output-test-schema.json100640000766000024 543615240201330 23654 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://json-schema.org/tests/output-test-schema", "description": "A schema for files contained within this suite", "type": "array", "minItems": 1, "items": { "description": "An individual test case, containing multiple tests of a single schema's behavior", "type": "object", "required": [ "description", "schema", "tests" ], "properties": { "description": { "description": "The test case description", "type": "string" }, "comment": { "description": "Any additional comments about the test case", "type": "string" }, "schema": { "description": "A valid JSON Schema (one written for the corresponding version directory that the file sits within)." }, "tests": { "description": "A set of related tests all using the same schema", "type": "array", "items": { "$ref": "#/$defs/test" }, "minItems": 1 } }, "additionalProperties": false }, "$defs": { "test": { "description": "A single output test", "type": "object", "required": [ "description", "data", "output" ], "properties": { "description": { "description": "The test description, briefly explaining which behavior it exercises", "type": "string" }, "comment": { "description": "Any additional comments about the test", "type": "string" }, "data": { "description": "The instance which should be validated against the schema in \"schema\"." }, "output": { "description": "schemas that are used to verify output", "type": "object", "properties": { "flag": { "$ref": "https://json-schema.org/draft/2020-12/schema" }, "basic": { "$ref": "https://json-schema.org/draft/2020-12/schema" }, "detailed": { "$ref": "https://json-schema.org/draft/2020-12/schema" }, "verbose": { "$ref": "https://json-schema.org/draft/2020-12/schema" }, "list": { "$ref": "https://json-schema.org/draft/2020-12/schema" }, "hierarchy": { "$ref": "https://json-schema.org/draft/2020-12/schema" } }, "minProperties": 1, "additionalProperties": false } } } } } integer.json100640000766000024 10715240201330 23510 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$schema": "https://json-schema.org/v1", "type": "integer" } items.json100640000766000024 353315240201330 23543 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "a schema given for items", "schema": { "items": {"type": "integer"} }, "tests": [ { "description": "valid items", "data": [ 1, 2, 3 ], "valid": true }, { "description": "wrong type of items", "data": [1, "x"], "valid": false }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true } ] }, { "description": "an array of schemas for items", "schema": { "items": [ {"type": "integer"}, {"type": "string"} ] }, "tests": [ { "description": "correct types", "data": [ 1, "foo" ], "valid": true }, { "description": "wrong types", "data": [ "foo", 1 ], "valid": false } ] }, { "description": "items with null instance elements", "schema": { "items": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] }, { "description": "array-form items with null instance elements", "schema": { "items": [ { "type": "null" } ] }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] allOf.json100640000766000024 1536515240201330 23506 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "allOf", "schema": { "allOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "allOf", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "mismatch second", "data": {"foo": "baz"}, "valid": false }, { "description": "mismatch first", "data": {"bar": 2}, "valid": false }, { "description": "wrong type", "data": {"foo": "baz", "bar": "quux"}, "valid": false } ] }, { "description": "allOf with base schema", "schema": { "properties": {"bar": {"type": "integer"}}, "required": ["bar"], "allOf" : [ { "properties": { "foo": {"type": "string"} }, "required": ["foo"] }, { "properties": { "baz": {"type": "null"} }, "required": ["baz"] } ] }, "tests": [ { "description": "valid", "data": {"foo": "quux", "bar": 2, "baz": null}, "valid": true }, { "description": "mismatch base schema", "data": {"foo": "quux", "baz": null}, "valid": false }, { "description": "mismatch first allOf", "data": {"bar": 2, "baz": null}, "valid": false }, { "description": "mismatch second allOf", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "mismatch both", "data": {"bar": 2}, "valid": false } ] }, { "description": "allOf simple types", "schema": { "allOf": [ {"maximum": 30}, {"minimum": 20} ] }, "tests": [ { "description": "valid", "data": 25, "valid": true }, { "description": "mismatch one", "data": 35, "valid": false } ] }, { "description": "allOf with one empty schema", "schema": { "allOf": [ {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with two empty schemas", "schema": { "allOf": [ {}, {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with the first empty schema", "schema": { "allOf": [ {}, { "type": "number" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with the last empty schema", "schema": { "allOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "nested allOf, to check validation semantics", "schema": { "allOf": [ { "allOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] }, { "description": "allOf combined with anyOf, oneOf", "schema": { "allOf": [ { "multipleOf": 2 } ], "anyOf": [ { "multipleOf": 3 } ], "oneOf": [ { "multipleOf": 5 } ] }, "tests": [ { "description": "allOf: false, anyOf: false, oneOf: false", "data": 1, "valid": false }, { "description": "allOf: false, anyOf: false, oneOf: true", "data": 5, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: false", "data": 3, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: true", "data": 15, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: false", "data": 2, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: true", "data": 10, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: false", "data": 6, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: true", "data": 30, "valid": true } ] } ] anyOf.json100640000766000024 755515240201330 23507 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "anyOf", "schema": { "anyOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first anyOf valid", "data": 1, "valid": true }, { "description": "second anyOf valid", "data": 2.5, "valid": true }, { "description": "both anyOf valid", "data": 3, "valid": true }, { "description": "neither anyOf valid", "data": 1.5, "valid": false } ] }, { "description": "anyOf with base schema", "schema": { "type": "string", "anyOf" : [ { "maxLength": 2 }, { "minLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one anyOf valid", "data": "foobar", "valid": true }, { "description": "both anyOf invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf complex types", "schema": { "anyOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first anyOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second anyOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both anyOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "neither anyOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "anyOf with one empty schema", "schema": { "anyOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is valid", "data": 123, "valid": true } ] }, { "description": "nested anyOf, to check validation semantics", "schema": { "anyOf": [ { "anyOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] items.json100640000766000024 1464415240201330 23571 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "a schema given for items", "schema": { "items": {"type": "integer"} }, "tests": [ { "description": "valid items", "data": [ 1, 2, 3 ], "valid": true }, { "description": "wrong type of items", "data": [1, "x"], "valid": false }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "length": 1 }, "valid": true } ] }, { "description": "an array of schemas for items", "schema": { "items": [ {"type": "integer"}, {"type": "string"} ] }, "tests": [ { "description": "correct types", "data": [ 1, "foo" ], "valid": true }, { "description": "wrong types", "data": [ "foo", 1 ], "valid": false }, { "description": "incomplete array of items", "data": [ 1 ], "valid": true }, { "description": "array with additional items", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array", "data": [ ], "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "1": "valid", "length": 2 }, "valid": true } ] }, { "description": "items and subitems", "schema": { "definitions": { "item": { "type": "array", "additionalItems": false, "items": [ { "$ref": "#/definitions/sub-item" }, { "$ref": "#/definitions/sub-item" } ] }, "sub-item": { "type": "object", "required": ["foo"] } }, "type": "array", "additionalItems": false, "items": [ { "$ref": "#/definitions/item" }, { "$ref": "#/definitions/item" }, { "$ref": "#/definitions/item" } ] }, "tests": [ { "description": "valid items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": true }, { "description": "too many items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "too many sub-items", "data": [ [ {"foo": null}, {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong item", "data": [ {"foo": null}, [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong sub-item", "data": [ [ {}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "fewer items is valid", "data": [ [ {"foo": null} ], [ {"foo": null} ] ], "valid": true } ] }, { "description": "nested items", "schema": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" } } } } }, "tests": [ { "description": "valid nested array", "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], "valid": true }, { "description": "nested array with invalid type", "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], "valid": false }, { "description": "not deep enough", "data": [[[1], [2],[3]], [[4], [5], [6]]], "valid": false } ] }, { "description": "items with null instance elements", "schema": { "items": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] }, { "description": "array-form items with null instance elements", "schema": { "items": [ { "type": "null" } ] }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] oneOf.json100640000766000024 1362615240201330 23515 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "oneOf", "schema": { "oneOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first oneOf valid", "data": 1, "valid": true }, { "description": "second oneOf valid", "data": 2.5, "valid": true }, { "description": "both oneOf valid", "data": 3, "valid": false }, { "description": "neither oneOf valid", "data": 1.5, "valid": false } ] }, { "description": "oneOf with base schema", "schema": { "type": "string", "oneOf" : [ { "minLength": 2 }, { "maxLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one oneOf valid", "data": "foobar", "valid": true }, { "description": "both oneOf valid", "data": "foo", "valid": false } ] }, { "description": "oneOf complex types", "schema": { "oneOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second oneOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both oneOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": false }, { "description": "neither oneOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "oneOf with empty schema", "schema": { "oneOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "one valid - valid", "data": "foo", "valid": true }, { "description": "both valid - invalid", "data": 123, "valid": false } ] }, { "description": "oneOf with required", "schema": { "type": "object", "oneOf": [ { "required": ["foo", "bar"] }, { "required": ["foo", "baz"] } ] }, "tests": [ { "description": "both invalid - invalid", "data": {"bar": 2}, "valid": false }, { "description": "first valid - valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "second valid - valid", "data": {"foo": 1, "baz": 3}, "valid": true }, { "description": "both valid - invalid", "data": {"foo": 1, "bar": 2, "baz" : 3}, "valid": false } ] }, { "description": "oneOf with missing optional property", "schema": { "oneOf": [ { "properties": { "bar": {}, "baz": {} }, "required": ["bar"] }, { "properties": { "foo": {} }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid", "data": {"bar": 8}, "valid": true }, { "description": "second oneOf valid", "data": {"foo": "foo"}, "valid": true }, { "description": "both oneOf valid", "data": {"foo": "foo", "bar": 8}, "valid": false }, { "description": "neither oneOf valid", "data": {"baz": "quux"}, "valid": false } ] }, { "description": "nested oneOf, to check validation semantics", "schema": { "oneOf": [ { "oneOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] allOf.json100640000766000024 1714715240201330 23510 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "allOf", "schema": { "allOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "allOf", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "mismatch second", "data": {"foo": "baz"}, "valid": false }, { "description": "mismatch first", "data": {"bar": 2}, "valid": false }, { "description": "wrong type", "data": {"foo": "baz", "bar": "quux"}, "valid": false } ] }, { "description": "allOf with base schema", "schema": { "properties": {"bar": {"type": "integer"}}, "required": ["bar"], "allOf" : [ { "properties": { "foo": {"type": "string"} }, "required": ["foo"] }, { "properties": { "baz": {"type": "null"} }, "required": ["baz"] } ] }, "tests": [ { "description": "valid", "data": {"foo": "quux", "bar": 2, "baz": null}, "valid": true }, { "description": "mismatch base schema", "data": {"foo": "quux", "baz": null}, "valid": false }, { "description": "mismatch first allOf", "data": {"bar": 2, "baz": null}, "valid": false }, { "description": "mismatch second allOf", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "mismatch both", "data": {"bar": 2}, "valid": false } ] }, { "description": "allOf simple types", "schema": { "allOf": [ {"maximum": 30}, {"minimum": 20} ] }, "tests": [ { "description": "valid", "data": 25, "valid": true }, { "description": "mismatch one", "data": 35, "valid": false } ] }, { "description": "allOf with boolean schemas, all true", "schema": {"allOf": [true, true]}, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "allOf with boolean schemas, some false", "schema": {"allOf": [true, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with boolean schemas, all false", "schema": {"allOf": [false, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with one empty schema", "schema": { "allOf": [ {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with two empty schemas", "schema": { "allOf": [ {}, {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with the first empty schema", "schema": { "allOf": [ {}, { "type": "number" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with the last empty schema", "schema": { "allOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "nested allOf, to check validation semantics", "schema": { "allOf": [ { "allOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] }, { "description": "allOf combined with anyOf, oneOf", "schema": { "allOf": [ { "multipleOf": 2 } ], "anyOf": [ { "multipleOf": 3 } ], "oneOf": [ { "multipleOf": 5 } ] }, "tests": [ { "description": "allOf: false, anyOf: false, oneOf: false", "data": 1, "valid": false }, { "description": "allOf: false, anyOf: false, oneOf: true", "data": 5, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: false", "data": 3, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: true", "data": 15, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: false", "data": 2, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: true", "data": 10, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: false", "data": 6, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: true", "data": 30, "valid": true } ] } ] anyOf.json100640000766000024 1133315240201330 23516 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "anyOf", "schema": { "anyOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first anyOf valid", "data": 1, "valid": true }, { "description": "second anyOf valid", "data": 2.5, "valid": true }, { "description": "both anyOf valid", "data": 3, "valid": true }, { "description": "neither anyOf valid", "data": 1.5, "valid": false } ] }, { "description": "anyOf with base schema", "schema": { "type": "string", "anyOf" : [ { "maxLength": 2 }, { "minLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one anyOf valid", "data": "foobar", "valid": true }, { "description": "both anyOf invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf with boolean schemas, all true", "schema": {"anyOf": [true, true]}, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, some true", "schema": {"anyOf": [true, false]}, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, all false", "schema": {"anyOf": [false, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf complex types", "schema": { "anyOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first anyOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second anyOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both anyOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "neither anyOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "anyOf with one empty schema", "schema": { "anyOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is valid", "data": 123, "valid": true } ] }, { "description": "nested anyOf, to check validation semantics", "schema": { "anyOf": [ { "anyOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] const.json100640000766000024 2517615240201330 23602 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "const validation", "schema": {"const": 2}, "tests": [ { "description": "same value is valid", "data": 2, "valid": true }, { "description": "another value is invalid", "data": 5, "valid": false }, { "description": "another type is invalid", "data": "a", "valid": false } ] }, { "description": "const with object", "schema": {"const": {"foo": "bar", "baz": "bax"}}, "tests": [ { "description": "same object is valid", "data": {"foo": "bar", "baz": "bax"}, "valid": true }, { "description": "same object with different property order is valid", "data": {"baz": "bax", "foo": "bar"}, "valid": true }, { "description": "another object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "another type is invalid", "data": [1, 2], "valid": false } ] }, { "description": "const with array", "schema": {"const": [{ "foo": "bar" }]}, "tests": [ { "description": "same array is valid", "data": [{"foo": "bar"}], "valid": true }, { "description": "another array item is invalid", "data": [2], "valid": false }, { "description": "array with additional items is invalid", "data": [1, 2, 3], "valid": false } ] }, { "description": "const with null", "schema": {"const": null}, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "not null is invalid", "data": 0, "valid": false } ] }, { "description": "const with false does not match 0", "schema": {"const": false}, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "const with true does not match 1", "schema": {"const": true}, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "const with [false] does not match [0]", "schema": {"const": [false]}, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "const with [true] does not match [1]", "schema": {"const": [true]}, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "const with {\"a\": false} does not match {\"a\": 0}", "schema": {"const": {"a": false}}, "tests": [ { "description": "{\"a\": false} is valid", "data": {"a": false}, "valid": true }, { "description": "{\"a\": 0} is invalid", "data": {"a": 0}, "valid": false }, { "description": "{\"a\": 0.0} is invalid", "data": {"a": 0.0}, "valid": false } ] }, { "description": "const with {\"a\": true} does not match {\"a\": 1}", "schema": {"const": {"a": true}}, "tests": [ { "description": "{\"a\": true} is valid", "data": {"a": true}, "valid": true }, { "description": "{\"a\": 1} is invalid", "data": {"a": 1}, "valid": false }, { "description": "{\"a\": 1.0} is invalid", "data": {"a": 1.0}, "valid": false } ] }, { "description": "const with 0 does not match other zero-like types", "schema": {"const": 0}, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "empty string is invalid", "data": "", "valid": false } ] }, { "description": "const with 1 does not match true", "schema": {"const": 1}, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "const with -2.0 matches integer and float types", "schema": {"const": -2.0}, "tests": [ { "description": "integer -2 is valid", "data": -2, "valid": true }, { "description": "integer 2 is invalid", "data": 2, "valid": false }, { "description": "float -2.0 is valid", "data": -2.0, "valid": true }, { "description": "float 2.0 is invalid", "data": 2.0, "valid": false }, { "description": "float -2.00001 is invalid", "data": -2.00001, "valid": false } ] }, { "description": "float and integers are equal up to 64-bit representation limits", "schema": {"const": 9007199254740992}, "tests": [ { "description": "integer is valid", "data": 9007199254740992, "valid": true }, { "description": "integer minus one is invalid", "data": 9007199254740991, "valid": false }, { "description": "float is valid", "data": 9007199254740992.0, "valid": true }, { "description": "float minus one is invalid", "data": 9007199254740991.0, "valid": false } ] }, { "description": "nul characters in strings", "schema": { "const": "hello\u0000there" }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] }, { "description": "characters with the same visual representation but different codepoint", "schema": { "const": "μ", "$comment": "U+03BC" }, "tests": [ { "description": "character uses the same codepoint", "data": "μ", "comment": "U+03BC", "valid": true }, { "description": "character looks the same but uses a different codepoint", "data": "µ", "comment": "U+00B5", "valid": false } ] }, { "description": "characters with the same visual representation, but different number of codepoints", "schema": { "const": "ä", "$comment": "U+00E4" }, "tests": [ { "description": "character uses the same codepoint", "data": "ä", "comment": "U+00E4", "valid": true }, { "description": "character looks the same but uses combining marks", "data": "ä", "comment": "a, U+0308", "valid": false } ] } ] items.json100640000766000024 1761415240201330 23573 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "a schema given for items", "schema": { "items": {"type": "integer"} }, "tests": [ { "description": "valid items", "data": [ 1, 2, 3 ], "valid": true }, { "description": "wrong type of items", "data": [1, "x"], "valid": false }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "length": 1 }, "valid": true } ] }, { "description": "an array of schemas for items", "schema": { "items": [ {"type": "integer"}, {"type": "string"} ] }, "tests": [ { "description": "correct types", "data": [ 1, "foo" ], "valid": true }, { "description": "wrong types", "data": [ "foo", 1 ], "valid": false }, { "description": "incomplete array of items", "data": [ 1 ], "valid": true }, { "description": "array with additional items", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array", "data": [ ], "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "1": "valid", "length": 2 }, "valid": true } ] }, { "description": "items with boolean schema (true)", "schema": {"items": true}, "tests": [ { "description": "any array is valid", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items with boolean schema (false)", "schema": {"items": false}, "tests": [ { "description": "any non-empty array is invalid", "data": [ 1, "foo", true ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items with boolean schemas", "schema": { "items": [true, false] }, "tests": [ { "description": "array with one item is valid", "data": [ 1 ], "valid": true }, { "description": "array with two items is invalid", "data": [ 1, "foo" ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items and subitems", "schema": { "definitions": { "item": { "type": "array", "additionalItems": false, "items": [ { "$ref": "#/definitions/sub-item" }, { "$ref": "#/definitions/sub-item" } ] }, "sub-item": { "type": "object", "required": ["foo"] } }, "type": "array", "additionalItems": false, "items": [ { "$ref": "#/definitions/item" }, { "$ref": "#/definitions/item" }, { "$ref": "#/definitions/item" } ] }, "tests": [ { "description": "valid items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": true }, { "description": "too many items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "too many sub-items", "data": [ [ {"foo": null}, {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong item", "data": [ {"foo": null}, [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong sub-item", "data": [ [ {}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "fewer items is valid", "data": [ [ {"foo": null} ], [ {"foo": null} ] ], "valid": true } ] }, { "description": "nested items", "schema": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" } } } } }, "tests": [ { "description": "valid nested array", "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], "valid": true }, { "description": "nested array with invalid type", "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], "valid": false }, { "description": "not deep enough", "data": [[[1], [2],[3]], [[4], [5], [6]]], "valid": false } ] }, { "description": "single-form items with null instance elements", "schema": { "items": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] }, { "description": "array-form items with null instance elements", "schema": { "items": [ { "type": "null" } ] }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] oneOf.json100640000766000024 1612615240201330 23515 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "oneOf", "schema": { "oneOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first oneOf valid", "data": 1, "valid": true }, { "description": "second oneOf valid", "data": 2.5, "valid": true }, { "description": "both oneOf valid", "data": 3, "valid": false }, { "description": "neither oneOf valid", "data": 1.5, "valid": false } ] }, { "description": "oneOf with base schema", "schema": { "type": "string", "oneOf" : [ { "minLength": 2 }, { "maxLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one oneOf valid", "data": "foobar", "valid": true }, { "description": "both oneOf valid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all true", "schema": {"oneOf": [true, true, true]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, one true", "schema": {"oneOf": [true, false, false]}, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "oneOf with boolean schemas, more than one true", "schema": {"oneOf": [true, true, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all false", "schema": {"oneOf": [false, false, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf complex types", "schema": { "oneOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second oneOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both oneOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": false }, { "description": "neither oneOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "oneOf with empty schema", "schema": { "oneOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "one valid - valid", "data": "foo", "valid": true }, { "description": "both valid - invalid", "data": 123, "valid": false } ] }, { "description": "oneOf with required", "schema": { "type": "object", "oneOf": [ { "required": ["foo", "bar"] }, { "required": ["foo", "baz"] } ] }, "tests": [ { "description": "both invalid - invalid", "data": {"bar": 2}, "valid": false }, { "description": "first valid - valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "second valid - valid", "data": {"foo": 1, "baz": 3}, "valid": true }, { "description": "both valid - invalid", "data": {"foo": 1, "bar": 2, "baz" : 3}, "valid": false } ] }, { "description": "oneOf with missing optional property", "schema": { "oneOf": [ { "properties": { "bar": true, "baz": true }, "required": ["bar"] }, { "properties": { "foo": true }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid", "data": {"bar": 8}, "valid": true }, { "description": "second oneOf valid", "data": {"foo": "foo"}, "valid": true }, { "description": "both oneOf valid", "data": {"foo": "foo", "bar": 8}, "valid": false }, { "description": "neither oneOf valid", "data": {"baz": "quux"}, "valid": false } ] }, { "description": "nested oneOf, to check validation semantics", "schema": { "oneOf": [ { "oneOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] allOf.json100640000766000024 1714715240201330 23511 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "allOf", "schema": { "allOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "allOf", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "mismatch second", "data": {"foo": "baz"}, "valid": false }, { "description": "mismatch first", "data": {"bar": 2}, "valid": false }, { "description": "wrong type", "data": {"foo": "baz", "bar": "quux"}, "valid": false } ] }, { "description": "allOf with base schema", "schema": { "properties": {"bar": {"type": "integer"}}, "required": ["bar"], "allOf" : [ { "properties": { "foo": {"type": "string"} }, "required": ["foo"] }, { "properties": { "baz": {"type": "null"} }, "required": ["baz"] } ] }, "tests": [ { "description": "valid", "data": {"foo": "quux", "bar": 2, "baz": null}, "valid": true }, { "description": "mismatch base schema", "data": {"foo": "quux", "baz": null}, "valid": false }, { "description": "mismatch first allOf", "data": {"bar": 2, "baz": null}, "valid": false }, { "description": "mismatch second allOf", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "mismatch both", "data": {"bar": 2}, "valid": false } ] }, { "description": "allOf simple types", "schema": { "allOf": [ {"maximum": 30}, {"minimum": 20} ] }, "tests": [ { "description": "valid", "data": 25, "valid": true }, { "description": "mismatch one", "data": 35, "valid": false } ] }, { "description": "allOf with boolean schemas, all true", "schema": {"allOf": [true, true]}, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "allOf with boolean schemas, some false", "schema": {"allOf": [true, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with boolean schemas, all false", "schema": {"allOf": [false, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with one empty schema", "schema": { "allOf": [ {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with two empty schemas", "schema": { "allOf": [ {}, {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with the first empty schema", "schema": { "allOf": [ {}, { "type": "number" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with the last empty schema", "schema": { "allOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "nested allOf, to check validation semantics", "schema": { "allOf": [ { "allOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] }, { "description": "allOf combined with anyOf, oneOf", "schema": { "allOf": [ { "multipleOf": 2 } ], "anyOf": [ { "multipleOf": 3 } ], "oneOf": [ { "multipleOf": 5 } ] }, "tests": [ { "description": "allOf: false, anyOf: false, oneOf: false", "data": 1, "valid": false }, { "description": "allOf: false, anyOf: false, oneOf: true", "data": 5, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: false", "data": 3, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: true", "data": 15, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: false", "data": 2, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: true", "data": 10, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: false", "data": 6, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: true", "data": 30, "valid": true } ] } ] anyOf.json100640000766000024 1133315240201330 23517 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "anyOf", "schema": { "anyOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first anyOf valid", "data": 1, "valid": true }, { "description": "second anyOf valid", "data": 2.5, "valid": true }, { "description": "both anyOf valid", "data": 3, "valid": true }, { "description": "neither anyOf valid", "data": 1.5, "valid": false } ] }, { "description": "anyOf with base schema", "schema": { "type": "string", "anyOf" : [ { "maxLength": 2 }, { "minLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one anyOf valid", "data": "foobar", "valid": true }, { "description": "both anyOf invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf with boolean schemas, all true", "schema": {"anyOf": [true, true]}, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, some true", "schema": {"anyOf": [true, false]}, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, all false", "schema": {"anyOf": [false, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf complex types", "schema": { "anyOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first anyOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second anyOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both anyOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "neither anyOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "anyOf with one empty schema", "schema": { "anyOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is valid", "data": 123, "valid": true } ] }, { "description": "nested anyOf, to check validation semantics", "schema": { "anyOf": [ { "anyOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] const.json100640000766000024 2517615240201330 23603 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "const validation", "schema": {"const": 2}, "tests": [ { "description": "same value is valid", "data": 2, "valid": true }, { "description": "another value is invalid", "data": 5, "valid": false }, { "description": "another type is invalid", "data": "a", "valid": false } ] }, { "description": "const with object", "schema": {"const": {"foo": "bar", "baz": "bax"}}, "tests": [ { "description": "same object is valid", "data": {"foo": "bar", "baz": "bax"}, "valid": true }, { "description": "same object with different property order is valid", "data": {"baz": "bax", "foo": "bar"}, "valid": true }, { "description": "another object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "another type is invalid", "data": [1, 2], "valid": false } ] }, { "description": "const with array", "schema": {"const": [{ "foo": "bar" }]}, "tests": [ { "description": "same array is valid", "data": [{"foo": "bar"}], "valid": true }, { "description": "another array item is invalid", "data": [2], "valid": false }, { "description": "array with additional items is invalid", "data": [1, 2, 3], "valid": false } ] }, { "description": "const with null", "schema": {"const": null}, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "not null is invalid", "data": 0, "valid": false } ] }, { "description": "const with false does not match 0", "schema": {"const": false}, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "const with true does not match 1", "schema": {"const": true}, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "const with [false] does not match [0]", "schema": {"const": [false]}, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "const with [true] does not match [1]", "schema": {"const": [true]}, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "const with {\"a\": false} does not match {\"a\": 0}", "schema": {"const": {"a": false}}, "tests": [ { "description": "{\"a\": false} is valid", "data": {"a": false}, "valid": true }, { "description": "{\"a\": 0} is invalid", "data": {"a": 0}, "valid": false }, { "description": "{\"a\": 0.0} is invalid", "data": {"a": 0.0}, "valid": false } ] }, { "description": "const with {\"a\": true} does not match {\"a\": 1}", "schema": {"const": {"a": true}}, "tests": [ { "description": "{\"a\": true} is valid", "data": {"a": true}, "valid": true }, { "description": "{\"a\": 1} is invalid", "data": {"a": 1}, "valid": false }, { "description": "{\"a\": 1.0} is invalid", "data": {"a": 1.0}, "valid": false } ] }, { "description": "const with 0 does not match other zero-like types", "schema": {"const": 0}, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "empty string is invalid", "data": "", "valid": false } ] }, { "description": "const with 1 does not match true", "schema": {"const": 1}, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "const with -2.0 matches integer and float types", "schema": {"const": -2.0}, "tests": [ { "description": "integer -2 is valid", "data": -2, "valid": true }, { "description": "integer 2 is invalid", "data": 2, "valid": false }, { "description": "float -2.0 is valid", "data": -2.0, "valid": true }, { "description": "float 2.0 is invalid", "data": 2.0, "valid": false }, { "description": "float -2.00001 is invalid", "data": -2.00001, "valid": false } ] }, { "description": "float and integers are equal up to 64-bit representation limits", "schema": {"const": 9007199254740992}, "tests": [ { "description": "integer is valid", "data": 9007199254740992, "valid": true }, { "description": "integer minus one is invalid", "data": 9007199254740991, "valid": false }, { "description": "float is valid", "data": 9007199254740992.0, "valid": true }, { "description": "float minus one is invalid", "data": 9007199254740991.0, "valid": false } ] }, { "description": "nul characters in strings", "schema": { "const": "hello\u0000there" }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] }, { "description": "characters with the same visual representation but different codepoint", "schema": { "const": "μ", "$comment": "U+03BC" }, "tests": [ { "description": "character uses the same codepoint", "data": "μ", "comment": "U+03BC", "valid": true }, { "description": "character looks the same but uses a different codepoint", "data": "µ", "comment": "U+00B5", "valid": false } ] }, { "description": "characters with the same visual representation, but different number of codepoints", "schema": { "const": "ä", "$comment": "U+00E4" }, "tests": [ { "description": "character uses the same codepoint", "data": "ä", "comment": "U+00E4", "valid": true }, { "description": "character looks the same but uses combining marks", "data": "ä", "comment": "a, U+0308", "valid": false } ] } ] items.json100640000766000024 1761415240201330 23574 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "a schema given for items", "schema": { "items": {"type": "integer"} }, "tests": [ { "description": "valid items", "data": [ 1, 2, 3 ], "valid": true }, { "description": "wrong type of items", "data": [1, "x"], "valid": false }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "length": 1 }, "valid": true } ] }, { "description": "an array of schemas for items", "schema": { "items": [ {"type": "integer"}, {"type": "string"} ] }, "tests": [ { "description": "correct types", "data": [ 1, "foo" ], "valid": true }, { "description": "wrong types", "data": [ "foo", 1 ], "valid": false }, { "description": "incomplete array of items", "data": [ 1 ], "valid": true }, { "description": "array with additional items", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array", "data": [ ], "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "1": "valid", "length": 2 }, "valid": true } ] }, { "description": "items with boolean schema (true)", "schema": {"items": true}, "tests": [ { "description": "any array is valid", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items with boolean schema (false)", "schema": {"items": false}, "tests": [ { "description": "any non-empty array is invalid", "data": [ 1, "foo", true ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items with boolean schemas", "schema": { "items": [true, false] }, "tests": [ { "description": "array with one item is valid", "data": [ 1 ], "valid": true }, { "description": "array with two items is invalid", "data": [ 1, "foo" ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items and subitems", "schema": { "definitions": { "item": { "type": "array", "additionalItems": false, "items": [ { "$ref": "#/definitions/sub-item" }, { "$ref": "#/definitions/sub-item" } ] }, "sub-item": { "type": "object", "required": ["foo"] } }, "type": "array", "additionalItems": false, "items": [ { "$ref": "#/definitions/item" }, { "$ref": "#/definitions/item" }, { "$ref": "#/definitions/item" } ] }, "tests": [ { "description": "valid items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": true }, { "description": "too many items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "too many sub-items", "data": [ [ {"foo": null}, {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong item", "data": [ {"foo": null}, [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong sub-item", "data": [ [ {}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "fewer items is valid", "data": [ [ {"foo": null} ], [ {"foo": null} ] ], "valid": true } ] }, { "description": "nested items", "schema": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" } } } } }, "tests": [ { "description": "valid nested array", "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], "valid": true }, { "description": "nested array with invalid type", "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], "valid": false }, { "description": "not deep enough", "data": [[[1], [2],[3]], [[4], [5], [6]]], "valid": false } ] }, { "description": "single-form items with null instance elements", "schema": { "items": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] }, { "description": "array-form items with null instance elements", "schema": { "items": [ { "type": "null" } ] }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] oneOf.json100640000766000024 1612615240201330 23516 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "oneOf", "schema": { "oneOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first oneOf valid", "data": 1, "valid": true }, { "description": "second oneOf valid", "data": 2.5, "valid": true }, { "description": "both oneOf valid", "data": 3, "valid": false }, { "description": "neither oneOf valid", "data": 1.5, "valid": false } ] }, { "description": "oneOf with base schema", "schema": { "type": "string", "oneOf" : [ { "minLength": 2 }, { "maxLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one oneOf valid", "data": "foobar", "valid": true }, { "description": "both oneOf valid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all true", "schema": {"oneOf": [true, true, true]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, one true", "schema": {"oneOf": [true, false, false]}, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "oneOf with boolean schemas, more than one true", "schema": {"oneOf": [true, true, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all false", "schema": {"oneOf": [false, false, false]}, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf complex types", "schema": { "oneOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second oneOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both oneOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": false }, { "description": "neither oneOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "oneOf with empty schema", "schema": { "oneOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "one valid - valid", "data": "foo", "valid": true }, { "description": "both valid - invalid", "data": 123, "valid": false } ] }, { "description": "oneOf with required", "schema": { "type": "object", "oneOf": [ { "required": ["foo", "bar"] }, { "required": ["foo", "baz"] } ] }, "tests": [ { "description": "both invalid - invalid", "data": {"bar": 2}, "valid": false }, { "description": "first valid - valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "second valid - valid", "data": {"foo": 1, "baz": 3}, "valid": true }, { "description": "both valid - invalid", "data": {"foo": 1, "bar": 2, "baz" : 3}, "valid": false } ] }, { "description": "oneOf with missing optional property", "schema": { "oneOf": [ { "properties": { "bar": true, "baz": true }, "required": ["bar"] }, { "properties": { "foo": true }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid", "data": {"bar": 8}, "valid": true }, { "description": "second oneOf valid", "data": {"foo": "foo"}, "valid": true }, { "description": "both oneOf valid", "data": {"foo": "foo", "bar": 8}, "valid": false }, { "description": "neither oneOf valid", "data": {"baz": "quux"}, "valid": false } ] }, { "description": "nested oneOf, to check validation semantics", "schema": { "oneOf": [ { "oneOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] maxLength.json100640000766000024 264715240201330 23521 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "maxLength validation", "schema": { "$schema": "https://json-schema.org/v1", "maxLength": 2 }, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false }, { "description": "ignores non-strings", "data": 100, "valid": true }, { "description": "two graphemes is long enough", "data": "\uD83D\uDCA9\uD83D\uDCA9", "valid": true } ] }, { "description": "maxLength validation with a decimal", "schema": { "$schema": "https://json-schema.org/v1", "maxLength": 2.0 }, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false } ] } ] minLength.json100640000766000024 263515240201330 23514 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "minLength validation", "schema": { "$schema": "https://json-schema.org/v1", "minLength": 2 }, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false }, { "description": "ignores non-strings", "data": 1, "valid": true }, { "description": "one grapheme is not long enough", "data": "\uD83D\uDCA9", "valid": false } ] }, { "description": "minLength validation with a decimal", "schema": { "$schema": "https://json-schema.org/v1", "minLength": 2.0 }, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false } ] } ] refRemote.json100640000766000024 2325615240201330 23541 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "remote ref", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/integer.json" }, "tests": [ { "description": "remote ref valid", "data": 1, "valid": true }, { "description": "remote ref invalid", "data": "a", "valid": false } ] }, { "description": "fragment within remote ref", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/subSchemas.json#/$defs/integer" }, "tests": [ { "description": "remote fragment valid", "data": 1, "valid": true }, { "description": "remote fragment invalid", "data": "a", "valid": false } ] }, { "description": "anchor within remote ref", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/locationIndependentIdentifier.json#foo" }, "tests": [ { "description": "remote anchor valid", "data": 1, "valid": true }, { "description": "remote anchor invalid", "data": "a", "valid": false } ] }, { "description": "ref within remote ref", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/subSchemas.json#/$defs/refToInteger" }, "tests": [ { "description": "ref within ref valid", "data": 1, "valid": true }, { "description": "ref within ref invalid", "data": "a", "valid": false } ] }, { "description": "base URI change", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/", "items": { "$id": "baseUriChange/", "items": {"$ref": "folderInteger.json"} } }, "tests": [ { "description": "base URI change ref valid", "data": [[1]], "valid": true }, { "description": "base URI change ref invalid", "data": [["a"]], "valid": false } ] }, { "description": "base URI change - change folder", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/scope_change_defs1.json", "type" : "object", "properties": {"list": {"$ref": "baseUriChangeFolder/"}}, "$defs": { "baz": { "$id": "baseUriChangeFolder/", "type": "array", "items": {"$ref": "folderInteger.json"} } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "base URI change - change folder in subschema", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/scope_change_defs2.json", "type" : "object", "properties": {"list": {"$ref": "baseUriChangeFolderInSubschema/#/$defs/bar"}}, "$defs": { "baz": { "$id": "baseUriChangeFolderInSubschema/", "$defs": { "bar": { "type": "array", "items": {"$ref": "folderInteger.json"} } } } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "root ref in remote ref", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/object", "type": "object", "properties": { "name": {"$ref": "name-defs.json#/$defs/orNull"} } }, "tests": [ { "description": "string is valid", "data": { "name": "foo" }, "valid": true }, { "description": "null is valid", "data": { "name": null }, "valid": true }, { "description": "object is invalid", "data": { "name": { "name": null } }, "valid": false } ] }, { "description": "remote ref with ref to defs", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/schema-remote-ref-ref-defs1.json", "$ref": "ref-and-defs.json" }, "tests": [ { "description": "invalid", "data": { "bar": 1 }, "valid": false }, { "description": "valid", "data": { "bar": "a" }, "valid": true } ] }, { "description": "Location-independent identifier in remote ref", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/locationIndependentIdentifier.json#/$defs/refToInteger" }, "tests": [ { "description": "integer is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "retrieved nested refs resolve relative to their URI not $id", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/some-id", "properties": { "name": {"$ref": "nested/foo-ref-string.json"} } }, "tests": [ { "description": "number is invalid", "data": { "name": {"foo": 1} }, "valid": false }, { "description": "string is valid", "data": { "name": {"foo": "a"} }, "valid": true } ] }, { "description": "remote HTTP ref with different $id", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/different-id-ref-string.json" }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is valid", "data": "foo", "valid": true } ] }, { "description": "remote HTTP ref with different URN $id", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/urn-ref-string.json" }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is valid", "data": "foo", "valid": true } ] }, { "description": "remote HTTP ref with nested absolute ref", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/nested-absolute-ref-to-string.json" }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is valid", "data": "foo", "valid": true } ] }, { "description": "$ref to $ref finds detached $anchor", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "http://localhost:1234/v1/detached-ref.json#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] subSchemas.json100644000766000024 215240201330 23560 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}add_resource000755000766000024 015240201330 22004 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/testsfoo.json100644000766000024 35115240201330 23601 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource[ { "description": "empty schema", "schema": {}, "tests": [ { "description": "integer", "data": 2, "valid": true } ] } ] draft4000755000766000024 015240201330 21704 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotesname.json100640000766000024 40415240201330 23631 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft4{ "definitions": { "orNull": { "anyOf": [ { "type": "null" }, { "$ref": "#" } ] } }, "type": "string" } draft6000755000766000024 015240201330 21706 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotesname.json100640000766000024 40415240201330 23633 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft6{ "definitions": { "orNull": { "anyOf": [ { "type": "null" }, { "$ref": "#" } ] } }, "type": "string" } draft7000755000766000024 015240201330 21707 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotesname.json100640000766000024 40415240201330 23634 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft7{ "definitions": { "orNull": { "anyOf": [ { "type": "null" }, { "$ref": "#" } ] } }, "type": "string" } format.json100640000766000024 2452315240201330 23734 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "email format", "schema": { "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ip-address format", "schema": { "format": "ip-address" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ipv6 format", "schema": { "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "host-name format", "schema": { "format": "host-name" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "date-time format", "schema": { "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "regex format", "schema": { "format": "regex" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "date format", "schema": { "format": "date" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "time format", "schema": { "format": "time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "color format", "schema": { "format": "color" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri format", "schema": { "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] } ] format.json100640000766000024 1431115240201330 23727 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "email format", "schema": { "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ipv4 format", "schema": { "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ipv6 format", "schema": { "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "hostname format", "schema": { "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "date-time format", "schema": { "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri format", "schema": { "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] } ] format.json100640000766000024 2252515240201330 23737 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "email format", "schema": { "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ipv4 format", "schema": { "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ipv6 format", "schema": { "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "hostname format", "schema": { "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "date-time format", "schema": { "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "json-pointer format", "schema": { "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri format", "schema": { "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri-reference format", "schema": { "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri-template format", "schema": { "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] } ] format.json100640000766000024 4322315240201330 23736 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "email format", "schema": { "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "idn-email format", "schema": { "format": "idn-email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "regex format", "schema": { "format": "regex" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ipv4 format", "schema": { "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ipv6 format", "schema": { "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "idn-hostname format", "schema": { "format": "idn-hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "hostname format", "schema": { "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "date format", "schema": { "format": "date" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "date-time format", "schema": { "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "time format", "schema": { "format": "time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "json-pointer format", "schema": { "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "relative-json-pointer format", "schema": { "format": "relative-json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "iri format", "schema": { "format": "iri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "iri-reference format", "schema": { "format": "iri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri format", "schema": { "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri-reference format", "schema": { "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri-template format", "schema": { "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] } ] dynamicRef.json100640000766000024 3766715240201330 23705 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "A $dynamicRef to a $dynamicAnchor in the same schema resource behaves like a normal $ref to an $anchor", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://test.json-schema.org/dynamicRef-dynamicAnchor-same-schema/root", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" } } }, "tests": [ { "description": "An array of strings is valid", "data": ["foo", "bar"], "valid": true }, { "description": "An array containing non-strings is invalid", "data": ["foo", 42], "valid": false } ] }, { "description": "A $dynamicRef resolves to the first $dynamicAnchor still in scope that is encountered when the schema is evaluated", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://test.json-schema.org/typical-dynamic-resolution/root", "$ref": "list", "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" }, "list": { "$id": "list", "type": "array", "items": { "$dynamicRef": "#items" } } } }, "tests": [ { "description": "An array of strings is valid", "data": ["foo", "bar"], "valid": true }, { "description": "An array containing non-strings is invalid", "data": ["foo", 42], "valid": false } ] }, { "description": "A $dynamicRef with intermediate scopes that don't include a matching $dynamicAnchor does not affect dynamic scope resolution", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://test.json-schema.org/dynamic-resolution-with-intermediate-scopes/root", "$ref": "intermediate-scope", "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" }, "intermediate-scope": { "$id": "intermediate-scope", "$ref": "list" }, "list": { "$id": "list", "type": "array", "items": { "$dynamicRef": "#items" } } } }, "tests": [ { "description": "An array of strings is valid", "data": ["foo", "bar"], "valid": true }, { "description": "An array containing non-strings is invalid", "data": ["foo", 42], "valid": false } ] }, { "description": "An $anchor with the same name as a $dynamicAnchor is not used for dynamic scope resolution", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://test.json-schema.org/dynamic-resolution-ignores-anchors/root", "$ref": "list", "$defs": { "foo": { "$anchor": "items", "type": "string" }, "list": { "$id": "list", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { "items": { "$dynamicAnchor": "items" } } } } }, "tests": [ { "description": "Any array is valid", "data": ["foo", 42], "valid": true } ] }, { "description": "after leaving a dynamic scope, it is not used by a $dynamicRef", "schema": { "$id": "https://test.json-schema.org/dynamic-ref-leaving-dynamic-scope/main", "if": { "$id": "first_scope", "$defs": { "thingy": { "$comment": "this is first_scope#thingy", "$dynamicAnchor": "thingy", "type": "number" } } }, "then": { "$id": "second_scope", "$ref": "start", "$defs": { "thingy": { "$comment": "this is second_scope#thingy, the final destination of the $dynamicRef", "$dynamicAnchor": "thingy", "type": "null" } } }, "$defs": { "start": { "$comment": "this is the landing spot from $ref", "$id": "start", "$ref": "inner_scope" }, "thingy": { "$id": "inner_scope", "$dynamicRef": "#thingy", "$defs": { "": { "$comment": "this is the first stop for the $dynamicRef", "$dynamicAnchor": "thingy", "type": "string" } } } } }, "tests": [ { "description": "string matches /$defs/thingy, but the $dynamicRef does not stop here", "data": "a string", "valid": false }, { "description": "first_scope is not in dynamic scope for the $dynamicRef", "data": 42, "valid": false }, { "description": "/then/$defs/thingy is the final stop for the $dynamicRef", "data": null, "valid": true } ] }, { "description": "strict-tree schema, guards against misspelled properties", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/strict-tree.json", "$dynamicAnchor": "node", "$ref": "tree.json", "unevaluatedProperties": false }, "tests": [ { "description": "instance with misspelled field", "data": { "children": [{ "daat": 1 }] }, "valid": false }, { "description": "instance with correct field", "data": { "children": [{ "data": 1 }] }, "valid": true } ] }, { "description": "tests for implementation dynamic anchor and reference link", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/strict-extendible.json", "$ref": "extendible-dynamic-ref.json", "$defs": { "elements": { "$dynamicAnchor": "elements", "properties": { "a": true }, "required": ["a"], "additionalProperties": false } } }, "tests": [ { "description": "incorrect parent schema", "data": { "a": true }, "valid": false }, { "description": "incorrect extended schema", "data": { "elements": [ { "b": 1 } ] }, "valid": false }, { "description": "correct extended schema", "data": { "elements": [ { "a": 1 } ] }, "valid": true } ] }, { "description": "$ref and $dynamicAnchor are independent of order - $defs first", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/strict-extendible-allof-defs-first.json", "allOf": [ { "$ref": "extendible-dynamic-ref.json" }, { "$defs": { "elements": { "$dynamicAnchor": "elements", "properties": { "a": true }, "required": ["a"], "additionalProperties": false } } } ] }, "tests": [ { "description": "incorrect parent schema", "data": { "a": true }, "valid": false }, { "description": "incorrect extended schema", "data": { "elements": [ { "b": 1 } ] }, "valid": false }, { "description": "correct extended schema", "data": { "elements": [ { "a": 1 } ] }, "valid": true } ] }, { "description": "$ref and $dynamicAnchor are independent of order - $ref first", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/strict-extendible-allof-ref-first.json", "allOf": [ { "$defs": { "elements": { "$dynamicAnchor": "elements", "properties": { "a": true }, "required": ["a"], "additionalProperties": false } } }, { "$ref": "extendible-dynamic-ref.json" } ] }, "tests": [ { "description": "incorrect parent schema", "data": { "a": true }, "valid": false }, { "description": "incorrect extended schema", "data": { "elements": [ { "b": 1 } ] }, "valid": false }, { "description": "correct extended schema", "data": { "elements": [ { "a": 1 } ] }, "valid": true } ] }, { "description": "$ref to $dynamicRef finds detached $dynamicAnchor", "schema": { "$ref": "http://localhost:1234/v1/detached-dynamicref.json#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "$dynamicRef skips over intermediate resources - direct reference", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://test.json-schema.org/dynamic-ref-skips-intermediate-resource/main", "type": "object", "properties": { "bar-item": { "$ref": "item" } }, "$defs": { "bar": { "$id": "bar", "type": "array", "items": { "$ref": "item" }, "$defs": { "item": { "$id": "item", "type": "object", "properties": { "content": { "$dynamicRef": "#content" } }, "$defs": { "defaultContent": { "$dynamicAnchor": "content", "type": "integer" } } }, "content": { "$dynamicAnchor": "content", "type": "string" } } } } }, "tests": [ { "description": "integer property passes", "data": { "bar-item": { "content": 42 } }, "valid": true }, { "description": "string property fails", "data": { "bar-item": { "content": "value" } }, "valid": false } ] }, { "description": "$dynamicRef avoids the root of each schema, but scopes are still registered", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://test.json-schema.org/dynamic-ref-avoids-root-of-each-schema/base", "$ref": "first#/$defs/stuff", "$defs": { "first": { "$id": "first", "$defs": { "stuff": { "$ref": "second#/$defs/stuff" }, "length": { "$comment": "unused, because there is no $dynamicAnchor here", "maxLength": 1 } } }, "second": { "$id": "second", "$defs": { "stuff": { "$ref": "third#/$defs/stuff" }, "length": { "$dynamicAnchor": "length", "maxLength": 2 } } }, "third": { "$id": "third", "$defs": { "stuff": { "$dynamicRef": "#length" }, "length": { "$dynamicAnchor": "length", "maxLength": 3 } } } } }, "tests": [ { "description": "data is sufficient for schema at second#/$defs/length", "data": "hi", "valid": true }, { "description": "data is not sufficient for schema at second#/$defs/length", "data": "hey", "valid": false } ] } ] format000755000766000024 015240201330 22022 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1iri.json100640000766000024 1076215240201330 23662 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of IRIs", "schema": { "$schema": "https://json-schema.org/v1", "format": "iri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IRI with anchor tag", "data": "http://ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid IRI with anchor tag and parentheses", "data": "http://ƒøø.com/blah_(wîkïpédiå)_blah#ßité-1", "valid": true }, { "description": "a valid IRI with URL-encoded stuff", "data": "http://ƒøø.ßår/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid IRI with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid IRI based on IPv6", "data": "http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]", "valid": true }, { "description": "an invalid IRI based on IPv6", "data": "http://2001:0db8:85a3:0000:0000:8a2e:0370:7334", "valid": false }, { "description": "an invalid relative IRI Reference", "data": "/abc", "valid": false }, { "description": "an invalid IRI", "data": "\\\\WINDOWS\\filëßåré", "valid": false }, { "description": "an invalid IRI though valid IRI reference", "data": "âππ", "valid": false }, { "description": "an IPv6 host whose embedded IPv4 has a leading zero is invalid", "data": "http://[::ffff:192.168.0.01]", "valid": false }, { "description": "a valid IRI with a compressed IPv6 host", "data": "http://[2001:db8::1]", "valid": true }, { "description": "a trailing newline after a valid IRI is invalid", "data": "http://ƒøø.ßår/\n", "valid": false }, { "description": "an IPvFuture host with an uppercase version letter is valid", "data": "http://[V1.fe]", "valid": true }, { "description": "a valid IRI with an IPv4 host", "data": "http://192.168.0.1/p", "valid": true }, { "description": "a valid IRI with no authority and a rootless path", "data": "urn:example:resource", "valid": true }, { "description": "a valid IRI with no authority and an absolute path", "data": "file:/etc/hosts", "valid": true }, { "description": "a valid IRI with a supplementary-plane character in the path", "data": "http://ƒøø.ßår/𐌀", "valid": true }, { "description": "a valid IRI with a supplementary-plane private-use char in query", "data": "http://ƒøø.ßår/?q=󰀀", "valid": true } ] } ] uri.json100640000766000024 2076115240201330 23676 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of URIs", "schema": { "$schema": "https://json-schema.org/v1", "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URL with anchor tag", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid URL with anchor tag and parentheses", "data": "http://foo.com/blah_(wikipedia)_blah#cite-1", "valid": true }, { "description": "a valid URL with URL-encoded stuff", "data": "http://foo.bar/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid puny-coded URL ", "data": "http://xn--nw2a.xn--j6w193g/", "valid": true }, { "description": "a valid URL with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid URL based on IPv4", "data": "http://223.255.255.254", "valid": true }, { "description": "a valid URL with ftp scheme", "data": "ftp://ftp.is.co.za/rfc/rfc1808.txt", "valid": true }, { "description": "a valid URL for a simple text file", "data": "http://www.ietf.org/rfc/rfc2396.txt", "valid": true }, { "description": "a valid URL ", "data": "ldap://[2001:db8::7]/c=GB?objectClass?one", "valid": true }, { "description": "a valid mailto URI", "data": "mailto:John.Doe@example.com", "valid": true }, { "description": "a valid newsgroup URI", "data": "news:comp.infosystems.www.servers.unix", "valid": true }, { "description": "a valid tel URI", "data": "tel:+1-816-555-1212", "valid": true }, { "description": "a valid URN", "data": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2", "valid": true }, { "description": "an invalid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": false }, { "description": "an invalid relative URI Reference", "data": "/abc", "valid": false }, { "description": "an invalid URI", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "an invalid URI though valid URI reference", "data": "abc", "valid": false }, { "description": "an invalid URI with spaces", "data": "http:// shouldfail.com", "valid": false }, { "description": "an invalid URI with spaces and missing scheme", "data": ":// should fail", "valid": false }, { "description": "an invalid URI with comma in scheme", "data": "bar,baz:foo", "valid": false }, { "description": "invalid userinfo", "data": "https://[@example.org/test.txt", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "https://example.org/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "invalid \" character", "data": "https://example.org/foobar\".txt", "valid": false }, { "description": "invalid <> characters", "data": "https://example.org/foobar<>.txt", "valid": false }, { "description": "invalid {} characters", "data": "https://example.org/foobar{}.txt", "valid": false }, { "description": "invalid ^ character", "data": "https://example.org/foobar^.txt", "valid": false }, { "description": "invalid ` character", "data": "https://example.org/foobar`.txt", "valid": false }, { "description": "invalid SPACE character", "data": "https://example.org/foo bar.txt", "valid": false }, { "description": "invalid | character", "data": "https://example.org/foobar|.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "invalid percent-encoding with non-hex digits", "data": "http://example.com/%6G", "valid": false }, { "description": "incomplete percent-encoding triplet", "data": "http://example.com/%A", "valid": false }, { "description": "lone percent sign is invalid", "data": "http://example.com/%", "valid": false }, { "description": "scheme must start with a letter", "data": "1http://example.com", "valid": false }, { "description": "invalid character in scheme", "data": "ht_tp://example.com", "valid": false }, { "description": "non-numeric port is invalid", "data": "http://example.com:abc/path", "valid": false }, { "description": "leading zero in an embedded IPv4 address is invalid", "data": "http://[::ffff:01.2.3.4]", "valid": false }, { "description": "square brackets are not allowed in a path segment", "data": "http:/[::1]", "valid": false } ] } ] multipleOf.json100640000766000024 525215240201330 23705 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "by int", "schema": { "$schema": "https://json-schema.org/v1", "multipleOf": 2 }, "tests": [ { "description": "int by int", "data": 10, "valid": true }, { "description": "int by int fail", "data": 7, "valid": false }, { "description": "ignores non-numbers", "data": "foo", "valid": true } ] }, { "description": "by number", "schema": { "$schema": "https://json-schema.org/v1", "multipleOf": 1.5 }, "tests": [ { "description": "zero is multiple of anything", "data": 0, "valid": true }, { "description": "4.5 is multiple of 1.5", "data": 4.5, "valid": true }, { "description": "-4.5 is multiple of 1.5", "data": -4.5, "valid": true }, { "description": "35 is not multiple of 1.5", "data": 35, "valid": false } ] }, { "description": "by small number", "schema": { "$schema": "https://json-schema.org/v1", "multipleOf": 0.0001 }, "tests": [ { "description": "0.0075 is multiple of 0.0001", "data": 0.0075, "valid": true }, { "description": "0.00751 is not multiple of 0.0001", "data": 0.00751, "valid": false } ] }, { "description": "float division = inf", "schema": { "$schema": "https://json-schema.org/v1", "type": "integer", "multipleOf": 0.123456789 }, "tests": [ { "description": "always invalid, but naive implementations may raise an overflow error", "data": 1e308, "valid": false } ] }, { "description": "small multiple of large integer", "schema": { "$schema": "https://json-schema.org/v1", "type": "integer", "multipleOf": 1e-8 }, "tests": [ { "description": "any integer is a multiple of 1e-8", "data": 12391239123, "valid": true } ] } ] properties.json100640000766000024 1670715240201330 24010 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "object properties validation", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {"type": "integer"}, "bar": {"type": "string"} } }, "tests": [ { "description": "both properties present and valid is valid", "data": {"foo": 1, "bar": "baz"}, "valid": true }, { "description": "one property invalid is invalid", "data": {"foo": 1, "bar": {}}, "valid": false }, { "description": "both properties invalid is invalid", "data": {"foo": [], "bar": {}}, "valid": false }, { "description": "doesn't invalidate other properties", "data": {"quux": []}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "properties, patternProperties, additionalProperties interaction", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {"type": "array", "maxItems": 3}, "bar": {"type": "array"} }, "patternProperties": {"f.o": {"minItems": 2}}, "additionalProperties": {"type": "integer"} }, "tests": [ { "description": "property validates property", "data": {"foo": [1, 2]}, "valid": true }, { "description": "property invalidates property", "data": {"foo": [1, 2, 3, 4]}, "valid": false }, { "description": "patternProperty invalidates property", "data": {"foo": []}, "valid": false }, { "description": "patternProperty validates nonproperty", "data": {"fxo": [1, 2]}, "valid": true }, { "description": "patternProperty invalidates nonproperty", "data": {"fxo": []}, "valid": false }, { "description": "additionalProperty ignores property", "data": {"bar": []}, "valid": true }, { "description": "additionalProperty validates others", "data": {"quux": 3}, "valid": true }, { "description": "additionalProperty invalidates others", "data": {"quux": "foo"}, "valid": false } ] }, { "description": "properties with boolean schema", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": true, "bar": false } }, "tests": [ { "description": "no property present is valid", "data": {}, "valid": true }, { "description": "only 'true' property present is valid", "data": {"foo": 1}, "valid": true }, { "description": "only 'false' property present is invalid", "data": {"bar": 2}, "valid": false }, { "description": "both properties present is invalid", "data": {"foo": 1, "bar": 2}, "valid": false } ] }, { "description": "properties with escaped characters", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo\nbar": {"type": "number"}, "foo\"bar": {"type": "number"}, "foo\\bar": {"type": "number"}, "foo\rbar": {"type": "number"}, "foo\tbar": {"type": "number"}, "foo\fbar": {"type": "number"} } }, "tests": [ { "description": "object with all numbers is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1", "foo\\bar": "1", "foo\rbar": "1", "foo\tbar": "1", "foo\fbar": "1" }, "valid": false } ] }, { "description": "properties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] }, { "description": "properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "__proto__": {"type": "number"}, "toString": { "properties": { "length": { "type": "string" } } }, "constructor": {"type": "number"} } }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": true }, { "description": "__proto__ not valid", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString not valid", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor not valid", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present and valid", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] name-defs.json100640000766000024 45315240201330 23716 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$schema": "https://json-schema.org/v1", "$defs": { "orNull": { "anyOf": [ { "type": "null" }, { "$ref": "#" } ] } }, "type": "string" } default.json100640000766000024 426715240201330 24053 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "invalid type for default", "schema": { "properties": { "foo": { "type": "integer", "default": [] } } }, "tests": [ { "description": "valid when property is specified", "data": {"foo": 13}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "invalid string value for default", "schema": { "properties": { "bar": { "type": "string", "minLength": 4, "default": "bad" } } }, "tests": [ { "description": "valid when property is specified", "data": {"bar": "good"}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "the default keyword does not do anything if the property is missing", "schema": { "type": "object", "properties": { "alpha": { "type": "number", "maximum": 3, "default": 5 } } }, "tests": [ { "description": "an explicit property value is checked against maximum (passing)", "data": { "alpha": 1 }, "valid": true }, { "description": "an explicit property value is checked against maximum (failing)", "data": { "alpha": 5 }, "valid": false }, { "description": "missing properties are not filled in with the default", "data": {}, "valid": true } ] } ] extends.json100640000766000024 503715240201330 24075 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "extends", "schema": { "properties": {"bar": {"type": "integer", "required": true}}, "extends": { "properties": { "foo": {"type": "string", "required": true} } } }, "tests": [ { "description": "extends", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "mismatch extends", "data": {"foo": "baz"}, "valid": false }, { "description": "mismatch extended", "data": {"bar": 2}, "valid": false }, { "description": "wrong type", "data": {"foo": "baz", "bar": "quux"}, "valid": false } ] }, { "description": "multiple extends", "schema": { "properties": {"bar": {"type": "integer", "required": true}}, "extends" : [ { "properties": { "foo": {"type": "string", "required": true} } }, { "properties": { "baz": {"type": "null", "required": true} } } ] }, "tests": [ { "description": "valid", "data": {"foo": "quux", "bar": 2, "baz": null}, "valid": true }, { "description": "mismatch first extends", "data": {"bar": 2, "baz": null}, "valid": false }, { "description": "mismatch second extends", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "mismatch both", "data": {"bar": 2}, "valid": false } ] }, { "description": "extends simple types", "schema": { "minimum": 20, "extends": {"maximum": 30} }, "tests": [ { "description": "valid", "data": 25, "valid": true }, { "description": "mismatch extends", "data": 35, "valid": false } ] } ] maximum.json100640000766000024 526015240201330 24076 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "maximum validation", "schema": {"maximum": 3.0}, "tests": [ { "description": "below the maximum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 3.0, "valid": true }, { "description": "above the maximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "maximum validation with unsigned integer", "schema": {"maximum": 300}, "tests": [ { "description": "below the maximum is valid", "data": 299.97, "valid": true }, { "description": "boundary point integer is valid", "data": 300, "valid": true }, { "description": "boundary point float is valid", "data": 300.00, "valid": true }, { "description": "above the maximum is invalid", "data": 300.5, "valid": false } ] }, { "description": "maximum validation (explicit false exclusivity)", "schema": {"maximum": 3.0, "exclusiveMaximum": false}, "tests": [ { "description": "below the maximum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 3.0, "valid": true }, { "description": "above the maximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "exclusiveMaximum validation", "schema": { "maximum": 3.0, "exclusiveMaximum": true }, "tests": [ { "description": "below the maximum is still valid", "data": 2.2, "valid": true }, { "description": "boundary point is invalid", "data": 3.0, "valid": false } ] } ] minimum.json100640000766000024 457115240201330 24100 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "minimum validation", "schema": {"minimum": 1.1}, "tests": [ { "description": "above the minimum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 1.1, "valid": true }, { "description": "below the minimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "exclusiveMinimum validation", "schema": { "minimum": 1.1, "exclusiveMinimum": true }, "tests": [ { "description": "above the minimum is still valid", "data": 1.2, "valid": true }, { "description": "boundary point is invalid", "data": 1.1, "valid": false } ] }, { "description": "minimum validation with signed integer", "schema": {"minimum": -2}, "tests": [ { "description": "negative above the minimum is valid", "data": -1, "valid": true }, { "description": "positive above the minimum is valid", "data": 0, "valid": true }, { "description": "boundary point is valid", "data": -2, "valid": true }, { "description": "boundary point with float is valid", "data": -2.0, "valid": true }, { "description": "float below the minimum is invalid", "data": -2.0001, "valid": false }, { "description": "int below the minimum is invalid", "data": -3, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] pattern.json100640000766000024 300315240201330 24067 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "pattern validation", "schema": {"pattern": "^a*$"}, "tests": [ { "description": "a matching pattern is valid", "data": "aaa", "valid": true }, { "description": "a non-matching pattern is invalid", "data": "abc", "valid": false }, { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "pattern is not anchored", "schema": {"pattern": "a+"}, "tests": [ { "description": "matches a substring", "data": "xxaayy", "valid": true } ] } ] default.json100640000766000024 426715240201330 24054 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "invalid type for default", "schema": { "properties": { "foo": { "type": "integer", "default": [] } } }, "tests": [ { "description": "valid when property is specified", "data": {"foo": 13}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "invalid string value for default", "schema": { "properties": { "bar": { "type": "string", "minLength": 4, "default": "bad" } } }, "tests": [ { "description": "valid when property is specified", "data": {"bar": "good"}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "the default keyword does not do anything if the property is missing", "schema": { "type": "object", "properties": { "alpha": { "type": "number", "maximum": 3, "default": 5 } } }, "tests": [ { "description": "an explicit property value is checked against maximum (passing)", "data": { "alpha": 1 }, "valid": true }, { "description": "an explicit property value is checked against maximum (failing)", "data": { "alpha": 5 }, "valid": false }, { "description": "missing properties are not filled in with the default", "data": {}, "valid": true } ] } ] maximum.json100640000766000024 526015240201330 24077 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "maximum validation", "schema": {"maximum": 3.0}, "tests": [ { "description": "below the maximum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 3.0, "valid": true }, { "description": "above the maximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "maximum validation with unsigned integer", "schema": {"maximum": 300}, "tests": [ { "description": "below the maximum is valid", "data": 299.97, "valid": true }, { "description": "boundary point integer is valid", "data": 300, "valid": true }, { "description": "boundary point float is valid", "data": 300.00, "valid": true }, { "description": "above the maximum is invalid", "data": 300.5, "valid": false } ] }, { "description": "maximum validation (explicit false exclusivity)", "schema": {"maximum": 3.0, "exclusiveMaximum": false}, "tests": [ { "description": "below the maximum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 3.0, "valid": true }, { "description": "above the maximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "exclusiveMaximum validation", "schema": { "maximum": 3.0, "exclusiveMaximum": true }, "tests": [ { "description": "below the maximum is still valid", "data": 2.2, "valid": true }, { "description": "boundary point is invalid", "data": 3.0, "valid": false } ] } ] minimum.json100640000766000024 617015240201330 24076 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "minimum validation", "schema": {"minimum": 1.1}, "tests": [ { "description": "above the minimum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 1.1, "valid": true }, { "description": "below the minimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "minimum validation (explicit false exclusivity)", "schema": {"minimum": 1.1, "exclusiveMinimum": false}, "tests": [ { "description": "above the minimum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 1.1, "valid": true }, { "description": "below the minimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "exclusiveMinimum validation", "schema": { "minimum": 1.1, "exclusiveMinimum": true }, "tests": [ { "description": "above the minimum is still valid", "data": 1.2, "valid": true }, { "description": "boundary point is invalid", "data": 1.1, "valid": false } ] }, { "description": "minimum validation with signed integer", "schema": {"minimum": -2}, "tests": [ { "description": "negative above the minimum is valid", "data": -1, "valid": true }, { "description": "positive above the minimum is valid", "data": 0, "valid": true }, { "description": "boundary point is valid", "data": -2, "valid": true }, { "description": "boundary point with float is valid", "data": -2.0, "valid": true }, { "description": "float below the minimum is invalid", "data": -2.0001, "valid": false }, { "description": "int below the minimum is invalid", "data": -3, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] pattern.json100640000766000024 300315240201330 24070 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "pattern validation", "schema": {"pattern": "^a*$"}, "tests": [ { "description": "a matching pattern is valid", "data": "aaa", "valid": true }, { "description": "a non-matching pattern is invalid", "data": "abc", "valid": false }, { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "pattern is not anchored", "schema": {"pattern": "a+"}, "tests": [ { "description": "matches a substring", "data": "xxaayy", "valid": true } ] } ] default.json100640000766000024 426715240201330 24056 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "invalid type for default", "schema": { "properties": { "foo": { "type": "integer", "default": [] } } }, "tests": [ { "description": "valid when property is specified", "data": {"foo": 13}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "invalid string value for default", "schema": { "properties": { "bar": { "type": "string", "minLength": 4, "default": "bad" } } }, "tests": [ { "description": "valid when property is specified", "data": {"bar": "good"}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "the default keyword does not do anything if the property is missing", "schema": { "type": "object", "properties": { "alpha": { "type": "number", "maximum": 3, "default": 5 } } }, "tests": [ { "description": "an explicit property value is checked against maximum (passing)", "data": { "alpha": 1 }, "valid": true }, { "description": "an explicit property value is checked against maximum (failing)", "data": { "alpha": 5 }, "valid": false }, { "description": "missing properties are not filled in with the default", "data": {}, "valid": true } ] } ] maximum.json100640000766000024 270215240201330 24077 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "maximum validation", "schema": {"maximum": 3.0}, "tests": [ { "description": "below the maximum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 3.0, "valid": true }, { "description": "above the maximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "maximum validation with unsigned integer", "schema": {"maximum": 300}, "tests": [ { "description": "below the maximum is valid", "data": 299.97, "valid": true }, { "description": "boundary point integer is valid", "data": 300, "valid": true }, { "description": "boundary point float is valid", "data": 300.00, "valid": true }, { "description": "above the maximum is invalid", "data": 300.5, "valid": false } ] } ] minimum.json100640000766000024 361215240201330 24076 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "minimum validation", "schema": {"minimum": 1.1}, "tests": [ { "description": "above the minimum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 1.1, "valid": true }, { "description": "below the minimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "minimum validation with signed integer", "schema": {"minimum": -2}, "tests": [ { "description": "negative above the minimum is valid", "data": -1, "valid": true }, { "description": "positive above the minimum is valid", "data": 0, "valid": true }, { "description": "boundary point is valid", "data": -2, "valid": true }, { "description": "boundary point with float is valid", "data": -2.0, "valid": true }, { "description": "float below the minimum is invalid", "data": -2.0001, "valid": false }, { "description": "int below the minimum is invalid", "data": -3, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] pattern.json100640000766000024 300315240201330 24072 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "pattern validation", "schema": {"pattern": "^a*$"}, "tests": [ { "description": "a matching pattern is valid", "data": "aaa", "valid": true }, { "description": "a non-matching pattern is invalid", "data": "abc", "valid": false }, { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "pattern is not anchored", "schema": {"pattern": "a+"}, "tests": [ { "description": "matches a substring", "data": "xxaayy", "valid": true } ] } ] default.json100640000766000024 426715240201330 24057 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "invalid type for default", "schema": { "properties": { "foo": { "type": "integer", "default": [] } } }, "tests": [ { "description": "valid when property is specified", "data": {"foo": 13}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "invalid string value for default", "schema": { "properties": { "bar": { "type": "string", "minLength": 4, "default": "bad" } } }, "tests": [ { "description": "valid when property is specified", "data": {"bar": "good"}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "the default keyword does not do anything if the property is missing", "schema": { "type": "object", "properties": { "alpha": { "type": "number", "maximum": 3, "default": 5 } } }, "tests": [ { "description": "an explicit property value is checked against maximum (passing)", "data": { "alpha": 1 }, "valid": true }, { "description": "an explicit property value is checked against maximum (failing)", "data": { "alpha": 5 }, "valid": false }, { "description": "missing properties are not filled in with the default", "data": {}, "valid": true } ] } ] maximum.json100640000766000024 270215240201330 24100 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "maximum validation", "schema": {"maximum": 3.0}, "tests": [ { "description": "below the maximum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 3.0, "valid": true }, { "description": "above the maximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "maximum validation with unsigned integer", "schema": {"maximum": 300}, "tests": [ { "description": "below the maximum is valid", "data": 299.97, "valid": true }, { "description": "boundary point integer is valid", "data": 300, "valid": true }, { "description": "boundary point float is valid", "data": 300.00, "valid": true }, { "description": "above the maximum is invalid", "data": 300.5, "valid": false } ] } ] minimum.json100640000766000024 361215240201330 24077 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "minimum validation", "schema": {"minimum": 1.1}, "tests": [ { "description": "above the minimum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 1.1, "valid": true }, { "description": "below the minimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "minimum validation with signed integer", "schema": {"minimum": -2}, "tests": [ { "description": "negative above the minimum is valid", "data": -1, "valid": true }, { "description": "positive above the minimum is valid", "data": 0, "valid": true }, { "description": "boundary point is valid", "data": -2, "valid": true }, { "description": "boundary point with float is valid", "data": -2.0, "valid": true }, { "description": "float below the minimum is invalid", "data": -2.0001, "valid": false }, { "description": "int below the minimum is invalid", "data": -3, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] pattern.json100640000766000024 300315240201330 24073 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "pattern validation", "schema": {"pattern": "^a*$"}, "tests": [ { "description": "a matching pattern is valid", "data": "aaa", "valid": true }, { "description": "a non-matching pattern is invalid", "data": "abc", "valid": false }, { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "pattern is not anchored", "schema": {"pattern": "a+"}, "tests": [ { "description": "matches a substring", "data": "xxaayy", "valid": true } ] } ] date.json100640000766000024 3544315240201330 24017 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of date strings", "schema": { "$schema": "https://json-schema.org/v1", "format": "date" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date string", "data": "1963-06-19", "valid": true }, { "description": "a valid date string with 31 days in January", "data": "2020-01-31", "valid": true }, { "description": "a invalid date string with 32 days in January", "data": "2020-01-32", "valid": false }, { "description": "a valid date string with 28 days in February (normal)", "data": "2021-02-28", "valid": true }, { "description": "a invalid date string with 30 days in February (leap)", "data": "2020-02-30", "valid": false }, { "description": "a valid date string with 31 days in March", "data": "2020-03-31", "valid": true }, { "description": "a invalid date string with 32 days in March", "data": "2020-03-32", "valid": false }, { "description": "a valid date string with 30 days in April", "data": "2020-04-30", "valid": true }, { "description": "a invalid date string with 31 days in April", "data": "2020-04-31", "valid": false }, { "description": "a valid date string with 31 days in May", "data": "2020-05-31", "valid": true }, { "description": "a invalid date string with 32 days in May", "data": "2020-05-32", "valid": false }, { "description": "a valid date string with 30 days in June", "data": "2020-06-30", "valid": true }, { "description": "a invalid date string with 31 days in June", "data": "2020-06-31", "valid": false }, { "description": "a valid date string with 31 days in July", "data": "2020-07-31", "valid": true }, { "description": "a invalid date string with 32 days in July", "data": "2020-07-32", "valid": false }, { "description": "a valid date string with 31 days in August", "data": "2020-08-31", "valid": true }, { "description": "a invalid date string with 32 days in August", "data": "2020-08-32", "valid": false }, { "description": "a valid date string with 30 days in September", "data": "2020-09-30", "valid": true }, { "description": "a invalid date string with 31 days in September", "data": "2020-09-31", "valid": false }, { "description": "a valid date string with 31 days in October", "data": "2020-10-31", "valid": true }, { "description": "a invalid date string with 32 days in October", "data": "2020-10-32", "valid": false }, { "description": "a valid date string with 30 days in November", "data": "2020-11-30", "valid": true }, { "description": "a invalid date string with 31 days in November", "data": "2020-11-31", "valid": false }, { "description": "a valid date string with 31 days in December", "data": "2020-12-31", "valid": true }, { "description": "a invalid date string with 32 days in December", "data": "2020-12-32", "valid": false }, { "description": "an invalid date string", "data": "06/19/1963", "valid": false }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350", "valid": false }, { "description": "non-padded month dates are not valid", "data": "1998-1-20", "valid": false }, { "description": "non-padded day dates are not valid", "data": "1998-01-1", "valid": false }, { "description": "invalid month", "data": "1998-13-01", "valid": false }, { "description": "2021 is not a leap year", "data": "2021-02-29", "valid": false }, { "description": "2020 is a leap year", "data": "2020-02-29", "valid": true }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1963-06-1৪", "valid": false }, { "description": "invalid: non-ASCII Bengali digit in month field", "data": "2020-0৪-01", "valid": false }, { "description": "ISO8601 / non-RFC3339: YYYYMMDD without dashes (2023-03-28)", "data": "20230328", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number implicit day of week (2023-01-02)", "data": "2023-W01", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number with day of week (2023-03-28)", "data": "2023-W13-2", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number rollover to next year (2023-01-01)", "data": "2022W527", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false }, { "description": "century year 0100 is not a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — 100 % 100 == 0 but 100 % 400 != 0", "data": "0100-02-29", "valid": false }, { "description": "century year 0400 is a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — 400-year cycle boundary", "data": "0400-02-29", "valid": true }, { "description": "century year 2100 is not a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — future century year", "data": "2100-02-29", "valid": false }, { "description": "invalid: leading whitespace is not permitted", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — full-date grammar does not include whitespace", "data": " 2024-01-15", "valid": false }, { "description": "invalid: trailing whitespace is not permitted", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — full-date grammar does not include whitespace", "data": "2024-01-15 ", "valid": false }, { "description": "invalid: month 00 is not valid per date-month range 01-12", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — date-month = 2DIGIT ; 01-12", "data": "2024-00-15", "valid": false }, { "description": "invalid: day 00 is not valid per date-mday minimum of 01", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — date-mday = 2DIGIT ; 01-28/29/30/31", "data": "2024-01-00", "valid": false }, { "description": "invalid: empty string", "data": "", "valid": false }, { "description": "invalid: embedded whitespace between year and month", "data": "2020 -01-01", "valid": false }, { "description": "invalid: trailing character after valid full-date", "data": "2020-01-01X", "valid": false }, { "description": "invalid: trailing Z after full-date", "data": "2020-01-01Z", "valid": false }, { "description": "invalid: full-date followed by space and time component", "data": "2020-01-01 00:00:00Z", "valid": false }, { "description": "valid: four-digit year 0001", "data": "0001-01-01", "valid": true }, { "description": "invalid: two-digit year (N-2 digits)", "data": "20-01-01", "valid": false }, { "description": "invalid: three-digit year (N-1 digits)", "data": "998-01-01", "valid": false }, { "description": "invalid: five-digit year (N+1 digits)", "data": "12020-01-01", "valid": false }, { "description": "invalid: positive sign prefix on year", "data": "+2020-01-01", "valid": false }, { "description": "invalid: negative sign prefix on year", "data": "-2020-01-01", "valid": false }, { "description": "invalid: non-ASCII Bengali digit in year field", "data": "২020-01-01", "valid": false }, { "description": "invalid: alphabetic characters in year field", "data": "YYYY-01-01", "valid": false }, { "description": "invalid: three-digit month (N+1 digits)", "data": "2020-001-01", "valid": false }, { "description": "invalid: alphabetic characters in month field", "data": "2020-MM-01", "valid": false }, { "description": "invalid: three-digit day (N+1 digits)", "data": "2020-01-001", "valid": false }, { "description": "invalid: alphabetic characters in day field", "data": "2020-01-DD", "valid": false }, { "description": "invalid: colon separators", "data": "2020:01:01", "valid": false }, { "description": "invalid: dot separators", "data": "2020.01.01", "valid": false }, { "description": "invalid: space separators", "data": "2020 01 01", "valid": false }, { "description": "invalid: mixed slash and hyphen separators", "data": "2020-01/01", "valid": false }, { "description": "invalid: duplicated first hyphen", "data": "2020--01-01", "valid": false }, { "description": "invalid: duplicated second hyphen", "data": "2020-01--01", "valid": false }, { "description": "valid: date inside the Julian to Gregorian reform gap", "data": "1582-10-10", "valid": true }, { "description": "invalid: year field numerically larger than a 32-bit signed integer", "data": "2147483648-01-01", "valid": false }, { "description": "invalid: character just above '9' as the second digit of the day", "data": "2020-01-0:", "valid": false }, { "description": "invalid: non-ASCII digit leaving ten UTF-8 bytes but eight characters", "data": "\u09e80-01-01", "valid": false }, { "description": "invalid: en dash separators instead of hyphen-minus", "data": "2020\u201301\u201301", "valid": false }, { "description": "invalid: NUL character after an otherwise valid full-date", "data": "2020-01-01\u0000", "valid": false } ] } ] ipv4.json100640000766000024 1621715240201330 23762 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of IP addresses", "comment": "RFC 2673, Section 3.2: dotted-quad = decbyte \".\" decbyte \".\" decbyte \".\" decbyte. A 'decbyte' (1*3DIGIT) restricts semantic values to 0-255, allows leading zeros, and strictly forbids symbols, alpha/hex, whitespace, and non-ASCII characters.", "schema": { "$schema": "https://json-schema.org/v1", "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IP address", "data": "192.168.0.1", "valid": true }, { "description": "an IP address with too many components", "data": "127.0.0.0.1", "valid": false }, { "description": "an IP address with out-of-range values", "data": "256.256.256.256", "valid": false }, { "description": "an IP address without 4 components", "data": "127.0", "valid": false }, { "description": "a 2-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.1", "valid": false }, { "description": "a 3-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.0.1", "valid": false }, { "description": "an IP address as an integer", "data": "0x7f000001", "valid": false }, { "description": "an IP address as an integer (decimal)", "data": "2130706433", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২7.0.0.1", "valid": false }, { "description": "invalid fullwidth digits (non-ASCII)", "data": "192.168.1.1", "valid": false }, { "description": "invalid mathematical bold digits (non-ASCII)", "data": "𝟏𝟗𝟐.𝟏𝟔𝟖.𝟏.𝟏", "valid": false }, { "description": "netmask is not a part of ipv4 address", "data": "192.168.1.0/24", "valid": false }, { "description": "leading whitespace is invalid", "data": " 192.168.0.1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "192.168.0.1 ", "valid": false }, { "description": "trailing newline is invalid", "data": "192.168.0.1\n", "valid": false }, { "description": "hexadecimal notation is invalid", "data": "0x7f.0.0.1", "valid": false }, { "description": "octal notation explicit is invalid", "data": "0o10.0.0.1", "valid": false }, { "description": "empty part (double dot) is invalid", "data": "192.168..1", "valid": false }, { "description": "leading dot is invalid", "data": ".192.168.0.1", "valid": false }, { "description": "trailing dot is invalid", "data": "192.168.0.1.", "valid": false }, { "description": "minimum valid IPv4 address", "data": "0.0.0.0", "valid": true }, { "description": "maximum valid IPv4 address", "data": "255.255.255.255", "valid": true }, { "description": "valid IPv4 with an octet in the 200 to 249 range", "data": "200.0.0.0", "valid": true }, { "description": "valid IPv4 with two-digit octets", "data": "10.20.30.40", "valid": true }, { "description": "empty string is invalid", "data": "", "valid": false }, { "description": "plus sign is invalid", "data": "+1.2.3.4", "valid": false }, { "description": "negative sign is invalid", "data": "-1.2.3.4", "valid": false }, { "description": "exponential notation is invalid", "data": "1e2.0.0.1", "valid": false }, { "description": "alpha characters are invalid", "data": "192.168.a.1", "valid": false }, { "description": "internal whitespace is invalid", "data": "192. 168.0.1", "valid": false }, { "description": "tab character is invalid", "data": "192.168.0.1\t", "valid": false }, { "description": "additional content after an embedded NUL byte", "data": "192.168.0.1\u0000.evil.com", "valid": false }, { "description": "with port number is invalid", "data": "192.168.0.1:80", "valid": false }, { "description": "an IPv4-mapped IPv6 address is invalid", "data": "::ffff:192.168.0.1", "valid": false }, { "description": "single octet out of range in last position", "data": "192.168.0.256", "valid": false } ] } ] ipv6.json100640000766000024 1555015240201330 23763 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of IPv6 addresses", "schema": { "$schema": "https://json-schema.org/v1", "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IPv6 address", "data": "::1", "valid": true }, { "description": "an IPv6 address with out-of-range values", "data": "12345::", "valid": false }, { "description": "trailing 4 hex symbols is valid", "data": "::abef", "valid": true }, { "description": "trailing 5 hex symbols is invalid", "data": "::abcef", "valid": false }, { "description": "an IPv6 address with too many components", "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1", "valid": false }, { "description": "an IPv6 address containing illegal characters", "data": "::laptop", "valid": false }, { "description": "no digits is valid", "data": "::", "valid": true }, { "description": "leading colons is valid", "data": "::42:ff:1", "valid": true }, { "description": "trailing colons is valid", "data": "d6::", "valid": true }, { "description": "missing leading octet is invalid", "data": ":2:3:4:5:6:7:8", "valid": false }, { "description": "missing trailing octet is invalid", "data": "1:2:3:4:5:6:7:", "valid": false }, { "description": "missing leading octet with omitted octets later", "data": ":2:3:4::8", "valid": false }, { "description": "single set of double colons in the middle is valid", "data": "1:d6::42", "valid": true }, { "description": "two sets of double colons is invalid", "data": "1::d6::42", "valid": false }, { "description": "mixed format with the ipv4 section as decimal octets", "data": "1::d6:192.168.0.1", "valid": true }, { "description": "mixed format with double colons between the sections", "data": "1:2::192.168.0.1", "valid": true }, { "description": "mixed format with ipv4 section with octet out of range", "data": "1::2:192.168.256.1", "valid": false }, { "description": "mixed format with ipv4 section with a hex octet", "data": "1::2:192.168.ff.1", "valid": false }, { "description": "mixed format with leading double colons (ipv4-mapped ipv6 address)", "data": "::ffff:192.168.0.1", "valid": true }, { "description": "triple colons is invalid", "data": "1:2:3:4:5:::8", "valid": false }, { "description": "8 octets", "data": "1:2:3:4:5:6:7:8", "valid": true }, { "description": "insufficient octets without double colons", "data": "1:2:3:4:5:6:7", "valid": false }, { "description": "no colons is invalid", "data": "1", "valid": false }, { "description": "ipv4 is not ipv6", "data": "127.0.0.1", "valid": false }, { "description": "ipv4 segment must have 4 octets", "data": "1:2:3:4:1.2.3", "valid": false }, { "description": "leading whitespace is invalid", "data": " ::1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "::1 ", "valid": false }, { "description": "netmask is not a part of ipv6 address", "data": "fe80::/64", "valid": false }, { "description": "zone id is not a part of ipv6 address", "data": "fe80::a%eth1", "valid": false }, { "description": "a long valid ipv6", "data": "1000:1000:1000:1000:1000:1000:255.255.255.255", "valid": true }, { "description": "a long invalid ipv6, below length limit, first", "data": "100:100:100:100:100:100:255.255.255.255.255", "valid": false }, { "description": "a long invalid ipv6, below length limit, second", "data": "100:100:100:100:100:100:100:255.255.255.255", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1:2:3:4:5:6:7:৪", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in the IPv4 portion", "data": "1:2::192.16৪.0.1", "valid": false } ] } ] time.json100640000766000024 2050015240201330 24024 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of time strings", "schema": { "$schema": "https://json-schema.org/v1", "format": "time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid time string", "data": "08:30:06Z", "valid": true }, { "description": "invalid time string with extra leading zeros", "data": "008:030:006Z", "valid": false }, { "description": "invalid time string with no leading zero for single digit", "data": "8:3:6Z", "valid": false }, { "description": "hour, minute, second must be two digits", "data": "8:0030:6Z", "valid": false }, { "description": "a valid time string with leap second, Zulu", "data": "23:59:60Z", "valid": true }, { "description": "invalid leap second, Zulu (wrong hour)", "data": "22:59:60Z", "valid": false }, { "description": "invalid leap second, Zulu (wrong minute)", "data": "23:58:60Z", "valid": false }, { "description": "valid leap second, zero time-offset", "data": "23:59:60+00:00", "valid": true }, { "description": "invalid leap second, zero time-offset (wrong hour)", "data": "22:59:60+00:00", "valid": false }, { "description": "invalid leap second, zero time-offset (wrong minute)", "data": "23:58:60+00:00", "valid": false }, { "description": "valid leap second, positive time-offset", "data": "01:29:60+01:30", "valid": true }, { "description": "valid leap second, large positive time-offset", "data": "23:29:60+23:30", "valid": true }, { "description": "invalid leap second, positive time-offset (wrong hour)", "data": "23:59:60+01:00", "valid": false }, { "description": "invalid leap second, positive time-offset (wrong minute)", "data": "23:59:60+00:30", "valid": false }, { "description": "valid leap second, negative time-offset", "data": "15:59:60-08:00", "valid": true }, { "description": "valid leap second, large negative time-offset", "data": "00:29:60-23:30", "valid": true }, { "description": "invalid leap second, negative time-offset (wrong hour)", "data": "23:59:60-01:00", "valid": false }, { "description": "invalid leap second, negative time-offset (wrong minute)", "data": "23:59:60-00:30", "valid": false }, { "description": "a valid time string with second fraction", "data": "23:20:50.52Z", "valid": true }, { "description": "a valid time string with precise second fraction", "data": "08:30:06.283185Z", "valid": true }, { "description": "a valid time string with plus offset", "data": "08:30:06+00:20", "valid": true }, { "description": "a valid time string with minus offset", "data": "08:30:06-08:00", "valid": true }, { "description": "time with unknown local offset is valid", "comment": "RFC 3339 section 4.3 (unknown local offset)", "data": "12:34:56-00:00", "valid": true }, { "description": "hour, minute in time-offset must be two digits", "data": "08:30:06-8:000", "valid": false }, { "description": "a valid time string with case-insensitive Z", "data": "08:30:06z", "valid": true }, { "description": "an invalid time string with invalid hour", "data": "24:00:00Z", "valid": false }, { "description": "an invalid time string with invalid minute", "data": "00:60:00Z", "valid": false }, { "description": "an invalid time string with invalid second", "data": "00:00:61Z", "valid": false }, { "description": "an invalid time string with invalid leap second (wrong hour)", "data": "22:59:60Z", "valid": false }, { "description": "an invalid time string with invalid leap second (wrong minute)", "data": "23:58:60Z", "valid": false }, { "description": "an invalid time string with invalid time numoffset hour", "data": "01:02:03+24:00", "valid": false }, { "description": "an invalid time string with invalid time numoffset minute", "data": "01:02:03+00:60", "valid": false }, { "description": "an invalid time string with invalid time with both Z and numoffset", "data": "01:02:03Z+00:30", "valid": false }, { "description": "an invalid offset indicator", "data": "08:30:06 PST", "valid": false }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "01:01:01,1111", "valid": false }, { "description": "no time offset", "data": "12:00:00", "valid": false }, { "description": "no time offset with second fraction", "data": "12:00:00.52", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২:00:00Z", "valid": false }, { "description": "offset not starting with plus or minus", "data": "08:30:06#00:20", "valid": false }, { "description": "contains letters", "data": "ab:cd:ef", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false } ] } ] uuid.json100640000766000024 1203715240201330 24042 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "uuid format", "schema": { "$schema": "https://json-schema.org/v1", "format": "uuid" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "all upper-case", "data": "2EB8AA08-AA98-11EA-B4AA-73B441D16380", "valid": true }, { "description": "all lower-case", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d16380", "valid": true }, { "description": "mixed case", "data": "2eb8aa08-AA98-11ea-B4Aa-73B441D16380", "valid": true }, { "description": "all zeroes is valid", "data": "00000000-0000-0000-0000-000000000000", "valid": true }, { "description": "wrong length", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d1638", "valid": false }, { "description": "missing section", "data": "2eb8aa08-aa98-11ea-73b441d16380", "valid": false }, { "description": "bad characters (not hex)", "data": "2eb8aa08-aa98-11ea-b4ga-73b441d16380", "valid": false }, { "description": "no dashes", "data": "2eb8aa08aa9811eab4aa73b441d16380", "valid": false }, { "description": "too few dashes", "data": "2eb8aa08aa98-11ea-b4aa73b441d16380", "valid": false }, { "description": "too many dashes", "data": "2eb8-aa08-aa98-11ea-b4aa73b44-1d16380", "valid": false }, { "description": "dashes in the wrong spot", "data": "2eb8aa08aa9811eab4aa73b441d16380----", "valid": false }, { "description": "shifted dashes", "data": "2eb8aa0-8aa98-11e-ab4aa7-3b441d16380", "valid": false }, { "description": "valid version 4", "data": "98d80576-482e-427f-8434-7f86890ab222", "valid": true }, { "description": "valid version 5", "data": "99c17cbb-656f-564a-940f-1a4568f03487", "valid": true }, { "description": "hypothetical version 6", "data": "99c17cbb-656f-664a-940f-1a4568f03487", "valid": true }, { "description": "hypothetical version 15", "data": "99c17cbb-656f-f64a-940f-1a4568f03487", "valid": true }, { "description": "URN prefixed UUID is invalid", "data": "urn:uuid:2eb8aa08-aa98-11ea-b4aa-73b441d16380", "valid": false }, { "description": "trailing hyphen after a complete UUID is invalid", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d16380-", "valid": false }, { "description": "non-ASCII digit '২' (a Bengali 2) is invalid", "data": "২eb8aa08-aa98-11ea-b4aa-73b441d16380", "valid": false }, { "description": "an underscore in place of a hex digit is invalid", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d1_380", "valid": false }, { "description": "a trailing newline after a complete UUID is invalid", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d16380\n", "valid": false }, { "description": "a variant nibble not defined by RFC 4122 is valid", "data": "2eb8aa08-aa98-11ea-f4aa-73b441d16380", "valid": true } ] } ] maxContains.json100640000766000024 674315240201330 24057 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "maxContains without contains is ignored", "schema": { "$schema": "https://json-schema.org/v1", "maxContains": 1 }, "tests": [ { "description": "one item valid against lone maxContains", "data": [1], "valid": true }, { "description": "two items still valid against lone maxContains", "data": [1, 2], "valid": true } ] }, { "description": "maxContains with contains", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "const": 1 }, "maxContains": 1 }, "tests": [ { "description": "empty array", "data": [], "valid": false }, { "description": "all elements match, valid maxContains", "data": [1], "valid": true }, { "description": "all elements match, invalid maxContains", "data": [1, 1], "valid": false }, { "description": "some elements match, valid maxContains", "data": [1, 2], "valid": true }, { "description": "some elements match, invalid maxContains", "data": [1, 2, 1], "valid": false } ] }, { "description": "maxContains with contains, value with a decimal", "schema": { "$schema": "https://json-schema.org/v1", "contains": {"const": 1}, "maxContains": 1.0 }, "tests": [ { "description": "one element matches, valid maxContains", "data": [ 1 ], "valid": true }, { "description": "too many elements match, invalid maxContains", "data": [ 1, 1 ], "valid": false } ] }, { "description": "minContains < maxContains", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "const": 1 }, "minContains": 1, "maxContains": 3 }, "tests": [ { "description": "array with actual < minContains < maxContains", "data": [], "valid": false }, { "description": "array with minContains < actual < maxContains", "data": [1, 1], "valid": true }, { "description": "array with minContains < maxContains < actual", "data": [1, 1, 1, 1], "valid": false } ] }, { "description": "maxContains = 0 with minContains = 0", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "const": 1 }, "minContains": 0, "maxContains": 0 }, "tests": [ { "description": "empty array", "data": [], "valid": true }, { "description": "one matching item", "data": [1], "valid": false } ] } ] minContains.json100640000766000024 1443715240201330 24074 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "minContains without contains is ignored", "schema": { "$schema": "https://json-schema.org/v1", "minContains": 1 }, "tests": [ { "description": "one item valid against lone minContains", "data": [1], "valid": true }, { "description": "zero items still valid against lone minContains", "data": [], "valid": true } ] }, { "description": "minContains=1 with contains", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "const": 1 }, "minContains": 1 }, "tests": [ { "description": "empty data", "data": [], "valid": false }, { "description": "no elements match", "data": [2], "valid": false }, { "description": "single element matches, valid minContains", "data": [1], "valid": true }, { "description": "some elements match, valid minContains", "data": [1, 2], "valid": true }, { "description": "all elements match, valid minContains", "data": [1, 1], "valid": true } ] }, { "description": "minContains=2 with contains", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "const": 1 }, "minContains": 2 }, "tests": [ { "description": "empty data", "data": [], "valid": false }, { "description": "all elements match, invalid minContains", "data": [1], "valid": false }, { "description": "some elements match, invalid minContains", "data": [1, 2], "valid": false }, { "description": "all elements match, valid minContains (exactly as needed)", "data": [1, 1], "valid": true }, { "description": "all elements match, valid minContains (more than needed)", "data": [1, 1, 1], "valid": true }, { "description": "some elements match, valid minContains", "data": [1, 2, 1], "valid": true } ] }, { "description": "minContains=2 with contains with a decimal value", "schema": { "$schema": "https://json-schema.org/v1", "contains": {"const": 1}, "minContains": 2.0 }, "tests": [ { "description": "one element matches, invalid minContains", "data": [ 1 ], "valid": false }, { "description": "both elements match, valid minContains", "data": [ 1, 1 ], "valid": true } ] }, { "description": "maxContains = minContains", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "const": 1 }, "maxContains": 2, "minContains": 2 }, "tests": [ { "description": "empty data", "data": [], "valid": false }, { "description": "all elements match, invalid minContains", "data": [1], "valid": false }, { "description": "all elements match, invalid maxContains", "data": [1, 1, 1], "valid": false }, { "description": "all elements match, valid maxContains and minContains", "data": [1, 1], "valid": true } ] }, { "description": "maxContains < minContains", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "const": 1 }, "maxContains": 1, "minContains": 3 }, "tests": [ { "description": "empty data", "data": [], "valid": false }, { "description": "invalid minContains", "data": [1], "valid": false }, { "description": "invalid maxContains", "data": [1, 1, 1], "valid": false }, { "description": "invalid maxContains and minContains", "data": [1, 1], "valid": false } ] }, { "description": "minContains = 0", "schema": { "$schema": "https://json-schema.org/v1", "contains": { "const": 1 }, "minContains": 0 }, "tests": [ { "description": "empty data", "data": [], "valid": true }, { "description": "minContains = 0 makes contains always pass", "data": [2], "valid": true } ] }, { "description": "minContains = 0 with maxContains", "schema": { "$schema": "https://json-schema.org/v1", "contains": {"const": 1}, "minContains": 0, "maxContains": 1 }, "tests": [ { "description": "empty data", "data": [ ], "valid": true }, { "description": "not more than maxContains", "data": [ 1 ], "valid": true }, { "description": "too many", "data": [ 1, 1 ], "valid": false } ] } ] optional000755000766000024 015240201330 22357 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1id.json100640000766000024 337715240201330 24014 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "$id inside an enum is not a real identifier", "comment": "the implementation must not be confused by an $id buried in the enum", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "id_in_enum": { "enum": [ { "$id": "https://localhost:1234/v1/id/my_identifier.json", "type": "null" } ] }, "real_id_in_schema": { "$id": "https://localhost:1234/v1/id/my_identifier.json", "type": "string" }, "zzz_id_in_const": { "const": { "$id": "https://localhost:1234/v1/id/my_identifier.json", "type": "null" } } }, "anyOf": [ { "$ref": "#/$defs/id_in_enum" }, { "$ref": "https://localhost:1234/v1/id/my_identifier.json" } ] }, "tests": [ { "description": "exact match to enum, and type matches", "data": { "$id": "https://localhost:1234/v1/id/my_identifier.json", "type": "null" }, "valid": true }, { "description": "match $ref to $id", "data": "a string to match #/$defs/id_in_enum", "valid": true }, { "description": "no match on enum or $ref to $id", "data": 1, "valid": false } ] } ] prefixItems.json100640000766000024 545115240201330 24065 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "a schema given for prefixItems", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ {"type": "integer"}, {"type": "string"} ] }, "tests": [ { "description": "correct types", "data": [ 1, "foo" ], "valid": true }, { "description": "wrong types", "data": [ "foo", 1 ], "valid": false }, { "description": "incomplete array of items", "data": [ 1 ], "valid": true }, { "description": "array with additional items", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array", "data": [ ], "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "1": "valid", "length": 2 }, "valid": true } ] }, { "description": "prefixItems with boolean schemas", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [true, false] }, "tests": [ { "description": "array with one item is valid", "data": [ 1 ], "valid": true }, { "description": "array with two items is invalid", "data": [ 1, "foo" ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "additional items are allowed by default", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [{"type": "integer"}] }, "tests": [ { "description": "only the first item is validated", "data": [1, "foo", false], "valid": true } ] }, { "description": "prefixItems with null instance elements", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "type": "null" } ] }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] uniqueItems.json100640000766000024 3405615240201330 24121 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "uniqueItems validation", "schema": { "$schema": "https://json-schema.org/v1", "uniqueItems": true }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is invalid", "data": [1, 1], "valid": false }, { "description": "non-unique array of more than two integers is invalid", "data": [1, 2, 1], "valid": false }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": false }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of strings is valid", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "non-unique array of strings is invalid", "data": ["foo", "bar", "foo"], "valid": false }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is invalid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": false }, { "description": "property order of array of objects is ignored", "data": [{"foo": "bar", "bar": "foo"}, {"bar": "foo", "foo": "bar"}], "valid": false }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is invalid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": false }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is invalid", "data": [["foo"], ["foo"]], "valid": false }, { "description": "non-unique array of more than two arrays is invalid", "data": [["foo"], ["bar"], ["foo"]], "valid": false }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "[1] and [true] are unique", "data": [[1], [true]], "valid": true }, { "description": "[0] and [false] are unique", "data": [[0], [false]], "valid": true }, { "description": "nested [1] and [true] are unique", "data": [[[1], "foo"], [[true], "foo"]], "valid": true }, { "description": "nested [0] and [false] are unique", "data": [[[0], "foo"], [[false], "foo"]], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1, "{}"], "valid": true }, { "description": "non-unique heterogeneous types are invalid", "data": [{}, [1], true, null, {}, 1], "valid": false }, { "description": "different objects are unique", "data": [{"a": 1, "b": 2}, {"a": 2, "b": 1}], "valid": true }, { "description": "objects are non-unique despite key order", "data": [{"a": 1, "b": 2}, {"b": 2, "a": 1}], "valid": false }, { "description": "{\"a\": false} and {\"a\": 0} are unique", "data": [{"a": false}, {"a": 0}], "valid": true }, { "description": "{\"a\": true} and {\"a\": 1} are unique", "data": [{"a": true}, {"a": 1}], "valid": true } ] }, { "description": "uniqueItems with an array of items", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is not valid", "data": [false, true, "foo", "foo"], "valid": false }, { "description": "non-unique array extended from [true, false] is not valid", "data": [true, false, "foo", "foo"], "valid": false } ] }, { "description": "uniqueItems with an array of items and additionalItems=false", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true, "items": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] }, { "description": "uniqueItems=false validation", "schema": { "$schema": "https://json-schema.org/v1", "uniqueItems": false }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is valid", "data": [1, 1], "valid": true }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": true }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": true }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": true }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is valid", "data": [["foo"], ["foo"]], "valid": true }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1], "valid": true }, { "description": "non-unique heterogeneous types are valid", "data": [{}, [1], true, null, {}, 1], "valid": true } ] }, { "description": "uniqueItems=false with an array of items", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is valid", "data": [false, true, "foo", "foo"], "valid": true }, { "description": "non-unique array extended from [true, false] is valid", "data": [true, false, "foo", "foo"], "valid": true } ] }, { "description": "uniqueItems=false with an array of items and additionalItems=false", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false, "items": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] } ] ref-and-defs.json100644000766000024 215240201330 23716 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}bad000755000766000024 015240201330 20073 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/testsinvalid-schema.json100640000766000024 154015240201330 24006 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/bad[ { "description": "exception handling", "schema": true, "tests": [ { "description": "no exception; expect invalid: want test failure", "data": { "exception": false }, "valid": false }, { "description": "no exception; expect valid: want test pass", "data": { "exception": false }, "valid": true }, { "description": "exception; expect invalid: want test failure (via exception)", "data": { "exception": true }, "valid": false }, { "description": "exception; expect valid: want test failure (via exception)", "data": { "exception": true }, "valid": true } ] } ] nested000755000766000024 015240201330 22002 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotesstring.json100640000766000024 3115240201330 24271 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/nested{ "type": "string" } subSchemas.json100640000766000024 31615240201330 24152 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$schema": "https://json-schema.org/v1", "$defs": { "integer": { "type": "integer" }, "refToInteger": { "$ref": "#/$defs/integer" } } } disallow.json100640000766000024 362015240201330 24235 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "disallow", "schema": { "disallow": "integer" }, "tests": [ { "description": "allowed", "data": "foo", "valid": true }, { "description": "disallowed", "data": 1, "valid": false } ] }, { "description": "multiple disallow", "schema": { "disallow": ["integer", "boolean"] }, "tests": [ { "description": "valid", "data": "foo", "valid": true }, { "description": "mismatch", "data": 1, "valid": false }, { "description": "other mismatch", "data": true, "valid": false } ] }, { "description": "multiple disallow subschema", "schema": { "disallow": ["string", { "type": "object", "properties": { "foo": { "type": "string" } } }] }, "tests": [ { "description": "match", "data": 1, "valid": true }, { "description": "other match", "data": {"foo": 1}, "valid": true }, { "description": "mismatch", "data": "foo", "valid": false }, { "description": "other mismatch", "data": {"foo": "bar"}, "valid": false } ] } ] maxItems.json100640000766000024 130215240201330 24201 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "maxItems validation", "schema": {"maxItems": 2}, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "exact length is valid", "data": [1, 2], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false }, { "description": "ignores non-arrays", "data": "foobar", "valid": true } ] } ] minItems.json100640000766000024 126515240201330 24207 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "minItems validation", "schema": {"minItems": 1}, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "exact length is valid", "data": [1], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false }, { "description": "ignores non-arrays", "data": "", "valid": true } ] } ] required.json100640000766000024 240215240201330 24234 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "required validation", "schema": { "properties": { "foo": {"required" : true}, "bar": {} } }, "tests": [ { "description": "present required property is valid", "data": {"foo": 1}, "valid": true }, { "description": "non-present required property is invalid", "data": {"bar": 1}, "valid": false } ] }, { "description": "required default validation", "schema": { "properties": { "foo": {} } }, "tests": [ { "description": "not required by default", "data": {}, "valid": true } ] }, { "description": "required explicitly false validation", "schema": { "properties": { "foo": {"required": false} } }, "tests": [ { "description": "not required if required is false", "data": {}, "valid": true } ] } ] maxItems.json100640000766000024 130215240201330 24202 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "maxItems validation", "schema": {"maxItems": 2}, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "exact length is valid", "data": [1, 2], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false }, { "description": "ignores non-arrays", "data": "foobar", "valid": true } ] } ] minItems.json100640000766000024 126515240201330 24210 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "minItems validation", "schema": {"minItems": 1}, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "exact length is valid", "data": [1], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false }, { "description": "ignores non-arrays", "data": "", "valid": true } ] } ] required.json100640000766000024 1010415240201330 24253 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "required validation", "schema": { "properties": { "foo": {}, "bar": {} }, "required": ["foo"] }, "tests": [ { "description": "present required property is valid", "data": {"foo": 1}, "valid": true }, { "description": "non-present required property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores boolean", "data": true, "valid": true } ] }, { "description": "required default validation", "schema": { "properties": { "foo": {} } }, "tests": [ { "description": "not required by default", "data": {}, "valid": true } ] }, { "description": "required with escaped characters", "schema": { "required": [ "foo\nbar", "foo\"bar", "foo\\bar", "foo\rbar", "foo\tbar", "foo\fbar" ] }, "tests": [ { "description": "object with all properties present is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with some properties missing is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1" }, "valid": false } ] }, { "description": "required properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "required": ["__proto__", "toString", "constructor"] }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": false }, { "description": "__proto__ present", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString present", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor present", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] contains.json100640000766000024 1001015240201330 24247 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "contains keyword validation", "schema": { "contains": {"minimum": 5} }, "tests": [ { "description": "array with item matching schema (5) is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with item matching schema (6) is valid", "data": [3, 4, 6], "valid": true }, { "description": "array with two items matching schema (5, 6) is valid", "data": [3, 4, 5, 6], "valid": true }, { "description": "array without items matching schema is invalid", "data": [2, 3, 4], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "not array is valid", "data": {}, "valid": true } ] }, { "description": "contains keyword with const keyword", "schema": { "contains": { "const": 5 } }, "tests": [ { "description": "array with item 5 is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with two items 5 is valid", "data": [3, 4, 5, 5], "valid": true }, { "description": "array without item 5 is invalid", "data": [1, 2, 3, 4], "valid": false } ] }, { "description": "contains keyword with boolean schema true", "schema": {"contains": true}, "tests": [ { "description": "any non-empty array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "contains keyword with boolean schema false", "schema": {"contains": false}, "tests": [ { "description": "any non-empty array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "non-arrays are valid", "data": "contains does not apply to strings", "valid": true } ] }, { "description": "items + contains", "schema": { "items": { "multipleOf": 2 }, "contains": { "multipleOf": 3 } }, "tests": [ { "description": "matches items, does not match contains", "data": [ 2, 4, 8 ], "valid": false }, { "description": "does not match items, matches contains", "data": [ 3, 6, 9 ], "valid": false }, { "description": "matches both items and contains", "data": [ 6, 12 ], "valid": true }, { "description": "matches neither items nor contains", "data": [ 1, 5 ], "valid": false } ] }, { "description": "contains with null instance elements", "schema": { "contains": { "type": "null" } }, "tests": [ { "description": "allows null items", "data": [ null ], "valid": true } ] } ] maxItems.json100640000766000024 215515240201330 24213 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "maxItems validation", "schema": {"maxItems": 2}, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "exact length is valid", "data": [1, 2], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false }, { "description": "ignores non-arrays", "data": "foobar", "valid": true } ] }, { "description": "maxItems validation with a decimal", "schema": {"maxItems": 2.0}, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false } ] } ] minItems.json100640000766000024 213415240201330 24206 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "minItems validation", "schema": {"minItems": 1}, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "exact length is valid", "data": [1], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false }, { "description": "ignores non-arrays", "data": "", "valid": true } ] }, { "description": "minItems validation with a decimal", "schema": {"minItems": 1.0}, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false } ] } ] required.json100640000766000024 1065715240201330 24272 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "required validation", "schema": { "properties": { "foo": {}, "bar": {} }, "required": ["foo"] }, "tests": [ { "description": "present required property is valid", "data": {"foo": 1}, "valid": true }, { "description": "non-present required property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores boolean", "data": true, "valid": true } ] }, { "description": "required default validation", "schema": { "properties": { "foo": {} } }, "tests": [ { "description": "not required by default", "data": {}, "valid": true } ] }, { "description": "required with empty array", "schema": { "properties": { "foo": {} }, "required": [] }, "tests": [ { "description": "property not required", "data": {}, "valid": true } ] }, { "description": "required with escaped characters", "schema": { "required": [ "foo\nbar", "foo\"bar", "foo\\bar", "foo\rbar", "foo\tbar", "foo\fbar" ] }, "tests": [ { "description": "object with all properties present is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with some properties missing is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1" }, "valid": false } ] }, { "description": "required properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "required": ["__proto__", "toString", "constructor"] }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": false }, { "description": "__proto__ present", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString present", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor present", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] contains.json100640000766000024 1103115240201330 24254 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "contains keyword validation", "schema": { "contains": {"minimum": 5} }, "tests": [ { "description": "array with item matching schema (5) is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with item matching schema (6) is valid", "data": [3, 4, 6], "valid": true }, { "description": "array with two items matching schema (5, 6) is valid", "data": [3, 4, 5, 6], "valid": true }, { "description": "array without items matching schema is invalid", "data": [2, 3, 4], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "not array is valid", "data": {}, "valid": true } ] }, { "description": "contains keyword with const keyword", "schema": { "contains": { "const": 5 } }, "tests": [ { "description": "array with item 5 is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with two items 5 is valid", "data": [3, 4, 5, 5], "valid": true }, { "description": "array without item 5 is invalid", "data": [1, 2, 3, 4], "valid": false } ] }, { "description": "contains keyword with boolean schema true", "schema": {"contains": true}, "tests": [ { "description": "any non-empty array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "contains keyword with boolean schema false", "schema": {"contains": false}, "tests": [ { "description": "any non-empty array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "non-arrays are valid", "data": "contains does not apply to strings", "valid": true } ] }, { "description": "items + contains", "schema": { "items": { "multipleOf": 2 }, "contains": { "multipleOf": 3 } }, "tests": [ { "description": "matches items, does not match contains", "data": [ 2, 4, 8 ], "valid": false }, { "description": "does not match items, matches contains", "data": [ 3, 6, 9 ], "valid": false }, { "description": "matches both items and contains", "data": [ 6, 12 ], "valid": true }, { "description": "matches neither items nor contains", "data": [ 1, 5 ], "valid": false } ] }, { "description": "contains with false if subschema", "schema": { "contains": { "if": false, "else": true } }, "tests": [ { "description": "any non-empty array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "contains with null instance elements", "schema": { "contains": { "type": "null" } }, "tests": [ { "description": "allows null items", "data": [ null ], "valid": true } ] } ] maxItems.json100640000766000024 215515240201330 24214 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "maxItems validation", "schema": {"maxItems": 2}, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "exact length is valid", "data": [1, 2], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false }, { "description": "ignores non-arrays", "data": "foobar", "valid": true } ] }, { "description": "maxItems validation with a decimal", "schema": {"maxItems": 2.0}, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false } ] } ] minItems.json100640000766000024 213415240201330 24207 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "minItems validation", "schema": {"minItems": 1}, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "exact length is valid", "data": [1], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false }, { "description": "ignores non-arrays", "data": "", "valid": true } ] }, { "description": "minItems validation with a decimal", "schema": {"minItems": 1.0}, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false } ] } ] required.json100640000766000024 1065715240201330 24273 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "required validation", "schema": { "properties": { "foo": {}, "bar": {} }, "required": ["foo"] }, "tests": [ { "description": "present required property is valid", "data": {"foo": 1}, "valid": true }, { "description": "non-present required property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores boolean", "data": true, "valid": true } ] }, { "description": "required default validation", "schema": { "properties": { "foo": {} } }, "tests": [ { "description": "not required by default", "data": {}, "valid": true } ] }, { "description": "required with empty array", "schema": { "properties": { "foo": {} }, "required": [] }, "tests": [ { "description": "property not required", "data": {}, "valid": true } ] }, { "description": "required with escaped characters", "schema": { "required": [ "foo\nbar", "foo\"bar", "foo\\bar", "foo\rbar", "foo\tbar", "foo\fbar" ] }, "tests": [ { "description": "object with all properties present is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with some properties missing is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1" }, "valid": false } ] }, { "description": "required properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "required": ["__proto__", "toString", "constructor"] }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": false }, { "description": "__proto__ present", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString present", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor present", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] email.json100640000766000024 1151615240201330 24164 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of e-mail addresses", "schema": { "$schema": "https://json-schema.org/v1", "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "an invalid e-mail address", "data": "2962", "valid": false }, { "description": "tilde in local part is valid", "data": "te~st@example.com", "valid": true }, { "description": "tilde before local part is valid", "data": "~test@example.com", "valid": true }, { "description": "tilde after local part is valid", "data": "test~@example.com", "valid": true }, { "description": "a quoted string with a space in the local part is valid", "data": "\"joe bloggs\"@example.com", "valid": true }, { "description": "a quoted string with a double dot in the local part is valid", "data": "\"joe..bloggs\"@example.com", "valid": true }, { "description": "a quoted string with a @ in the local part is valid", "data": "\"joe@bloggs\"@example.com", "valid": true }, { "description": "an IPv4-address-literal after the @ is valid", "data": "joe.bloggs@[127.0.0.1]", "valid": true }, { "description": "an IPv6-address-literal after the @ is valid", "data": "joe.bloggs@[IPv6:::1]", "valid": true }, { "description": "dot before local part is not valid", "data": ".test@example.com", "valid": false }, { "description": "dot after local part is not valid", "data": "test.@example.com", "valid": false }, { "description": "two separated dots inside local part are valid", "data": "te.s.t@example.com", "valid": true }, { "description": "two subsequent dots inside local part are not valid", "data": "te..st@example.com", "valid": false }, { "description": "an invalid domain", "data": "joe.bloggs@invalid=domain.com", "valid": false }, { "description": "an invalid IPv4-address-literal", "data": "joe.bloggs@[127.0.0.300]", "valid": false }, { "description": "two email addresses is not valid", "data": "user1@oceania.org, user2@oceania.org", "valid": false }, { "description": "full \"From\" header is invalid", "data": "\"Winston Smith\" (Records Department)", "valid": false }, { "description": "local part is required", "data": "@example.com", "valid": false }, { "description": "domain is required", "data": "joe.bloggs@", "valid": false }, { "description": "unquoted space in local part is invalid", "data": "joe bloggs@example.com", "valid": false } ] } ] regex.json100640000766000024 272715240201330 24173 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of regular expressions", "schema": { "$schema": "https://json-schema.org/v1", "format": "regex" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid regular expression", "data": "([abc])+\\s+$", "valid": true }, { "description": "a regular expression with unclosed parens is invalid", "data": "^(abc]", "valid": false } ] } ] if-then-else.json100640000766000024 1634415240201330 24071 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "ignore if without then or else", "schema": { "$schema": "https://json-schema.org/v1", "if": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone if", "data": 0, "valid": true }, { "description": "valid when invalid against lone if", "data": "hello", "valid": true } ] }, { "description": "ignore then without if", "schema": { "$schema": "https://json-schema.org/v1", "then": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone then", "data": 0, "valid": true }, { "description": "valid when invalid against lone then", "data": "hello", "valid": true } ] }, { "description": "ignore else without if", "schema": { "$schema": "https://json-schema.org/v1", "else": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone else", "data": 0, "valid": true }, { "description": "valid when invalid against lone else", "data": "hello", "valid": true } ] }, { "description": "if and then without else", "schema": { "$schema": "https://json-schema.org/v1", "if": { "exclusiveMaximum": 0 }, "then": { "minimum": -10 } }, "tests": [ { "description": "valid through then", "data": -1, "valid": true }, { "description": "invalid through then", "data": -100, "valid": false }, { "description": "valid when if test fails", "data": 3, "valid": true } ] }, { "description": "if and else without then", "schema": { "$schema": "https://json-schema.org/v1", "if": { "exclusiveMaximum": 0 }, "else": { "multipleOf": 2 } }, "tests": [ { "description": "valid when if test passes", "data": -1, "valid": true }, { "description": "valid through else", "data": 4, "valid": true }, { "description": "invalid through else", "data": 3, "valid": false } ] }, { "description": "validate against correct branch, then vs else", "schema": { "$schema": "https://json-schema.org/v1", "if": { "exclusiveMaximum": 0 }, "then": { "minimum": -10 }, "else": { "multipleOf": 2 } }, "tests": [ { "description": "valid through then", "data": -1, "valid": true }, { "description": "invalid through then", "data": -100, "valid": false }, { "description": "valid through else", "data": 4, "valid": true }, { "description": "invalid through else", "data": 3, "valid": false } ] }, { "description": "non-interference across combined schemas", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "if": { "exclusiveMaximum": 0 } }, { "then": { "minimum": -10 } }, { "else": { "multipleOf": 2 } } ] }, "tests": [ { "description": "valid, but would have been invalid through then", "data": -100, "valid": true }, { "description": "valid, but would have been invalid through else", "data": 3, "valid": true } ] }, { "description": "if with boolean schema true", "schema": { "$schema": "https://json-schema.org/v1", "if": true, "then": { "const": "then" }, "else": { "const": "else" } }, "tests": [ { "description": "boolean schema true in if always chooses the then path (valid)", "data": "then", "valid": true }, { "description": "boolean schema true in if always chooses the then path (invalid)", "data": "else", "valid": false } ] }, { "description": "if with boolean schema false", "schema": { "$schema": "https://json-schema.org/v1", "if": false, "then": { "const": "then" }, "else": { "const": "else" } }, "tests": [ { "description": "boolean schema false in if always chooses the else path (invalid)", "data": "then", "valid": false }, { "description": "boolean schema false in if always chooses the else path (valid)", "data": "else", "valid": true } ] }, { "description": "if appears at the end when serialized (keyword processing sequence)", "schema": { "$schema": "https://json-schema.org/v1", "then": { "const": "yes" }, "else": { "const": "other" }, "if": { "maxLength": 4 } }, "tests": [ { "description": "yes redirects to then and passes", "data": "yes", "valid": true }, { "description": "other redirects to else and passes", "data": "other", "valid": true }, { "description": "no redirects to then and fails", "data": "no", "valid": false }, { "description": "invalid redirects to else and fails", "data": "invalid", "valid": false } ] } ] draft2019-09000755000766000024 015240201330 22046 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/testsid.json100644000766000024 215240201330 23405 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[]draft2020-12000755000766000024 015240201330 22030 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/testsid.json100644000766000024 215240201330 23367 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[]simple-booleans000755000766000024 015240201330 22436 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/testsbar.json100640000766000024 277615240201330 24245 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/simple-booleans[ { "description": "empty schema", "schema": {}, "tests": [ { "description": "integer", "data": 2, "valid": true }, { "description": "boolean false", "data": "false", "valid": true }, { "description": "boolean true", "data": "true", "valid": true } ] }, { "description": "false schema", "schema": false, "tests": [ { "description": "integer", "data": 2, "valid": false }, { "description": "boolean false", "data": "false", "valid": false }, { "description": "boolean true", "data": "true", "valid": false } ] }, { "description": "true schema", "schema": true, "tests": [ { "description": "integer", "data": 2, "valid": true }, { "description": "boolean false", "data": "false", "valid": true }, { "description": "boolean true", "data": "true", "valid": true } ] } ] foo.json100640000766000024 277615240201330 24264 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/simple-booleans[ { "description": "empty schema", "schema": {}, "tests": [ { "description": "integer", "data": 2, "valid": true }, { "description": "boolean false", "data": "false", "valid": true }, { "description": "boolean true", "data": "true", "valid": true } ] }, { "description": "false schema", "schema": false, "tests": [ { "description": "integer", "data": 2, "valid": false }, { "description": "boolean false", "data": "false", "valid": false }, { "description": "boolean true", "data": "true", "valid": false } ] }, { "description": "true schema", "schema": true, "tests": [ { "description": "integer", "data": 2, "valid": true }, { "description": "boolean false", "data": "false", "valid": true }, { "description": "boolean true", "data": "true", "valid": true } ] } ] changes_has_content.t100644000766000024 210115240201330 24327 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/xt/releaseuse Test::More tests => 2; note 'Checking Changes'; my $changes_file = 'Changes'; my $newver = '1.038'; my $trial_token = '-TRIAL'; my $encoding = 'UTF-8'; SKIP: { ok(-e $changes_file, "$changes_file file exists") or skip 'Changes is missing', 1; ok(_get_changes($newver), "$changes_file has content for $newver"); } done_testing; sub _get_changes { my $newver = shift; # parse changelog to find commit message open(my $fh, '<', $changes_file) or die "cannot open $changes_file: $!"; my $changelog = join('', <$fh>); if ($encoding) { require Encode; $changelog = Encode::decode($encoding, $changelog, Encode::FB_CROAK()); } close $fh; my @content = grep { /^$newver(?:$trial_token)?(?:\s+|$)/ ... /^\S/ } # from newver to un-indented split /\n/, $changelog; shift @content; # drop the version line # drop unindented last line and trailing blank lines pop @content while ( @content && $content[-1] =~ /^(?:\S|\s*$)/ ); # return number of non-blank lines return scalar @content; } not.json100640000766000024 2034415240201330 23720 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "not", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "not": {"type": "integer"} }, "tests": [ { "description": "allowed", "data": "foo", "valid": true }, { "description": "disallowed", "data": 1, "valid": false } ] }, { "description": "not multiple types", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "not": {"type": ["integer", "boolean"]} }, "tests": [ { "description": "valid", "data": "foo", "valid": true }, { "description": "mismatch", "data": 1, "valid": false }, { "description": "other mismatch", "data": true, "valid": false } ] }, { "description": "not more complex schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "not": { "type": "object", "properties": { "foo": { "type": "string" } } } }, "tests": [ { "description": "match", "data": 1, "valid": true }, { "description": "other match", "data": {"foo": 1}, "valid": true }, { "description": "mismatch", "data": {"foo": "bar"}, "valid": false } ] }, { "description": "forbidden property", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": { "not": {} } } }, "tests": [ { "description": "property present", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "property absent", "data": {"bar": 1, "baz": 2}, "valid": true } ] }, { "description": "forbid everything with empty schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "not": {} }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "forbid everything with boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "not": true }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "allow everything with boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "not": false }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "double negation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "not": { "not": {} } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "collect annotations inside a 'not', even if collection is disabled", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "not": { "$comment": "this subschema must still produce annotations internally, even though the 'not' will ultimately discard them", "anyOf": [ true, { "properties": { "foo": true } } ], "unevaluatedProperties": false } }, "tests": [ { "description": "unevaluated property", "data": { "bar": 1 }, "valid": true }, { "description": "annotations are still collected inside a 'not'", "data": { "foo": 1 }, "valid": false } ] } ] ref.json100640000766000024 10441315240201330 23714 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "root pointer ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {"$ref": "#"} }, "additionalProperties": false }, "tests": [ { "description": "match", "data": {"foo": false}, "valid": true }, { "description": "recursive match", "data": {"foo": {"foo": false}}, "valid": true }, { "description": "mismatch", "data": {"bar": false}, "valid": false }, { "description": "recursive mismatch", "data": {"foo": {"bar": false}}, "valid": false } ] }, { "description": "relative pointer ref to object", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {"type": "integer"}, "bar": {"$ref": "#/properties/foo"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "relative pointer ref to array", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ {"type": "integer"}, {"$ref": "#/items/0"} ] }, "tests": [ { "description": "match array", "data": [1, 2], "valid": true }, { "description": "mismatch array", "data": [1, "foo"], "valid": false } ] }, { "description": "escaped pointer ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "tilde~field": {"type": "integer"}, "slash/field": {"type": "integer"}, "percent%field": {"type": "integer"} }, "properties": { "tilde": {"$ref": "#/$defs/tilde~0field"}, "slash": {"$ref": "#/$defs/slash~1field"}, "percent": {"$ref": "#/$defs/percent%25field"} } }, "tests": [ { "description": "slash invalid", "data": {"slash": "aoeu"}, "valid": false }, { "description": "tilde invalid", "data": {"tilde": "aoeu"}, "valid": false }, { "description": "percent invalid", "data": {"percent": "aoeu"}, "valid": false }, { "description": "slash valid", "data": {"slash": 123}, "valid": true }, { "description": "tilde valid", "data": {"tilde": 123}, "valid": true }, { "description": "percent valid", "data": {"percent": 123}, "valid": true } ] }, { "description": "nested refs", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "a": {"type": "integer"}, "b": {"$ref": "#/$defs/a"}, "c": {"$ref": "#/$defs/b"} }, "$ref": "#/$defs/c" }, "tests": [ { "description": "nested ref valid", "data": 5, "valid": true }, { "description": "nested ref invalid", "data": "a", "valid": false } ] }, { "description": "ref applies alongside sibling keywords", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "reffed": { "type": "array" } }, "properties": { "foo": { "$ref": "#/$defs/reffed", "maxItems": 2 } } }, "tests": [ { "description": "ref valid, maxItems valid", "data": { "foo": [] }, "valid": true }, { "description": "ref valid, maxItems invalid", "data": { "foo": [1, 2, 3] }, "valid": false }, { "description": "ref invalid", "data": { "foo": "string" }, "valid": false } ] }, { "description": "remote ref, containing refs itself", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "https://json-schema.org/draft/2019-09/schema" }, "tests": [ { "description": "remote ref valid", "data": {"minLength": 1}, "valid": true }, { "description": "remote ref invalid", "data": {"minLength": -1}, "valid": false } ] }, { "description": "property named $ref that is not a reference", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "$ref": {"type": "string"} } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "property named $ref, containing an actual $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "$ref": {"$ref": "#/$defs/is-string"} }, "$defs": { "is-string": { "type": "string" } } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "$ref to boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "#/$defs/bool", "$defs": { "bool": true } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "$ref to boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "#/$defs/bool", "$defs": { "bool": false } }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "Recursive references between schemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/tree", "description": "tree of nodes", "type": "object", "properties": { "meta": {"type": "string"}, "nodes": { "type": "array", "items": {"$ref": "node"} } }, "required": ["meta", "nodes"], "$defs": { "node": { "$id": "http://localhost:1234/draft2019-09/node", "description": "node", "type": "object", "properties": { "value": {"type": "number"}, "subtree": {"$ref": "tree"} }, "required": ["value"] } } }, "tests": [ { "description": "valid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": 1.1}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": true }, { "description": "invalid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": "string is invalid"}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": false } ] }, { "description": "refs with quote", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo\"bar": {"$ref": "#/$defs/foo%22bar"} }, "$defs": { "foo\"bar": {"type": "number"} } }, "tests": [ { "description": "object with numbers is valid", "data": { "foo\"bar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\"bar": "1" }, "valid": false } ] }, { "description": "ref creates new scope when adjacent to keywords", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "A": { "unevaluatedProperties": false } }, "properties": { "prop1": { "type": "string" } }, "$ref": "#/$defs/A" }, "tests": [ { "description": "referenced subschema doesn't see annotations from properties", "data": { "prop1": "match" }, "valid": false } ] }, { "description": "naive replacement of $ref with its destination is not correct", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "a_string": { "type": "string" } }, "enum": [ { "$ref": "#/$defs/a_string" } ] }, "tests": [ { "description": "do not evaluate the $ref inside the enum, matching any string", "data": "this is a string", "valid": false }, { "description": "do not evaluate the $ref inside the enum, definition exact match", "data": { "type": "string" }, "valid": false }, { "description": "match the enum exactly", "data": { "$ref": "#/$defs/a_string" }, "valid": true } ] }, { "description": "refs with relative uris and defs", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://example.com/schema-relative-uri-defs1.json", "properties": { "foo": { "$id": "schema-relative-uri-defs2.json", "$defs": { "inner": { "properties": { "bar": { "type": "string" } } } }, "$ref": "#/$defs/inner" } }, "$ref": "schema-relative-uri-defs2.json" }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "relative refs with absolute uris and defs", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://example.com/schema-refs-absolute-uris-defs1.json", "properties": { "foo": { "$id": "http://example.com/schema-refs-absolute-uris-defs2.json", "$defs": { "inner": { "properties": { "bar": { "type": "string" } } } }, "$ref": "#/$defs/inner" } }, "$ref": "schema-refs-absolute-uris-defs2.json" }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "$id must be resolved against nearest parent, not just immediate parent", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://example.com/a.json", "$defs": { "x": { "$id": "http://example.com/b/c.json", "not": { "$defs": { "y": { "$id": "d.json", "type": "number" } } } } }, "allOf": [ { "$ref": "http://example.com/b/d.json" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "order of evaluation: $id and $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$comment": "$id must be evaluated before $ref to get the proper $ref destination", "$id": "https://example.com/draft2019-09/ref-and-id1/base.json", "$ref": "int.json", "$defs": { "bigint": { "$comment": "canonical uri: https://example.com/draft2019-09/ref-and-id1/int.json", "$id": "int.json", "maximum": 10 }, "smallint": { "$comment": "canonical uri: https://example.com/draft2019-09/ref-and-id1-int.json", "$id": "/draft2019-09/ref-and-id1-int.json", "maximum": 2 } } }, "tests": [ { "description": "data is valid against first definition", "data": 5, "valid": true }, { "description": "data is invalid against first definition", "data": 50, "valid": false } ] }, { "description": "order of evaluation: $id and $anchor and $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$comment": "$id must be evaluated before $ref to get the proper $ref destination", "$id": "https://example.com/draft2019-09/ref-and-id2/base.json", "$ref": "#bigint", "$defs": { "bigint": { "$comment": "canonical uri: https://example.com/draft2019-09/ref-and-id2/base.json#/$defs/bigint; another valid uri for this location: https://example.com/ref-and-id2/base.json#bigint", "$anchor": "bigint", "maximum": 10 }, "smallint": { "$comment": "canonical uri: https://example.com/draft2019-09/ref-and-id2#/$defs/smallint; another valid uri for this location: https://example.com/ref-and-id2/#bigint", "$id": "/draft2019-09/ref-and-id2/", "$anchor": "bigint", "maximum": 2 } } }, "tests": [ { "description": "data is valid against first definition", "data": 5, "valid": true }, { "description": "data is invalid against first definition", "data": 50, "valid": false } ] }, { "description": "order of evaluation: $id and $ref on nested schema", "schema": { "$comment": "$id must be evaluated before $ref to get the proper $ref destination", "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://example.com/draft2019-09/ref-and-id3/base.json", "$ref": "nested/foo.json", "$defs": { "foo": { "$comment": "canonical uri: https://example.com/draft2019-09/ref-and-id3/nested/foo.json", "$id": "nested/foo.json", "$ref": "./bar.json" }, "bar": { "$comment": "canonical uri: https://example.com/draft2019-09/ref-and-id3/nested/bar.json", "$id": "nested/bar.json", "type": "number" } } }, "tests": [ { "description": "data is valid against nested sibling", "data": 5, "valid": true }, { "description": "data is invalid against nested sibling", "data": "a", "valid": false } ] }, { "description": "simple URN base URI with $ref via the URN", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$comment": "URIs do not have to have HTTP(s) schemes", "$id": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed", "minimum": 30, "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed"} } }, "tests": [ { "description": "valid under the URN IDed schema", "data": {"foo": 37}, "valid": true }, { "description": "invalid under the URN IDed schema", "data": {"foo": 12}, "valid": false } ] }, { "description": "simple URN base URI with JSON pointer", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$comment": "URIs do not have to have HTTP(s) schemes", "$id": "urn:uuid:deadbeef-1234-00ff-ff00-4321feebdaed", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with NSS", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$comment": "RFC 8141 §2.2", "$id": "urn:example:1/406/47452/2", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with r-component", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$comment": "RFC 8141 §2.3.1", "$id": "urn:example:foo-bar-baz-qux?+CCResolve:cc=uk", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with q-component", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$comment": "RFC 8141 §2.3.2", "$id": "urn:example:weather?=op=map&lat=39.56&lon=-104.85&datetime=1969-07-21T02:56:15Z", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and JSON pointer ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and anchor ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed#something"} }, "$defs": { "bar": { "$anchor": "something", "type": "string" } } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN ref with nested pointer ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", "$defs": { "foo": { "$id": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", "$defs": {"bar": {"type": "string"}}, "$ref": "#/$defs/bar" } } }, "tests": [ { "description": "a string is valid", "data": "bar", "valid": true }, { "description": "a non-string is invalid", "data": 12, "valid": false } ] }, { "description": "ref to if", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://example.com/ref/if", "if": { "$id": "http://example.com/ref/if", "type": "integer" } }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref to then", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://example.com/ref/then", "then": { "$id": "http://example.com/ref/then", "type": "integer" } }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref to else", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://example.com/ref/else", "else": { "$id": "http://example.com/ref/else", "type": "integer" } }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref with absolute-path-reference", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://example.com/ref/absref.json", "$defs": { "a": { "$id": "http://example.com/ref/absref/foobar.json", "type": "number" }, "b": { "$id": "http://example.com/absref/foobar.json", "type": "string" } }, "$ref": "/absref/foobar.json" }, "tests": [ { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "an integer is invalid", "data": 12, "valid": false } ] }, { "description": "$id with file URI still resolves pointers - *nix", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "file:///folder/file.json", "$defs": { "foo": { "type": "number" } }, "$ref": "#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "$id with file URI still resolves pointers - windows", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "file:///c:/folder/file.json", "$defs": { "foo": { "type": "number" } }, "$ref": "#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "empty tokens in $ref json-pointer", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "": { "$defs": { "": { "type": "number" } } } }, "allOf": [ { "$ref": "#/$defs//$defs/" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "$ref with $recursiveAnchor", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://example.com/schemas/unevaluated-items-are-disallowed", "$ref": "/schemas/unevaluated-items-are-allowed", "$recursiveAnchor": true, "unevaluatedItems": false, "$defs": { "/schemas/unevaluated-items-are-allowed": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "/schemas/unevaluated-items-are-allowed", "$recursiveAnchor": true, "type": "array", "items": [ { "type": "string" }, { "$ref": "#" } ] } } }, "tests": [ { "description": "extra items allowed for inner arrays", "data" : ["foo",["bar" , [] , 8]], "valid": true }, { "description": "extra items disallowed for root", "data" : ["foo",["bar" , [] , 8], 8], "valid": false } ] } ] not.json100640000766000024 2034415240201330 23702 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "not", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "not": {"type": "integer"} }, "tests": [ { "description": "allowed", "data": "foo", "valid": true }, { "description": "disallowed", "data": 1, "valid": false } ] }, { "description": "not multiple types", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "not": {"type": ["integer", "boolean"]} }, "tests": [ { "description": "valid", "data": "foo", "valid": true }, { "description": "mismatch", "data": 1, "valid": false }, { "description": "other mismatch", "data": true, "valid": false } ] }, { "description": "not more complex schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "not": { "type": "object", "properties": { "foo": { "type": "string" } } } }, "tests": [ { "description": "match", "data": 1, "valid": true }, { "description": "other match", "data": {"foo": 1}, "valid": true }, { "description": "mismatch", "data": {"foo": "bar"}, "valid": false } ] }, { "description": "forbidden property", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "not": {} } } }, "tests": [ { "description": "property present", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "property absent", "data": {"bar": 1, "baz": 2}, "valid": true } ] }, { "description": "forbid everything with empty schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "not": {} }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "forbid everything with boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "not": true }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "allow everything with boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "not": false }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "double negation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "not": { "not": {} } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "collect annotations inside a 'not', even if collection is disabled", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "not": { "$comment": "this subschema must still produce annotations internally, even though the 'not' will ultimately discard them", "anyOf": [ true, { "properties": { "foo": true } } ], "unevaluatedProperties": false } }, "tests": [ { "description": "unevaluated property", "data": { "bar": 1 }, "valid": true }, { "description": "annotations are still collected inside a 'not'", "data": { "foo": 1 }, "valid": false } ] } ] ref.json100640000766000024 10141615240201330 23676 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "root pointer ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {"$ref": "#"} }, "additionalProperties": false }, "tests": [ { "description": "match", "data": {"foo": false}, "valid": true }, { "description": "recursive match", "data": {"foo": {"foo": false}}, "valid": true }, { "description": "mismatch", "data": {"bar": false}, "valid": false }, { "description": "recursive mismatch", "data": {"foo": {"bar": false}}, "valid": false } ] }, { "description": "relative pointer ref to object", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {"type": "integer"}, "bar": {"$ref": "#/properties/foo"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "relative pointer ref to array", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ {"type": "integer"}, {"$ref": "#/prefixItems/0"} ] }, "tests": [ { "description": "match array", "data": [1, 2], "valid": true }, { "description": "mismatch array", "data": [1, "foo"], "valid": false } ] }, { "description": "escaped pointer ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "tilde~field": {"type": "integer"}, "slash/field": {"type": "integer"}, "percent%field": {"type": "integer"} }, "properties": { "tilde": {"$ref": "#/$defs/tilde~0field"}, "slash": {"$ref": "#/$defs/slash~1field"}, "percent": {"$ref": "#/$defs/percent%25field"} } }, "tests": [ { "description": "slash invalid", "data": {"slash": "aoeu"}, "valid": false }, { "description": "tilde invalid", "data": {"tilde": "aoeu"}, "valid": false }, { "description": "percent invalid", "data": {"percent": "aoeu"}, "valid": false }, { "description": "slash valid", "data": {"slash": 123}, "valid": true }, { "description": "tilde valid", "data": {"tilde": 123}, "valid": true }, { "description": "percent valid", "data": {"percent": 123}, "valid": true } ] }, { "description": "nested refs", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "a": {"type": "integer"}, "b": {"$ref": "#/$defs/a"}, "c": {"$ref": "#/$defs/b"} }, "$ref": "#/$defs/c" }, "tests": [ { "description": "nested ref valid", "data": 5, "valid": true }, { "description": "nested ref invalid", "data": "a", "valid": false } ] }, { "description": "ref applies alongside sibling keywords", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "reffed": { "type": "array" } }, "properties": { "foo": { "$ref": "#/$defs/reffed", "maxItems": 2 } } }, "tests": [ { "description": "ref valid, maxItems valid", "data": { "foo": [] }, "valid": true }, { "description": "ref valid, maxItems invalid", "data": { "foo": [1, 2, 3] }, "valid": false }, { "description": "ref invalid", "data": { "foo": "string" }, "valid": false } ] }, { "description": "remote ref, containing refs itself", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://json-schema.org/draft/2020-12/schema" }, "tests": [ { "description": "remote ref valid", "data": {"minLength": 1}, "valid": true }, { "description": "remote ref invalid", "data": {"minLength": -1}, "valid": false } ] }, { "description": "property named $ref that is not a reference", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "$ref": {"type": "string"} } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "property named $ref, containing an actual $ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "$ref": {"$ref": "#/$defs/is-string"} }, "$defs": { "is-string": { "type": "string" } } }, "tests": [ { "description": "property named $ref valid", "data": {"$ref": "a"}, "valid": true }, { "description": "property named $ref invalid", "data": {"$ref": 2}, "valid": false } ] }, { "description": "$ref to boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "#/$defs/bool", "$defs": { "bool": true } }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "$ref to boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "#/$defs/bool", "$defs": { "bool": false } }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "Recursive references between schemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/tree", "description": "tree of nodes", "type": "object", "properties": { "meta": {"type": "string"}, "nodes": { "type": "array", "items": {"$ref": "node"} } }, "required": ["meta", "nodes"], "$defs": { "node": { "$id": "http://localhost:1234/draft2020-12/node", "description": "node", "type": "object", "properties": { "value": {"type": "number"}, "subtree": {"$ref": "tree"} }, "required": ["value"] } } }, "tests": [ { "description": "valid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": 1.1}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": true }, { "description": "invalid tree", "data": { "meta": "root", "nodes": [ { "value": 1, "subtree": { "meta": "child", "nodes": [ {"value": "string is invalid"}, {"value": 1.2} ] } }, { "value": 2, "subtree": { "meta": "child", "nodes": [ {"value": 2.1}, {"value": 2.2} ] } } ] }, "valid": false } ] }, { "description": "refs with quote", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo\"bar": {"$ref": "#/$defs/foo%22bar"} }, "$defs": { "foo\"bar": {"type": "number"} } }, "tests": [ { "description": "object with numbers is valid", "data": { "foo\"bar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\"bar": "1" }, "valid": false } ] }, { "description": "ref creates new scope when adjacent to keywords", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "A": { "unevaluatedProperties": false } }, "properties": { "prop1": { "type": "string" } }, "$ref": "#/$defs/A" }, "tests": [ { "description": "referenced subschema doesn't see annotations from properties", "data": { "prop1": "match" }, "valid": false } ] }, { "description": "naive replacement of $ref with its destination is not correct", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "a_string": { "type": "string" } }, "enum": [ { "$ref": "#/$defs/a_string" } ] }, "tests": [ { "description": "do not evaluate the $ref inside the enum, matching any string", "data": "this is a string", "valid": false }, { "description": "do not evaluate the $ref inside the enum, definition exact match", "data": { "type": "string" }, "valid": false }, { "description": "match the enum exactly", "data": { "$ref": "#/$defs/a_string" }, "valid": true } ] }, { "description": "refs with relative uris and defs", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://example.com/schema-relative-uri-defs1.json", "properties": { "foo": { "$id": "schema-relative-uri-defs2.json", "$defs": { "inner": { "properties": { "bar": { "type": "string" } } } }, "$ref": "#/$defs/inner" } }, "$ref": "schema-relative-uri-defs2.json" }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "relative refs with absolute uris and defs", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://example.com/schema-refs-absolute-uris-defs1.json", "properties": { "foo": { "$id": "http://example.com/schema-refs-absolute-uris-defs2.json", "$defs": { "inner": { "properties": { "bar": { "type": "string" } } } }, "$ref": "#/$defs/inner" } }, "$ref": "schema-refs-absolute-uris-defs2.json" }, "tests": [ { "description": "invalid on inner field", "data": { "foo": { "bar": 1 }, "bar": "a" }, "valid": false }, { "description": "invalid on outer field", "data": { "foo": { "bar": "a" }, "bar": 1 }, "valid": false }, { "description": "valid on both fields", "data": { "foo": { "bar": "a" }, "bar": "a" }, "valid": true } ] }, { "description": "$id must be resolved against nearest parent, not just immediate parent", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://example.com/a.json", "$defs": { "x": { "$id": "http://example.com/b/c.json", "not": { "$defs": { "y": { "$id": "d.json", "type": "number" } } } } }, "allOf": [ { "$ref": "http://example.com/b/d.json" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "order of evaluation: $id and $ref", "schema": { "$comment": "$id must be evaluated before $ref to get the proper $ref destination", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/draft2020-12/ref-and-id1/base.json", "$ref": "int.json", "$defs": { "bigint": { "$comment": "canonical uri: https://example.com/ref-and-id1/int.json", "$id": "int.json", "maximum": 10 }, "smallint": { "$comment": "canonical uri: https://example.com/ref-and-id1-int.json", "$id": "/draft2020-12/ref-and-id1-int.json", "maximum": 2 } } }, "tests": [ { "description": "data is valid against first definition", "data": 5, "valid": true }, { "description": "data is invalid against first definition", "data": 50, "valid": false } ] }, { "description": "order of evaluation: $id and $anchor and $ref", "schema": { "$comment": "$id must be evaluated before $ref to get the proper $ref destination", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/draft2020-12/ref-and-id2/base.json", "$ref": "#bigint", "$defs": { "bigint": { "$comment": "canonical uri: /ref-and-id2/base.json#/$defs/bigint; another valid uri for this location: /ref-and-id2/base.json#bigint", "$anchor": "bigint", "maximum": 10 }, "smallint": { "$comment": "canonical uri: https://example.com/ref-and-id2#/$defs/smallint; another valid uri for this location: https://example.com/ref-and-id2/#bigint", "$id": "https://example.com/draft2020-12/ref-and-id2/", "$anchor": "bigint", "maximum": 2 } } }, "tests": [ { "description": "data is valid against first definition", "data": 5, "valid": true }, { "description": "data is invalid against first definition", "data": 50, "valid": false } ] }, { "description": "order of evaluation: $id and $ref on nested schema", "schema": { "$comment": "$id must be evaluated before $ref to get the proper $ref destination", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/draft2020-12/ref-and-id3/base.json", "$ref": "nested/foo.json", "$defs": { "foo": { "$comment": "canonical uri: https://example.com/draft2020-12/ref-and-id3/nested/foo.json", "$id": "nested/foo.json", "$ref": "./bar.json" }, "bar": { "$comment": "canonical uri: https://example.com/draft2020-12/ref-and-id3/nested/bar.json", "$id": "nested/bar.json", "type": "number" } } }, "tests": [ { "description": "data is valid against nested sibling", "data": 5, "valid": true }, { "description": "data is invalid against nested sibling", "data": "a", "valid": false } ] }, { "description": "simple URN base URI with $ref via the URN", "schema": { "$comment": "URIs do not have to have HTTP(s) schemes", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed", "minimum": 30, "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ffff-ffff-4321feebdaed"} } }, "tests": [ { "description": "valid under the URN IDed schema", "data": {"foo": 37}, "valid": true }, { "description": "invalid under the URN IDed schema", "data": {"foo": 12}, "valid": false } ] }, { "description": "simple URN base URI with JSON pointer", "schema": { "$comment": "URIs do not have to have HTTP(s) schemes", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:uuid:deadbeef-1234-00ff-ff00-4321feebdaed", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with NSS", "schema": { "$comment": "RFC 8141 §2.2", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:example:1/406/47452/2", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with r-component", "schema": { "$comment": "RFC 8141 §2.3.1", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:example:foo-bar-baz-qux?+CCResolve:cc=uk", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with q-component", "schema": { "$comment": "RFC 8141 §2.3.2", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:example:weather?=op=map&lat=39.56&lon=-104.85&datetime=1969-07-21T02:56:15Z", "properties": { "foo": {"$ref": "#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and JSON pointer ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-0000-0000-4321feebdaed#/$defs/bar"} }, "$defs": { "bar": {"type": "string"} } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN base URI with URN and anchor ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed", "properties": { "foo": {"$ref": "urn:uuid:deadbeef-1234-ff00-00ff-4321feebdaed#something"} }, "$defs": { "bar": { "$anchor": "something", "type": "string" } } }, "tests": [ { "description": "a string is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "a non-string is invalid", "data": {"foo": 12}, "valid": false } ] }, { "description": "URN ref with nested pointer ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", "$defs": { "foo": { "$id": "urn:uuid:deadbeef-4321-ffff-ffff-1234feebdaed", "$defs": {"bar": {"type": "string"}}, "$ref": "#/$defs/bar" } } }, "tests": [ { "description": "a string is valid", "data": "bar", "valid": true }, { "description": "a non-string is invalid", "data": 12, "valid": false } ] }, { "description": "ref to if", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://example.com/ref/if", "if": { "$id": "http://example.com/ref/if", "type": "integer" } }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref to then", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://example.com/ref/then", "then": { "$id": "http://example.com/ref/then", "type": "integer" } }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref to else", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://example.com/ref/else", "else": { "$id": "http://example.com/ref/else", "type": "integer" } }, "tests": [ { "description": "a non-integer is invalid due to the $ref", "data": "foo", "valid": false }, { "description": "an integer is valid", "data": 12, "valid": true } ] }, { "description": "ref with absolute-path-reference", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://example.com/ref/absref.json", "$defs": { "a": { "$id": "http://example.com/ref/absref/foobar.json", "type": "number" }, "b": { "$id": "http://example.com/absref/foobar.json", "type": "string" } }, "$ref": "/absref/foobar.json" }, "tests": [ { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "an integer is invalid", "data": 12, "valid": false } ] }, { "description": "$id with file URI still resolves pointers - *nix", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "file:///folder/file.json", "$defs": { "foo": { "type": "number" } }, "$ref": "#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "$id with file URI still resolves pointers - windows", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "file:///c:/folder/file.json", "$defs": { "foo": { "type": "number" } }, "$ref": "#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "empty tokens in $ref json-pointer", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "": { "$defs": { "": { "type": "number" } } } }, "allOf": [ { "$ref": "#/$defs//$defs/" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] maxLength.json100640000766000024 154715240201330 24354 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "maxLength validation", "schema": {"maxLength": 2}, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false }, { "description": "ignores non-strings", "data": 10, "valid": true }, { "description": "two graphemes is long enough", "data": "\uD83D\uDCA9\uD83D\uDCA9", "valid": true } ] } ] minLength.json100640000766000024 153615240201330 24350 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "minLength validation", "schema": {"minLength": 2}, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false }, { "description": "ignores non-strings", "data": 1, "valid": true }, { "description": "one grapheme is not long enough", "data": "\uD83D\uDCA9", "valid": false } ] } ] refRemote.json100640000766000024 372615240201330 24356 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "remote ref", "schema": {"$ref": "http://localhost:1234/integer.json"}, "tests": [ { "description": "remote ref valid", "data": 1, "valid": true }, { "description": "remote ref invalid", "data": "a", "valid": false } ] }, { "description": "fragment within remote ref", "schema": {"$ref": "http://localhost:1234/draft3/subSchemas.json#/definitions/integer"}, "tests": [ { "description": "remote fragment valid", "data": 1, "valid": true }, { "description": "remote fragment invalid", "data": "a", "valid": false } ] }, { "description": "ref within remote ref", "schema": { "$ref": "http://localhost:1234/draft3/subSchemas.json#/definitions/refToInteger" }, "tests": [ { "description": "ref within ref valid", "data": 1, "valid": true }, { "description": "ref within ref invalid", "data": "a", "valid": false } ] }, { "description": "change resolution scope", "schema": { "id": "http://localhost:1234/", "items": { "id": "baseUriChange/", "items": {"$ref": "folderInteger.json"} } }, "tests": [ { "description": "changed scope ref valid", "data": [[1]], "valid": true }, { "description": "changed scope ref invalid", "data": [["a"]], "valid": false } ] } ] maxLength.json100640000766000024 155015240201330 24347 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "maxLength validation", "schema": {"maxLength": 2}, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false }, { "description": "ignores non-strings", "data": 100, "valid": true }, { "description": "two graphemes is long enough", "data": "\uD83D\uDCA9\uD83D\uDCA9", "valid": true } ] } ] minLength.json100640000766000024 153615240201330 24351 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "minLength validation", "schema": {"minLength": 2}, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false }, { "description": "ignores non-strings", "data": 1, "valid": true }, { "description": "one grapheme is not long enough", "data": "\uD83D\uDCA9", "valid": false } ] } ] refRemote.json100640000766000024 1236515240201330 24376 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "remote ref", "schema": {"$ref": "http://localhost:1234/integer.json"}, "tests": [ { "description": "remote ref valid", "data": 1, "valid": true }, { "description": "remote ref invalid", "data": "a", "valid": false } ] }, { "description": "fragment within remote ref", "schema": {"$ref": "http://localhost:1234/draft4/subSchemas.json#/definitions/integer"}, "tests": [ { "description": "remote fragment valid", "data": 1, "valid": true }, { "description": "remote fragment invalid", "data": "a", "valid": false } ] }, { "description": "ref within remote ref", "schema": { "$ref": "http://localhost:1234/draft4/subSchemas.json#/definitions/refToInteger" }, "tests": [ { "description": "ref within ref valid", "data": 1, "valid": true }, { "description": "ref within ref invalid", "data": "a", "valid": false } ] }, { "description": "base URI change", "schema": { "id": "http://localhost:1234/", "items": { "id": "baseUriChange/", "items": {"$ref": "folderInteger.json"} } }, "tests": [ { "description": "base URI change ref valid", "data": [[1]], "valid": true }, { "description": "base URI change ref invalid", "data": [["a"]], "valid": false } ] }, { "description": "base URI change - change folder", "schema": { "id": "http://localhost:1234/scope_change_defs1.json", "type" : "object", "properties": { "list": {"$ref": "#/definitions/baz"} }, "definitions": { "baz": { "id": "baseUriChangeFolder/", "type": "array", "items": {"$ref": "folderInteger.json"} } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "base URI change - change folder in subschema", "schema": { "id": "http://localhost:1234/scope_change_defs2.json", "type" : "object", "properties": { "list": {"$ref": "#/definitions/baz/definitions/bar"} }, "definitions": { "baz": { "id": "baseUriChangeFolderInSubschema/", "definitions": { "bar": { "type": "array", "items": {"$ref": "folderInteger.json"} } } } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "root ref in remote ref", "schema": { "id": "http://localhost:1234/object", "type": "object", "properties": { "name": {"$ref": "draft4/name.json#/definitions/orNull"} } }, "tests": [ { "description": "string is valid", "data": { "name": "foo" }, "valid": true }, { "description": "null is valid", "data": { "name": null }, "valid": true }, { "description": "object is invalid", "data": { "name": { "name": null } }, "valid": false } ] }, { "description": "Location-independent identifier in remote ref", "schema": { "$ref": "http://localhost:1234/draft4/locationIndependentIdentifier.json#/definitions/refToInteger" }, "tests": [ { "description": "integer is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] } ] maxLength.json100640000766000024 242115240201330 24347 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "maxLength validation", "schema": {"maxLength": 2}, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false }, { "description": "ignores non-strings", "data": 100, "valid": true }, { "description": "two graphemes is long enough", "data": "\uD83D\uDCA9\uD83D\uDCA9", "valid": true } ] }, { "description": "maxLength validation with a decimal", "schema": {"maxLength": 2.0}, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false } ] } ] minLength.json100640000766000024 240715240201330 24351 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "minLength validation", "schema": {"minLength": 2}, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false }, { "description": "ignores non-strings", "data": 1, "valid": true }, { "description": "one grapheme is not long enough", "data": "\uD83D\uDCA9", "valid": false } ] }, { "description": "minLength validation with a decimal", "schema": {"minLength": 2.0}, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false } ] } ] refRemote.json100640000766000024 1612115240201330 24372 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "remote ref", "schema": {"$ref": "http://localhost:1234/integer.json"}, "tests": [ { "description": "remote ref valid", "data": 1, "valid": true }, { "description": "remote ref invalid", "data": "a", "valid": false } ] }, { "description": "fragment within remote ref", "schema": {"$ref": "http://localhost:1234/draft6/subSchemas.json#/definitions/integer"}, "tests": [ { "description": "remote fragment valid", "data": 1, "valid": true }, { "description": "remote fragment invalid", "data": "a", "valid": false } ] }, { "description": "ref within remote ref", "schema": { "$ref": "http://localhost:1234/draft6/subSchemas.json#/definitions/refToInteger" }, "tests": [ { "description": "ref within ref valid", "data": 1, "valid": true }, { "description": "ref within ref invalid", "data": "a", "valid": false } ] }, { "description": "base URI change", "schema": { "$id": "http://localhost:1234/", "items": { "$id": "baseUriChange/", "items": {"$ref": "folderInteger.json"} } }, "tests": [ { "description": "base URI change ref valid", "data": [[1]], "valid": true }, { "description": "base URI change ref invalid", "data": [["a"]], "valid": false } ] }, { "description": "base URI change - change folder", "schema": { "$id": "http://localhost:1234/scope_change_defs1.json", "type" : "object", "properties": { "list": {"$ref": "#/definitions/baz"} }, "definitions": { "baz": { "$id": "baseUriChangeFolder/", "type": "array", "items": {"$ref": "folderInteger.json"} } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "base URI change - change folder in subschema", "schema": { "$id": "http://localhost:1234/scope_change_defs2.json", "type" : "object", "properties": { "list": {"$ref": "#/definitions/baz/definitions/bar"} }, "definitions": { "baz": { "$id": "baseUriChangeFolderInSubschema/", "definitions": { "bar": { "type": "array", "items": {"$ref": "folderInteger.json"} } } } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "root ref in remote ref", "schema": { "$id": "http://localhost:1234/object", "type": "object", "properties": { "name": {"$ref": "draft6/name.json#/definitions/orNull"} } }, "tests": [ { "description": "string is valid", "data": { "name": "foo" }, "valid": true }, { "description": "null is valid", "data": { "name": null }, "valid": true }, { "description": "object is invalid", "data": { "name": { "name": null } }, "valid": false } ] }, { "description": "remote ref with ref to definitions", "schema": { "$id": "http://localhost:1234/schema-remote-ref-ref-defs1.json", "allOf": [ { "$ref": "draft6/ref-and-definitions.json" } ] }, "tests": [ { "description": "invalid", "data": { "bar": 1 }, "valid": false }, { "description": "valid", "data": { "bar": "a" }, "valid": true } ] }, { "description": "Location-independent identifier in remote ref", "schema": { "$ref": "http://localhost:1234/draft6/locationIndependentIdentifier.json#/definitions/refToInteger" }, "tests": [ { "description": "integer is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "retrieved nested refs resolve relative to their URI not $id", "schema": { "$id": "http://localhost:1234/some-id", "properties": { "name": {"$ref": "nested/foo-ref-string.json"} } }, "tests": [ { "description": "number is invalid", "data": { "name": {"foo": 1} }, "valid": false }, { "description": "string is valid", "data": { "name": {"foo": "a"} }, "valid": true } ] }, { "description": "$ref to $ref finds location-independent $id", "schema": { "$ref": "http://localhost:1234/draft6/detached-ref.json#/definitions/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] maxLength.json100640000766000024 242115240201330 24350 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "maxLength validation", "schema": {"maxLength": 2}, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false }, { "description": "ignores non-strings", "data": 100, "valid": true }, { "description": "two graphemes is long enough", "data": "\uD83D\uDCA9\uD83D\uDCA9", "valid": true } ] }, { "description": "maxLength validation with a decimal", "schema": {"maxLength": 2.0}, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false } ] } ] minLength.json100640000766000024 240715240201330 24352 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "minLength validation", "schema": {"minLength": 2}, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false }, { "description": "ignores non-strings", "data": 1, "valid": true }, { "description": "one grapheme is not long enough", "data": "\uD83D\uDCA9", "valid": false } ] }, { "description": "minLength validation with a decimal", "schema": {"minLength": 2.0}, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false } ] } ] refRemote.json100640000766000024 1612115240201330 24373 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "remote ref", "schema": {"$ref": "http://localhost:1234/integer.json"}, "tests": [ { "description": "remote ref valid", "data": 1, "valid": true }, { "description": "remote ref invalid", "data": "a", "valid": false } ] }, { "description": "fragment within remote ref", "schema": {"$ref": "http://localhost:1234/draft7/subSchemas.json#/definitions/integer"}, "tests": [ { "description": "remote fragment valid", "data": 1, "valid": true }, { "description": "remote fragment invalid", "data": "a", "valid": false } ] }, { "description": "ref within remote ref", "schema": { "$ref": "http://localhost:1234/draft7/subSchemas.json#/definitions/refToInteger" }, "tests": [ { "description": "ref within ref valid", "data": 1, "valid": true }, { "description": "ref within ref invalid", "data": "a", "valid": false } ] }, { "description": "base URI change", "schema": { "$id": "http://localhost:1234/", "items": { "$id": "baseUriChange/", "items": {"$ref": "folderInteger.json"} } }, "tests": [ { "description": "base URI change ref valid", "data": [[1]], "valid": true }, { "description": "base URI change ref invalid", "data": [["a"]], "valid": false } ] }, { "description": "base URI change - change folder", "schema": { "$id": "http://localhost:1234/scope_change_defs1.json", "type" : "object", "properties": { "list": {"$ref": "#/definitions/baz"} }, "definitions": { "baz": { "$id": "baseUriChangeFolder/", "type": "array", "items": {"$ref": "folderInteger.json"} } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "base URI change - change folder in subschema", "schema": { "$id": "http://localhost:1234/scope_change_defs2.json", "type" : "object", "properties": { "list": {"$ref": "#/definitions/baz/definitions/bar"} }, "definitions": { "baz": { "$id": "baseUriChangeFolderInSubschema/", "definitions": { "bar": { "type": "array", "items": {"$ref": "folderInteger.json"} } } } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "root ref in remote ref", "schema": { "$id": "http://localhost:1234/object", "type": "object", "properties": { "name": {"$ref": "draft7/name.json#/definitions/orNull"} } }, "tests": [ { "description": "string is valid", "data": { "name": "foo" }, "valid": true }, { "description": "null is valid", "data": { "name": null }, "valid": true }, { "description": "object is invalid", "data": { "name": { "name": null } }, "valid": false } ] }, { "description": "remote ref with ref to definitions", "schema": { "$id": "http://localhost:1234/schema-remote-ref-ref-defs1.json", "allOf": [ { "$ref": "draft7/ref-and-definitions.json" } ] }, "tests": [ { "description": "invalid", "data": { "bar": 1 }, "valid": false }, { "description": "valid", "data": { "bar": "a" }, "valid": true } ] }, { "description": "Location-independent identifier in remote ref", "schema": { "$ref": "http://localhost:1234/draft7/locationIndependentIdentifier.json#/definitions/refToInteger" }, "tests": [ { "description": "integer is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "retrieved nested refs resolve relative to their URI not $id", "schema": { "$id": "http://localhost:1234/some-id", "properties": { "name": {"$ref": "nested/foo-ref-string.json"} } }, "tests": [ { "description": "number is invalid", "data": { "name": {"foo": 1} }, "valid": false }, { "description": "string is valid", "data": { "name": {"foo": "a"} }, "valid": true } ] }, { "description": "$ref to $ref finds location-independent $id", "schema": { "$ref": "http://localhost:1234/draft7/detached-ref.json#/definitions/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] maxProperties.json100640000766000024 421215240201330 24422 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "maxProperties validation", "schema": { "$schema": "https://json-schema.org/v1", "maxProperties": 2 }, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "maxProperties validation with a decimal", "schema": { "$schema": "https://json-schema.org/v1", "maxProperties": 2.0 }, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false } ] }, { "description": "maxProperties = 0 means the object is empty", "schema": { "$schema": "https://json-schema.org/v1", "maxProperties": 0 }, "tests": [ { "description": "no properties is valid", "data": {}, "valid": true }, { "description": "one property is invalid", "data": { "foo": 1 }, "valid": false } ] } ] minProperties.json100640000766000024 352515240201330 24426 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "minProperties validation", "schema": { "$schema": "https://json-schema.org/v1", "minProperties": 1 }, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "minProperties validation with a decimal", "schema": { "$schema": "https://json-schema.org/v1", "minProperties": 1.0 }, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false } ] } ] propertyNames.json100640000766000024 506715240201330 24441 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "propertyNames validation", "schema": { "$schema": "https://json-schema.org/v1", "propertyNames": {"maxLength": 3} }, "tests": [ { "description": "all property names valid", "data": { "f": {}, "foo": {} }, "valid": true }, { "description": "some property names invalid", "data": { "foo": {}, "foobar": {} }, "valid": false }, { "description": "object without properties is valid", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [1, 2, 3, 4], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "propertyNames with boolean schema true", "schema": { "$schema": "https://json-schema.org/v1", "propertyNames": true }, "tests": [ { "description": "object with any properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with boolean schema false", "schema": { "$schema": "https://json-schema.org/v1", "propertyNames": false }, "tests": [ { "description": "object with any properties is invalid", "data": {"foo": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] } ] urn-ref-string.json100644000766000024 215240201330 24345 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}include_optional000755000766000024 015240201330 22675 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/testsfoo.json100644000766000024 11415240201330 24467 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/include_optional[ { "description": "hello", "schema": true, "tests": [] } ] detached-ref.json100640000766000024 36215240201330 24371 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$id": "http://localhost:1234/v1/detached-ref.json", "$schema": "https://json-schema.org/v1", "$defs": { "foo": { "$ref": "#detached" }, "detached": { "$anchor": "detached", "type": "integer" } } } ref-and-defs.json100640000766000024 41715240201330 24312 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/ref-and-defs.json", "$defs": { "inner": { "properties": { "bar": { "type": "string" } } } }, "$ref": "#/$defs/inner" } defs.json100640000766000024 117515240201330 24022 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "validate definition against metaschema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "https://json-schema.org/draft/2019-09/schema" }, "tests": [ { "description": "valid definition schema", "data": {"$defs": {"foo": {"type": "integer"}}}, "valid": true }, { "description": "invalid definition schema", "data": {"$defs": {"foo": {"type": 1}}}, "valid": false } ] } ] enum.json100640000766000024 2554515240201330 24074 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "simple enum validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [1, 2, 3] }, "tests": [ { "description": "one of the enum is valid", "data": 1, "valid": true }, { "description": "something else is invalid", "data": 4, "valid": false } ] }, { "description": "heterogeneous enum validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [6, "foo", [], true, {"foo": 12}] }, "tests": [ { "description": "one of the enum is valid", "data": [], "valid": true }, { "description": "something else is invalid", "data": null, "valid": false }, { "description": "objects are deep compared", "data": {"foo": false}, "valid": false }, { "description": "valid object matches", "data": {"foo": 12}, "valid": true }, { "description": "extra properties in object is invalid", "data": {"foo": 12, "boo": 42}, "valid": false } ] }, { "description": "heterogeneous enum-with-null validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [6, null] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "number is valid", "data": 6, "valid": true }, { "description": "something else is invalid", "data": "test", "valid": false } ] }, { "description": "enums in properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type":"object", "properties": { "foo": {"enum":["foo"]}, "bar": {"enum":["bar"]} }, "required": ["bar"] }, "tests": [ { "description": "both properties are valid", "data": {"foo":"foo", "bar":"bar"}, "valid": true }, { "description": "wrong foo value", "data": {"foo":"foot", "bar":"bar"}, "valid": false }, { "description": "wrong bar value", "data": {"foo":"foo", "bar":"bart"}, "valid": false }, { "description": "missing optional property is valid", "data": {"bar":"bar"}, "valid": true }, { "description": "missing required property is invalid", "data": {"foo":"foo"}, "valid": false }, { "description": "missing all properties is invalid", "data": {}, "valid": false } ] }, { "description": "enum with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": ["foo\nbar", "foo\rbar"] }, "tests": [ { "description": "member 1 is valid", "data": "foo\nbar", "valid": true }, { "description": "member 2 is valid", "data": "foo\rbar", "valid": true }, { "description": "another string is invalid", "data": "abc", "valid": false } ] }, { "description": "enum with false does not match 0", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [false] }, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "enum with [false] does not match [0]", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [[false]] }, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "enum with true does not match 1", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [true] }, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "enum with [true] does not match [1]", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [[true]] }, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "enum with 0 does not match false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [0] }, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true } ] }, { "description": "enum with [0] does not match [false]", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [[0]] }, "tests": [ { "description": "[false] is invalid", "data": [false], "valid": false }, { "description": "[0] is valid", "data": [0], "valid": true }, { "description": "[0.0] is valid", "data": [0.0], "valid": true } ] }, { "description": "enum with 1 does not match true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [1] }, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "enum with [1] does not match [true]", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [[1]] }, "tests": [ { "description": "[true] is invalid", "data": [true], "valid": false }, { "description": "[1] is valid", "data": [1], "valid": true }, { "description": "[1.0] is valid", "data": [1.0], "valid": true } ] }, { "description": "nul characters in strings", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [ "hello\u0000there" ] }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] }, { "description": "empty enum", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "enum": [] }, "tests": [ { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "number is invalid", "data": 42, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": [], "valid": false }, { "description": "boolean is invalid", "data": false, "valid": false } ] } ] type.json100640000766000024 3403515240201330 24103 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "integer type matches integers", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer" }, "tests": [ { "description": "an integer is an integer", "data": 1, "valid": true }, { "description": "a float with zero fractional part is an integer", "data": 1.0, "valid": true }, { "description": "a float is not an integer", "data": 1.1, "valid": false }, { "description": "a string is not an integer", "data": "foo", "valid": false }, { "description": "a string is still not an integer, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not an integer", "data": {}, "valid": false }, { "description": "an array is not an integer", "data": [], "valid": false }, { "description": "a boolean is not an integer", "data": true, "valid": false }, { "description": "null is not an integer", "data": null, "valid": false } ] }, { "description": "number type matches numbers", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "number" }, "tests": [ { "description": "an integer is a number", "data": 1, "valid": true }, { "description": "a float with zero fractional part is a number (and an integer)", "data": 1.0, "valid": true }, { "description": "a float is a number", "data": 1.1, "valid": true }, { "description": "a string is not a number", "data": "foo", "valid": false }, { "description": "a string is still not a number, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not a number", "data": {}, "valid": false }, { "description": "an array is not a number", "data": [], "valid": false }, { "description": "a boolean is not a number", "data": true, "valid": false }, { "description": "null is not a number", "data": null, "valid": false } ] }, { "description": "string type matches strings", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string" }, "tests": [ { "description": "1 is not a string", "data": 1, "valid": false }, { "description": "a float is not a string", "data": 1.1, "valid": false }, { "description": "a string is a string", "data": "foo", "valid": true }, { "description": "a string is still a string, even if it looks like a number", "data": "1", "valid": true }, { "description": "an empty string is still a string", "data": "", "valid": true }, { "description": "an object is not a string", "data": {}, "valid": false }, { "description": "an array is not a string", "data": [], "valid": false }, { "description": "a boolean is not a string", "data": true, "valid": false }, { "description": "null is not a string", "data": null, "valid": false } ] }, { "description": "object type matches objects", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object" }, "tests": [ { "description": "an integer is not an object", "data": 1, "valid": false }, { "description": "a float is not an object", "data": 1.1, "valid": false }, { "description": "a string is not an object", "data": "foo", "valid": false }, { "description": "an object is an object", "data": {}, "valid": true }, { "description": "an array is not an object", "data": [], "valid": false }, { "description": "a boolean is not an object", "data": true, "valid": false }, { "description": "null is not an object", "data": null, "valid": false } ] }, { "description": "array type matches arrays", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "array" }, "tests": [ { "description": "an integer is not an array", "data": 1, "valid": false }, { "description": "a float is not an array", "data": 1.1, "valid": false }, { "description": "a string is not an array", "data": "foo", "valid": false }, { "description": "an object is not an array", "data": {}, "valid": false }, { "description": "an array is an array", "data": [], "valid": true }, { "description": "a boolean is not an array", "data": true, "valid": false }, { "description": "null is not an array", "data": null, "valid": false } ] }, { "description": "boolean type matches booleans", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "boolean" }, "tests": [ { "description": "an integer is not a boolean", "data": 1, "valid": false }, { "description": "zero is not a boolean", "data": 0, "valid": false }, { "description": "a float is not a boolean", "data": 1.1, "valid": false }, { "description": "a string is not a boolean", "data": "foo", "valid": false }, { "description": "an empty string is not a boolean", "data": "", "valid": false }, { "description": "an object is not a boolean", "data": {}, "valid": false }, { "description": "an array is not a boolean", "data": [], "valid": false }, { "description": "true is a boolean", "data": true, "valid": true }, { "description": "false is a boolean", "data": false, "valid": true }, { "description": "null is not a boolean", "data": null, "valid": false } ] }, { "description": "null type matches only the null object", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "null" }, "tests": [ { "description": "an integer is not null", "data": 1, "valid": false }, { "description": "a float is not null", "data": 1.1, "valid": false }, { "description": "zero is not null", "data": 0, "valid": false }, { "description": "a string is not null", "data": "foo", "valid": false }, { "description": "an empty string is not null", "data": "", "valid": false }, { "description": "an object is not null", "data": {}, "valid": false }, { "description": "an array is not null", "data": [], "valid": false }, { "description": "true is not null", "data": true, "valid": false }, { "description": "false is not null", "data": false, "valid": false }, { "description": "null is null", "data": null, "valid": true } ] }, { "description": "multiple types can be specified in an array", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": ["integer", "string"] }, "tests": [ { "description": "an integer is valid", "data": 1, "valid": true }, { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "a float is invalid", "data": 1.1, "valid": false }, { "description": "an object is invalid", "data": {}, "valid": false }, { "description": "an array is invalid", "data": [], "valid": false }, { "description": "a boolean is invalid", "data": true, "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type as array with one item", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": ["string"] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is invalid", "data": 123, "valid": false } ] }, { "description": "type: array or object", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": ["array", "object"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type: array, object or null", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": ["array", "object", "null"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false } ] } ] defs.json100640000766000024 117515240201330 24004 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "validate definition against metaschema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "https://json-schema.org/draft/2020-12/schema" }, "tests": [ { "description": "valid definition schema", "data": {"$defs": {"foo": {"type": "integer"}}}, "valid": true }, { "description": "invalid definition schema", "data": {"$defs": {"foo": {"type": 1}}}, "valid": false } ] } ] enum.json100640000766000024 2554515240201330 24056 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "simple enum validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [1, 2, 3] }, "tests": [ { "description": "one of the enum is valid", "data": 1, "valid": true }, { "description": "something else is invalid", "data": 4, "valid": false } ] }, { "description": "heterogeneous enum validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [6, "foo", [], true, {"foo": 12}] }, "tests": [ { "description": "one of the enum is valid", "data": [], "valid": true }, { "description": "something else is invalid", "data": null, "valid": false }, { "description": "objects are deep compared", "data": {"foo": false}, "valid": false }, { "description": "valid object matches", "data": {"foo": 12}, "valid": true }, { "description": "extra properties in object is invalid", "data": {"foo": 12, "boo": 42}, "valid": false } ] }, { "description": "heterogeneous enum-with-null validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [6, null] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "number is valid", "data": 6, "valid": true }, { "description": "something else is invalid", "data": "test", "valid": false } ] }, { "description": "enums in properties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type":"object", "properties": { "foo": {"enum":["foo"]}, "bar": {"enum":["bar"]} }, "required": ["bar"] }, "tests": [ { "description": "both properties are valid", "data": {"foo":"foo", "bar":"bar"}, "valid": true }, { "description": "wrong foo value", "data": {"foo":"foot", "bar":"bar"}, "valid": false }, { "description": "wrong bar value", "data": {"foo":"foo", "bar":"bart"}, "valid": false }, { "description": "missing optional property is valid", "data": {"bar":"bar"}, "valid": true }, { "description": "missing required property is invalid", "data": {"foo":"foo"}, "valid": false }, { "description": "missing all properties is invalid", "data": {}, "valid": false } ] }, { "description": "enum with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": ["foo\nbar", "foo\rbar"] }, "tests": [ { "description": "member 1 is valid", "data": "foo\nbar", "valid": true }, { "description": "member 2 is valid", "data": "foo\rbar", "valid": true }, { "description": "another string is invalid", "data": "abc", "valid": false } ] }, { "description": "enum with false does not match 0", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [false] }, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "enum with [false] does not match [0]", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [[false]] }, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "enum with true does not match 1", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [true] }, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "enum with [true] does not match [1]", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [[true]] }, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "enum with 0 does not match false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [0] }, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true } ] }, { "description": "enum with [0] does not match [false]", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [[0]] }, "tests": [ { "description": "[false] is invalid", "data": [false], "valid": false }, { "description": "[0] is valid", "data": [0], "valid": true }, { "description": "[0.0] is valid", "data": [0.0], "valid": true } ] }, { "description": "enum with 1 does not match true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [1] }, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "enum with [1] does not match [true]", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [[1]] }, "tests": [ { "description": "[true] is invalid", "data": [true], "valid": false }, { "description": "[1] is valid", "data": [1], "valid": true }, { "description": "[1.0] is valid", "data": [1.0], "valid": true } ] }, { "description": "nul characters in strings", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [ "hello\u0000there" ] }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] }, { "description": "empty enum", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "enum": [] }, "tests": [ { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "number is invalid", "data": 42, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": [], "valid": false }, { "description": "boolean is invalid", "data": false, "valid": false } ] } ] type.json100640000766000024 3403515240201330 24065 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "integer type matches integers", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer" }, "tests": [ { "description": "an integer is an integer", "data": 1, "valid": true }, { "description": "a float with zero fractional part is an integer", "data": 1.0, "valid": true }, { "description": "a float is not an integer", "data": 1.1, "valid": false }, { "description": "a string is not an integer", "data": "foo", "valid": false }, { "description": "a string is still not an integer, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not an integer", "data": {}, "valid": false }, { "description": "an array is not an integer", "data": [], "valid": false }, { "description": "a boolean is not an integer", "data": true, "valid": false }, { "description": "null is not an integer", "data": null, "valid": false } ] }, { "description": "number type matches numbers", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "number" }, "tests": [ { "description": "an integer is a number", "data": 1, "valid": true }, { "description": "a float with zero fractional part is a number (and an integer)", "data": 1.0, "valid": true }, { "description": "a float is a number", "data": 1.1, "valid": true }, { "description": "a string is not a number", "data": "foo", "valid": false }, { "description": "a string is still not a number, even if it looks like one", "data": "1", "valid": false }, { "description": "an object is not a number", "data": {}, "valid": false }, { "description": "an array is not a number", "data": [], "valid": false }, { "description": "a boolean is not a number", "data": true, "valid": false }, { "description": "null is not a number", "data": null, "valid": false } ] }, { "description": "string type matches strings", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string" }, "tests": [ { "description": "1 is not a string", "data": 1, "valid": false }, { "description": "a float is not a string", "data": 1.1, "valid": false }, { "description": "a string is a string", "data": "foo", "valid": true }, { "description": "a string is still a string, even if it looks like a number", "data": "1", "valid": true }, { "description": "an empty string is still a string", "data": "", "valid": true }, { "description": "an object is not a string", "data": {}, "valid": false }, { "description": "an array is not a string", "data": [], "valid": false }, { "description": "a boolean is not a string", "data": true, "valid": false }, { "description": "null is not a string", "data": null, "valid": false } ] }, { "description": "object type matches objects", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object" }, "tests": [ { "description": "an integer is not an object", "data": 1, "valid": false }, { "description": "a float is not an object", "data": 1.1, "valid": false }, { "description": "a string is not an object", "data": "foo", "valid": false }, { "description": "an object is an object", "data": {}, "valid": true }, { "description": "an array is not an object", "data": [], "valid": false }, { "description": "a boolean is not an object", "data": true, "valid": false }, { "description": "null is not an object", "data": null, "valid": false } ] }, { "description": "array type matches arrays", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "array" }, "tests": [ { "description": "an integer is not an array", "data": 1, "valid": false }, { "description": "a float is not an array", "data": 1.1, "valid": false }, { "description": "a string is not an array", "data": "foo", "valid": false }, { "description": "an object is not an array", "data": {}, "valid": false }, { "description": "an array is an array", "data": [], "valid": true }, { "description": "a boolean is not an array", "data": true, "valid": false }, { "description": "null is not an array", "data": null, "valid": false } ] }, { "description": "boolean type matches booleans", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "boolean" }, "tests": [ { "description": "an integer is not a boolean", "data": 1, "valid": false }, { "description": "zero is not a boolean", "data": 0, "valid": false }, { "description": "a float is not a boolean", "data": 1.1, "valid": false }, { "description": "a string is not a boolean", "data": "foo", "valid": false }, { "description": "an empty string is not a boolean", "data": "", "valid": false }, { "description": "an object is not a boolean", "data": {}, "valid": false }, { "description": "an array is not a boolean", "data": [], "valid": false }, { "description": "true is a boolean", "data": true, "valid": true }, { "description": "false is a boolean", "data": false, "valid": true }, { "description": "null is not a boolean", "data": null, "valid": false } ] }, { "description": "null type matches only the null object", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "null" }, "tests": [ { "description": "an integer is not null", "data": 1, "valid": false }, { "description": "a float is not null", "data": 1.1, "valid": false }, { "description": "zero is not null", "data": 0, "valid": false }, { "description": "a string is not null", "data": "foo", "valid": false }, { "description": "an empty string is not null", "data": "", "valid": false }, { "description": "an object is not null", "data": {}, "valid": false }, { "description": "an array is not null", "data": [], "valid": false }, { "description": "true is not null", "data": true, "valid": false }, { "description": "false is not null", "data": false, "valid": false }, { "description": "null is null", "data": null, "valid": true } ] }, { "description": "multiple types can be specified in an array", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": ["integer", "string"] }, "tests": [ { "description": "an integer is valid", "data": 1, "valid": true }, { "description": "a string is valid", "data": "foo", "valid": true }, { "description": "a float is invalid", "data": 1.1, "valid": false }, { "description": "an object is invalid", "data": {}, "valid": false }, { "description": "an array is invalid", "data": [], "valid": false }, { "description": "a boolean is invalid", "data": true, "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type as array with one item", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": ["string"] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is invalid", "data": 123, "valid": false } ] }, { "description": "type: array or object", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": ["array", "object"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "null is invalid", "data": null, "valid": false } ] }, { "description": "type: array, object or null", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": ["array", "object", "null"] }, "tests": [ { "description": "array is valid", "data": [1,2,3], "valid": true }, { "description": "object is valid", "data": {"foo": 123}, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "number is invalid", "data": 123, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false } ] } ] properties.json100640000766000024 651215240201330 24616 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "object properties validation", "schema": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "string"} } }, "tests": [ { "description": "both properties present and valid is valid", "data": {"foo": 1, "bar": "baz"}, "valid": true }, { "description": "one property invalid is invalid", "data": {"foo": 1, "bar": {}}, "valid": false }, { "description": "both properties invalid is invalid", "data": {"foo": [], "bar": {}}, "valid": false }, { "description": "doesn't invalidate other properties", "data": {"quux": []}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "properties, patternProperties, additionalProperties interaction", "schema": { "properties": { "foo": {"type": "array", "maxItems": 3}, "bar": {"type": "array"} }, "patternProperties": {"f.o": {"minItems": 2}}, "additionalProperties": {"type": "integer"} }, "tests": [ { "description": "property validates property", "data": {"foo": [1, 2]}, "valid": true }, { "description": "property invalidates property", "data": {"foo": [1, 2, 3, 4]}, "valid": false }, { "description": "patternProperty invalidates property", "data": {"foo": []}, "valid": false }, { "description": "patternProperty validates nonproperty", "data": {"fxo": [1, 2]}, "valid": true }, { "description": "patternProperty invalidates nonproperty", "data": {"fxo": []}, "valid": false }, { "description": "additionalProperty ignores property", "data": {"bar": []}, "valid": true }, { "description": "additionalProperty validates others", "data": {"quux": 3}, "valid": true }, { "description": "additionalProperty invalidates others", "data": {"quux": "foo"}, "valid": false } ] }, { "description": "properties with null valued instance properties", "schema": { "properties": { "foo": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] } ] multipleOf.json100640000766000024 444015240201330 24541 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "by int", "schema": {"multipleOf": 2}, "tests": [ { "description": "int by int", "data": 10, "valid": true }, { "description": "int by int fail", "data": 7, "valid": false }, { "description": "ignores non-numbers", "data": "foo", "valid": true } ] }, { "description": "by number", "schema": {"multipleOf": 1.5}, "tests": [ { "description": "zero is multiple of anything", "data": 0, "valid": true }, { "description": "4.5 is multiple of 1.5", "data": 4.5, "valid": true }, { "description": "-4.5 is multiple of 1.5", "data": -4.5, "valid": true }, { "description": "35 is not multiple of 1.5", "data": 35, "valid": false } ] }, { "description": "by small number", "schema": {"multipleOf": 0.0001}, "tests": [ { "description": "0.0075 is multiple of 0.0001", "data": 0.0075, "valid": true }, { "description": "0.00751 is not multiple of 0.0001", "data": 0.00751, "valid": false } ] }, { "description": "float division = inf", "schema": {"type": "integer", "multipleOf": 0.123456789}, "tests": [ { "description": "invalid, but naive implementations may raise an overflow error", "data": 1e308, "valid": false } ] }, { "description": "small multiple of large integer", "schema": {"type": "integer", "multipleOf": 1e-8}, "tests": [ { "description": "any integer is a multiple of 1e-8", "data": 12391239123, "valid": true } ] } ] properties.json100640000766000024 1441515240201330 24640 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "object properties validation", "schema": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "string"} } }, "tests": [ { "description": "both properties present and valid is valid", "data": {"foo": 1, "bar": "baz"}, "valid": true }, { "description": "one property invalid is invalid", "data": {"foo": 1, "bar": {}}, "valid": false }, { "description": "both properties invalid is invalid", "data": {"foo": [], "bar": {}}, "valid": false }, { "description": "doesn't invalidate other properties", "data": {"quux": []}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "properties, patternProperties, additionalProperties interaction", "schema": { "properties": { "foo": {"type": "array", "maxItems": 3}, "bar": {"type": "array"} }, "patternProperties": {"f.o": {"minItems": 2}}, "additionalProperties": {"type": "integer"} }, "tests": [ { "description": "property validates property", "data": {"foo": [1, 2]}, "valid": true }, { "description": "property invalidates property", "data": {"foo": [1, 2, 3, 4]}, "valid": false }, { "description": "patternProperty invalidates property", "data": {"foo": []}, "valid": false }, { "description": "patternProperty validates nonproperty", "data": {"fxo": [1, 2]}, "valid": true }, { "description": "patternProperty invalidates nonproperty", "data": {"fxo": []}, "valid": false }, { "description": "additionalProperty ignores property", "data": {"bar": []}, "valid": true }, { "description": "additionalProperty validates others", "data": {"quux": 3}, "valid": true }, { "description": "additionalProperty invalidates others", "data": {"quux": "foo"}, "valid": false } ] }, { "description": "properties with escaped characters", "schema": { "properties": { "foo\nbar": {"type": "number"}, "foo\"bar": {"type": "number"}, "foo\\bar": {"type": "number"}, "foo\rbar": {"type": "number"}, "foo\tbar": {"type": "number"}, "foo\fbar": {"type": "number"} } }, "tests": [ { "description": "object with all numbers is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1", "foo\\bar": "1", "foo\rbar": "1", "foo\tbar": "1", "foo\fbar": "1" }, "valid": false } ] }, { "description": "properties with null valued instance properties", "schema": { "properties": { "foo": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] }, { "description": "properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "properties": { "__proto__": {"type": "number"}, "toString": { "properties": { "length": { "type": "string" } } }, "constructor": {"type": "number"} } }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": true }, { "description": "__proto__ not valid", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString not valid", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor not valid", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present and valid", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] multipleOf.json100640000766000024 444715240201330 24552 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "by int", "schema": {"multipleOf": 2}, "tests": [ { "description": "int by int", "data": 10, "valid": true }, { "description": "int by int fail", "data": 7, "valid": false }, { "description": "ignores non-numbers", "data": "foo", "valid": true } ] }, { "description": "by number", "schema": {"multipleOf": 1.5}, "tests": [ { "description": "zero is multiple of anything", "data": 0, "valid": true }, { "description": "4.5 is multiple of 1.5", "data": 4.5, "valid": true }, { "description": "-4.5 is multiple of 1.5", "data": -4.5, "valid": true }, { "description": "35 is not multiple of 1.5", "data": 35, "valid": false } ] }, { "description": "by small number", "schema": {"multipleOf": 0.0001}, "tests": [ { "description": "0.0075 is multiple of 0.0001", "data": 0.0075, "valid": true }, { "description": "0.00751 is not multiple of 0.0001", "data": 0.00751, "valid": false } ] }, { "description": "float division = inf", "schema": {"type": "integer", "multipleOf": 0.123456789}, "tests": [ { "description": "always invalid, but naive implementations may raise an overflow error", "data": 1e308, "valid": false } ] }, { "description": "small multiple of large integer", "schema": {"type": "integer", "multipleOf": 1e-8}, "tests": [ { "description": "any integer is a multiple of 1e-8", "data": 12391239123, "valid": true } ] } ] properties.json100640000766000024 1621115240201330 24636 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "object properties validation", "schema": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "string"} } }, "tests": [ { "description": "both properties present and valid is valid", "data": {"foo": 1, "bar": "baz"}, "valid": true }, { "description": "one property invalid is invalid", "data": {"foo": 1, "bar": {}}, "valid": false }, { "description": "both properties invalid is invalid", "data": {"foo": [], "bar": {}}, "valid": false }, { "description": "doesn't invalidate other properties", "data": {"quux": []}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "properties, patternProperties, additionalProperties interaction", "schema": { "properties": { "foo": {"type": "array", "maxItems": 3}, "bar": {"type": "array"} }, "patternProperties": {"f.o": {"minItems": 2}}, "additionalProperties": {"type": "integer"} }, "tests": [ { "description": "property validates property", "data": {"foo": [1, 2]}, "valid": true }, { "description": "property invalidates property", "data": {"foo": [1, 2, 3, 4]}, "valid": false }, { "description": "patternProperty invalidates property", "data": {"foo": []}, "valid": false }, { "description": "patternProperty validates nonproperty", "data": {"fxo": [1, 2]}, "valid": true }, { "description": "patternProperty invalidates nonproperty", "data": {"fxo": []}, "valid": false }, { "description": "additionalProperty ignores property", "data": {"bar": []}, "valid": true }, { "description": "additionalProperty validates others", "data": {"quux": 3}, "valid": true }, { "description": "additionalProperty invalidates others", "data": {"quux": "foo"}, "valid": false } ] }, { "description": "properties with boolean schema", "schema": { "properties": { "foo": true, "bar": false } }, "tests": [ { "description": "no property present is valid", "data": {}, "valid": true }, { "description": "only 'true' property present is valid", "data": {"foo": 1}, "valid": true }, { "description": "only 'false' property present is invalid", "data": {"bar": 2}, "valid": false }, { "description": "both properties present is invalid", "data": {"foo": 1, "bar": 2}, "valid": false } ] }, { "description": "properties with escaped characters", "schema": { "properties": { "foo\nbar": {"type": "number"}, "foo\"bar": {"type": "number"}, "foo\\bar": {"type": "number"}, "foo\rbar": {"type": "number"}, "foo\tbar": {"type": "number"}, "foo\fbar": {"type": "number"} } }, "tests": [ { "description": "object with all numbers is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1", "foo\\bar": "1", "foo\rbar": "1", "foo\tbar": "1", "foo\fbar": "1" }, "valid": false } ] }, { "description": "properties with null valued instance properties", "schema": { "properties": { "foo": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] }, { "description": "properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "properties": { "__proto__": {"type": "number"}, "toString": { "properties": { "length": { "type": "string" } } }, "constructor": {"type": "number"} } }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": true }, { "description": "__proto__ not valid", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString not valid", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor not valid", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present and valid", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] multipleOf.json100640000766000024 444715240201330 24553 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "by int", "schema": {"multipleOf": 2}, "tests": [ { "description": "int by int", "data": 10, "valid": true }, { "description": "int by int fail", "data": 7, "valid": false }, { "description": "ignores non-numbers", "data": "foo", "valid": true } ] }, { "description": "by number", "schema": {"multipleOf": 1.5}, "tests": [ { "description": "zero is multiple of anything", "data": 0, "valid": true }, { "description": "4.5 is multiple of 1.5", "data": 4.5, "valid": true }, { "description": "-4.5 is multiple of 1.5", "data": -4.5, "valid": true }, { "description": "35 is not multiple of 1.5", "data": 35, "valid": false } ] }, { "description": "by small number", "schema": {"multipleOf": 0.0001}, "tests": [ { "description": "0.0075 is multiple of 0.0001", "data": 0.0075, "valid": true }, { "description": "0.00751 is not multiple of 0.0001", "data": 0.00751, "valid": false } ] }, { "description": "float division = inf", "schema": {"type": "integer", "multipleOf": 0.123456789}, "tests": [ { "description": "always invalid, but naive implementations may raise an overflow error", "data": 1e308, "valid": false } ] }, { "description": "small multiple of large integer", "schema": {"type": "integer", "multipleOf": 1e-8}, "tests": [ { "description": "any integer is a multiple of 1e-8", "data": 12391239123, "valid": true } ] } ] properties.json100640000766000024 1621115240201330 24637 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "object properties validation", "schema": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "string"} } }, "tests": [ { "description": "both properties present and valid is valid", "data": {"foo": 1, "bar": "baz"}, "valid": true }, { "description": "one property invalid is invalid", "data": {"foo": 1, "bar": {}}, "valid": false }, { "description": "both properties invalid is invalid", "data": {"foo": [], "bar": {}}, "valid": false }, { "description": "doesn't invalidate other properties", "data": {"quux": []}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "properties, patternProperties, additionalProperties interaction", "schema": { "properties": { "foo": {"type": "array", "maxItems": 3}, "bar": {"type": "array"} }, "patternProperties": {"f.o": {"minItems": 2}}, "additionalProperties": {"type": "integer"} }, "tests": [ { "description": "property validates property", "data": {"foo": [1, 2]}, "valid": true }, { "description": "property invalidates property", "data": {"foo": [1, 2, 3, 4]}, "valid": false }, { "description": "patternProperty invalidates property", "data": {"foo": []}, "valid": false }, { "description": "patternProperty validates nonproperty", "data": {"fxo": [1, 2]}, "valid": true }, { "description": "patternProperty invalidates nonproperty", "data": {"fxo": []}, "valid": false }, { "description": "additionalProperty ignores property", "data": {"bar": []}, "valid": true }, { "description": "additionalProperty validates others", "data": {"quux": 3}, "valid": true }, { "description": "additionalProperty invalidates others", "data": {"quux": "foo"}, "valid": false } ] }, { "description": "properties with boolean schema", "schema": { "properties": { "foo": true, "bar": false } }, "tests": [ { "description": "no property present is valid", "data": {}, "valid": true }, { "description": "only 'true' property present is valid", "data": {"foo": 1}, "valid": true }, { "description": "only 'false' property present is invalid", "data": {"bar": 2}, "valid": false }, { "description": "both properties present is invalid", "data": {"foo": 1, "bar": 2}, "valid": false } ] }, { "description": "properties with escaped characters", "schema": { "properties": { "foo\nbar": {"type": "number"}, "foo\"bar": {"type": "number"}, "foo\\bar": {"type": "number"}, "foo\rbar": {"type": "number"}, "foo\tbar": {"type": "number"}, "foo\fbar": {"type": "number"} } }, "tests": [ { "description": "object with all numbers is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1", "foo\\bar": "1", "foo\rbar": "1", "foo\tbar": "1", "foo\fbar": "1" }, "valid": false } ] }, { "description": "properties with null valued instance properties", "schema": { "properties": { "foo": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] }, { "description": "properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "properties": { "__proto__": {"type": "number"}, "toString": { "properties": { "length": { "type": "string" } } }, "constructor": {"type": "number"} } }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": true }, { "description": "__proto__ not valid", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString not valid", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor not valid", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present and valid", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] boolean_schema.json100640000766000024 540215240201330 24521 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "boolean schema 'true'", "schema": true, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "boolean schema 'false'", "schema": false, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] } ] proposals000755000766000024 015240201330 22554 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1README.md100640000766000024 200515240201330 24164 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/proposals# JSON Schema Proposals Tests The subfolders herein represent tests for each active proposal to the specification. If the proposal is a keyword (generally the case), then the subfolder will bear the name of that keyword. Inside the proposal subfolder is a series of test files that would contain amendments to the required test suite should the proposal be incorporated into the specification. These tests should be considered volatile while the proposal is in development; however, implementations claiming to support the proposal are expected to pass its tests. > [!IMPORTANT] > This folder is NOT intended for proposed additions to the test suite or the specification. Proposals to the test suite can be made by [opening an issue](https://github.com/json-schema-org/JSON-Schema-Test-Suite/issues/new) in this repository. Proposals to the specification should be made by following the process defined by our [Feature Life Cycle](https://github.com/json-schema-org/json-schema-spec/blob/main/PROCESS.md#feature-life-cycle). subSchemas-defs.json100644000766000024 215240201330 24477 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}Schema000755000766000024 015240201330 21376 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/lib/Test/JSONAcceptance.pm100640000766000024 7575415240201330 24160 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/lib/Test/JSON/Schemause strict; use warnings; package Test::JSON::Schema::Acceptance; # git description: v1.037-13-gee49d85 # vim: set ts=8 sts=2 sw=2 tw=100 et : # ABSTRACT: Acceptance testing for JSON-Schema based validators our $VERSION = '1.038'; use 5.020; use Moo; use strictures 2; use stable 0.031 'postderef'; use experimental 'signatures'; no autovivification warn => qw(fetch store exists delete); use if "$]" >= 5.022, experimental => 're_strict'; no if "$]" >= 5.031009, feature => 'indirect'; no if "$]" >= 5.033001, feature => 'multidimensional'; no if "$]" >= 5.033006, feature => 'bareword_filehandles'; no if "$]" >= 5.041009, feature => 'smartmatch'; no feature 'switch'; use Test2::API (); use Test2::Todo; use Test2::Tools::Compare (); use Mojo::JSON (); # for JSON_XS, MOJO_NO_JSON_XS environment variables use File::ShareDir 'dist_dir'; use Feature::Compat::Try; use MooX::TypeTiny 0.002002; use Types::Standard 1.016003 qw(Str InstanceOf ArrayRef HashRef Dict Any HasMethods Bool Optional Slurpy Enum); use Types::Common::Numeric 'PositiveOrZeroInt'; use Path::Tiny 0.069; use List::Util 1.33 qw(any max sum0); use Git::Wrapper; use B; use namespace::clean; # specification version => metaschema URI use constant METASCHEMA => { 'v1' => 'https://json-schema.org/v1', 'draft2020-12' => 'https://json-schema.org/draft/2020-12/schema', 'draft2019-09' => 'https://json-schema.org/draft/2019-09/schema', 'draft7' => 'http://json-schema.org/draft-07/schema#', 'draft6' => 'http://json-schema.org/draft-06/schema#', 'draft4' => 'http://json-schema.org/draft-04/schema#', 'draft3' => 'http://json-schema.org/draft-03/schema#', }; my $spec_type = Enum[sort keys METASCHEMA->%*]; has specification => ( is => 'ro', isa => $spec_type, lazy => 1, default => 'draft2020-12', predicate => '_has_specification', ); has supported_specifications => ( is => 'ro', isa => ArrayRef[$spec_type], lazy => 1, default => sub { [ shift->specification ] }, ); # this comes from the tests/ directories in the JSON-Schema-Test-Suite repository has test_dir => ( is => 'ro', isa => InstanceOf['Path::Tiny'], coerce => sub { path($_[0])->absolute('.') }, lazy => 1, builder => '_build_test_dir', predicate => '_has_test_dir', ); sub _build_test_dir { path(dist_dir('Test-JSON-Schema-Acceptance'), 'tests', $_[0]->specification) }; # this comes from the remotes/ directory in the JSON-Schema-Test-Suite repository has additional_resources => ( is => 'ro', isa => InstanceOf['Path::Tiny'], coerce => sub { path($_[0])->absolute('.') }, lazy => 1, default => sub { $_[0]->test_dir->parent->parent->child('remotes') }, ); has verbose => ( is => 'ro', isa => Bool, default => 0, ); has include_optional => ( is => 'ro', isa => Bool, default => 0, ); has skip_dir => ( is => 'ro', isa => ArrayRef[Str], coerce => sub { ref($_[0]) ? $_[0] : [ $_[0] ] }, lazy => 1, default => sub { [] }, ); has test_schemas => ( is => 'ro', isa => Bool, ); has results => ( is => 'rwp', init_arg => undef, isa => ArrayRef[Dict[ file => InstanceOf['Path::Tiny'], map +($_ => PositiveOrZeroInt), qw(pass todo_fail fail), ]], ); has results_text => ( is => 'ro', init_arg => undef, isa => Str, lazy => 1, builder => '_build_results_text', ); around BUILDARGS => sub ($orig, $class, @args) { my %args = @args % 2 ? ( specification => 'draft'.$args[0] ) : @args; $args{specification} = 'draft2020-12' if ($args{specification} // '') eq 'latest'; $class->$orig(\%args); }; sub BUILD ($self, @) { -d $self->test_dir or die 'test_dir does not exist: '.$self->test_dir; } sub acceptance { my $self = shift; my $options = +{ ref $_[0] eq 'CODE' ? (validate_json_string => @_) : @_ }; die 'require one or the other of "validate_data", "validate_json_string"' if not $options->{validate_data} and not $options->{validate_json_string}; die 'cannot provide both "validate_data" and "validate_json_string"' if $options->{validate_data} and $options->{validate_json_string}; warn "'skip_tests' option is deprecated" if $options->{skip_tests}; my $ctx = Test2::API::context; if ($options->{add_resource} and -d $self->additional_resources) { # this is essentially what `bin/jsonschema_suite remote` does: resolves the filename against the # base uri to determine the absolute schema location of each resource. my $base = 'http://localhost:1234'; my %note_seen; my $resource_basename = $self->additional_resources->basename; # "remotes" $self->additional_resources->visit( sub ($path, @) { return if not $path->is_file or $path !~ /\.json$/; # version-specific resources are stored in a subdirectory by version: # skip resource files that are marked as being for an unsupported draft my $relative_path = $path->relative($self->additional_resources); my ($topdir, $rest) = split qr{/}, $relative_path, 2; return if $topdir =~ /^(?:draft(?:[3467]|2019-09|2020-12)|v1)\z/ and not grep $topdir eq $_, $self->supported_specifications->@*; $ctx->note('adding resource'.($rest//'' =~ m{/} ? 's' : '').' from '.$resource_basename.'/'.$topdir.' with the base URI "'.$base.'"...') if not $note_seen{$resource_basename.'/'.$topdir}++; my $data = $self->json_deserialize($path->slurp_raw); my $uri = $base.'/'.$relative_path; $options->{add_resource}->($uri => $data, # ensure the evaluator parses this resource using its specified version $topdir =~ /^draft/ ? (specification_version => $topdir) : ()); }, { recurse => 1 }, ); } $ctx->note('running tests in '.$self->test_dir.' against ' .($self->_has_specification ? $self->specification : 'unknown version').'...'); my $tests = $self->_test_data; # [ { file => .., pass => .., fail => .. }, ... ] my @results; foreach my $one_file (@$tests) { my %results; next if $options->{tests} and $options->{tests}{file} and not grep $_ eq $one_file->{file}, (ref $options->{tests}{file} eq 'ARRAY' ? $options->{tests}{file}->@* : $options->{tests}{file}); $ctx->note(''); foreach my $test_group ($one_file->{json}->@*) { next if $options->{tests} and $options->{tests}{group_description} and not grep $_ eq $test_group->{description}, (ref $options->{tests}{group_description} eq 'ARRAY' ? $options->{tests}{group_description}->@* : $options->{tests}{group_description}); my $todo; $todo = Test2::Todo->new(reason => 'Test marked TODO via "todo_tests"') if $options->{todo_tests} and any { my $o = $_; (not $o->{file} or grep $_ eq $one_file->{file}, (ref $o->{file} eq 'ARRAY' ? $o->{file}->@* : $o->{file})) and (not $o->{group_description} or grep $_ eq $test_group->{description}, (ref $o->{group_description} eq 'ARRAY' ? $o->{group_description}->@* : $o->{group_description})) and not $o->{test_description} } $options->{todo_tests}->@*; my $schema_fails; if ($self->test_schemas) { die 'specification_version unknown: cannot evaluate schema against metaschema' if not $self->_has_specification; my $metaschema_uri = ref $test_group->{schema} eq 'HASH' && $test_group->{schema}{'$schema'} ? $test_group->{schema}{'$schema'} : METASCHEMA->{$self->specification}; my $metaschema_schema = $metaschema_uri; my $result = $options->{validate_data} ? $options->{validate_data}->($metaschema_schema, $test_group->{schema}) : $options->{validate_json_string}->($metaschema_schema, $self->json_serialize($test_group->{schema})); if (not $result) { $ctx->fail('schema for '.$one_file->{file}.': "'.$test_group->{description}.'" fails to validate against '.$metaschema_uri.':'); $ctx->note($self->json_prettyprint($result)); $schema_fails = 1; } } foreach my $test ($test_group->{tests}->@*) { next if $options->{tests} and $options->{tests}{test_description} and not grep $_ eq $test->{description}, (ref $options->{tests}{test_description} eq 'ARRAY' ? $options->{tests}{test_description}->@* : $options->{tests}{test_description}); my $todo; $todo = Test2::Todo->new(reason => 'Test marked TODO via deprecated "skip_tests"') if ref $options->{skip_tests} eq 'ARRAY' and grep +(($test_group->{description}.' - '.$test->{description}) =~ /$_/), $options->{skip_tests}->@*; $todo = Test2::Todo->new(reason => 'Test marked TODO via "todo_tests"') if $options->{todo_tests} and any { my $o = $_; (not $o->{file} or grep $_ eq $one_file->{file}, (ref $o->{file} eq 'ARRAY' ? $o->{file}->@* : $o->{file})) and (not $o->{group_description} or grep $_ eq $test_group->{description}, (ref $o->{group_description} eq 'ARRAY' ? $o->{group_description}->@* : $o->{group_description})) and (not $o->{test_description} or grep $_ eq $test->{description}, (ref $o->{test_description} eq 'ARRAY' ? $o->{test_description}->@* : $o->{test_description})) } $options->{todo_tests}->@*; my $result = $self->_run_test($one_file, $test_group, $test, $options); $result = 0 if $schema_fails; ++$results{ $result ? 'pass' : $todo ? 'todo_fail' : 'fail' }; } } push @results, { file => $one_file->{file}, pass => 0, 'todo_fail' => 0, fail => 0, %results }; } $self->_set_results(\@results); my $diag = $self->verbose ? 'diag' : 'note'; $ctx->$diag("\n".$self->results_text."\n"); if ($self->test_dir !~ m{\boptional\b} and grep +($_->{file} !~ m{^optional/} && $_->{todo_fail} + $_->{fail}), @results) { # non-optional test failures will always be visible, even when not in verbose mode. $ctx->diag('WARNING: some non-optional tests are failing! This implementation is not fully compliant with the specification!'); $ctx->diag(''); } else { $ctx->$diag('Congratulations, all non-optional tests are passing!'); $ctx->$diag(''); } $ctx->release; } sub _run_test ($self, $one_file, $test_group, $test, $options) { my $test_name = $one_file->{file}.': "'.$test_group->{description}.'" - "'.$test->{description}.'"'; my $pass; # ignores TODO status Test2::API::run_subtest($test_name, sub { my ($result_bool, $result, $schema_before, $data_before, $schema_after, $data_after); try { ($schema_before, $data_before) = map $self->json_serialize($_), $test_group->{schema}, $test->{data}; ($result_bool, $result) = $options->{validate_data} ? $options->{validate_data}->($test_group->{schema}, $test->{data}) : $options->{validate_json_string}->($test_group->{schema}, $self->json_serialize($test->{data})); ($schema_after, $data_after) = map $self->json_serialize($_), $test_group->{schema}, $test->{data}; my $ctx = Test2::API::context; # skip the ugly matrix comparison my $expected = $test->{valid} ? 'true' : 'false'; if ($result_bool xor $test->{valid}) { $ctx->fail('evaluation result is incorrect', 'expected '.$expected.'; got '.($result_bool ? 'true' : 'false')); $ctx->${ $self->verbose ? \'diag' : \'note' }('schema: '.$self->json_prettyprint($test_group->{schema})); $ctx->${ $self->verbose ? \'diag' : \'note' }('data: '.$self->json_prettyprint($test->{data}) .(ref $test->{data} ? 'reference to '.ref $test->{data} : '')); # for backwards compatibility, if only one value is returned, it might be possible to # jsonify it to access the full results $ctx->${ $self->verbose ? \'diag' : \'note' }('result: '.$self->json_prettyprint($result // $result_bool)); $pass = 0; } else { $ctx->ok(1, 'test passes: data is valid: '.$expected); $pass = 1; } my @mutated_data_paths = $self->_mutation_check($test->{data}); my @mutated_schema_paths = $self->_mutation_check($test_group->{schema}); # string check path check behaviour # 0 0 ::is(), and note. $pass = 0 # 0 1 ::is(). $pass = 0 # 1 0 ->fail and note. $pass = 0 # 1 1 no test. $pass does not change. if ($data_before ne $data_after) { Test2::Tools::Compare::is($data_after, $data_before, 'evaluator did not mutate data'); $pass = 0; } elsif (@mutated_data_paths) { $ctx->fail('evaluator did not mutate data'); $pass = 0 } $ctx->note('mutated data at location'.(@mutated_data_paths > 1 ? 's' : '').': '.join(', ', @mutated_data_paths)) if @mutated_data_paths; if ($schema_before ne $schema_after) { Test2::Tools::Compare::is($schema_after, $schema_before, 'evaluator did not mutate schema'); $pass = 0; } elsif (@mutated_schema_paths) { $ctx->fail('evaluator did not mutate schema'); $pass = 0; } $ctx->note('mutated schema at location'.(@mutated_schema_paths > 1 ? 's' : '').': '.join(', ', @mutated_schema_paths)) if @mutated_schema_paths; $ctx->release; } catch ($e) { chomp(my $exception = $e); my $ctx = Test2::API::context; $ctx->fail('died: '.$exception); $ctx->release; }; }, { buffered => 1, inherit_trace => 1 }, ); return $pass; } sub _mutation_check ($self, $data) { my @error_paths; # [ path => data ] my @nodes = ([ '', $data ]); while (my $node = shift @nodes) { if (not defined $node->[1]) { next; } if (ref $node->[1] eq 'ARRAY') { push @nodes, map [ $node->[0].'/'.$_, $node->[1][$_] ], 0 .. $node->[1]->$#*; push @error_paths, $node->[0] if tied($node->[1]->@*); } elsif (ref $node->[1] eq 'HASH') { push @nodes, map [ $node->[0].'/'.(s!~!~0!gr =~ s!/!~1!gr), $node->[1]{$_} ], keys $node->[1]->%*; push @error_paths, $node->[0] if tied($node->[1]->%*); } elsif (ref $node->[1]) { next; # boolean or bignum } else { my $flags = B::svref_2object(\$node->[1])->FLAGS; push @error_paths, $node->[0] if not ($flags & B::SVf_POK xor $flags & (B::SVf_IOK | B::SVf_NOK)); } } return @error_paths; } use constant _JSON_BACKEND => Mojo::JSON::JSON_XS ? 'Cpanel::JSON::XS' : 'JSON::PP'; # used for internal serialization/deserialization; does not prettify the string. has _json_serializer => ( is => 'ro', isa => HasMethods[qw(encode decode)], handles => { json_serialize => 'encode', json_deserialize => 'decode', }, lazy => 1, default => sub { _JSON_BACKEND->new->allow_nonref(1)->utf8(1)->allow_blessed(1)->allow_bignum(1)->canonical(1) }, ); # used for displaying diagnostics only has _json_prettyprinter => ( is => 'ro', isa => HasMethods['encode'], lazy => 1, handles => { json_prettyprint => 'encode', }, default => sub { my $encoder = _JSON_BACKEND->new->allow_nonref(1)->utf8(0)->allow_blessed(1)->allow_bignum(1)->canonical(1)->convert_blessed(1)->pretty(1)->space_before(0); $encoder->indent_length(2) if $encoder->can('indent_length'); $encoder; }, ); # backcompat shims sub _json_decoder { shift->_json_serializer(@_) } sub json_decoder { shift->_json_serializer(@_) } sub _json_encoder { shift->_json_prettyprinter(@_) } sub json_encoder { shift->_json_prettyprinter(@_) } # see JSON::MaybeXS::is_bool my $json_bool = InstanceOf[qw(JSON::XS::Boolean Cpanel::JSON::XS::Boolean JSON::PP::Boolean)]; has _test_data => ( is => 'lazy', isa => ArrayRef[Dict[ file => InstanceOf['Path::Tiny'], json => ArrayRef[Dict[ # id => Optional[Str], # specification => Optional[Str], description => Str, comment => Optional[Str], schema => $json_bool|HashRef, tests => ArrayRef[Dict[ # id => Optional[Str], data => Any, description => Str, comment => Optional[Str], valid => $json_bool, Slurpy[Any], ]], Slurpy[Any], ]], ]], ); sub _build__test_data ($self) { my @test_groups; $self->test_dir->visit( sub { my ($path) = @_; return if any { $self->test_dir->child($_)->subsumes($path) } $self->skip_dir->@*; return if not $path->is_file; return if $path !~ /\.json$/; my $data = $self->json_deserialize($path->slurp_raw); return if not @$data; # placeholder files for renamed tests my $file = $path->relative($self->test_dir); push @test_groups, [ scalar(split('/', $file)), { file => $file, json => $data, }, ]; }, { recurse => $self->include_optional }, ); return [ map $_->[1], sort { $a->[0] <=> $b->[0] || $a->[1]{file} cmp $b->[1]{file} } @test_groups ]; } sub _build_results_text ($self) { my @lines; sub _pad ($s, $rest) { sprintf('%-29s', $s) . $rest } push @lines, _pad('generated with:', ref($self).' '.$self->VERSION); push @lines, _pad('on perl: ', $^V); my $test_dir = $self->test_dir; my $orig_dir = $self->_build_test_dir; my $submodule_status = path(dist_dir('Test-JSON-Schema-Acceptance'), 'submodule_status'); if ($submodule_status->exists and $submodule_status->parent->subsumes($self->test_dir)) { chomp(my ($commit, $url) = $submodule_status->lines); push @lines, _pad('with commit:', $commit); push @lines, _pad('from repository:', $url); } elsif ($test_dir eq $orig_dir and not -d '.git') { die 'submodule_status file is missing - packaging error? cannot continue'; } push @lines, _pad('specification version:', $self->specification//'unknown'); if ($test_dir ne $orig_dir) { my $local; if ($orig_dir->subsumes($test_dir)) { $test_dir = '/'.substr($test_dir, length($orig_dir)+1); } elsif (Path::Tiny->cwd->subsumes($test_dir)) { $test_dir = $test_dir->relative; $local = 1; } push @lines, _pad('using custom test directory:', $test_dir); eval { my $git = Git::Wrapper->new($test_dir); my @ref = $git->describe({ all => 1, long => 1, always => 1 }); push @lines, _pad('at ref:', $ref[0]); } if not $local; } push @lines, _pad('optional tests included:', $self->include_optional ? 'yes' : 'no'); push @lines, map _pad('skipping directory:', $_), $self->skip_dir->@*; push @lines, ''; my $length = max(40, map length $_->{file}, $self->results->@*); push @lines, sprintf('%-'.$length.'s pass todo-fail fail', 'filename'); push @lines, '-'x($length + 23); push @lines, map sprintf('%-'.$length.'s % 5d % 4d % 4d', $_->@{qw(file pass todo_fail fail)}), $self->results->@*; my $total = +{ map do { my $type = $_; $type => sum0(map $_->{$type}, $self->results->@*) }, qw(pass todo_fail fail) }; push @lines, '-'x($length + 23); push @lines, sprintf('%-'.$length.'s % 5d % 5d % 5d', 'TOTAL', $total->@{qw(pass todo_fail fail)}); return join("\n", @lines, ''); } 1; __END__ =pod =encoding UTF-8 =for stopwords validators Schemas ANDed ORed TODO =head1 NAME Test::JSON::Schema::Acceptance - Acceptance testing for JSON-Schema based validators =head1 VERSION version 1.038 =head1 SYNOPSIS This module allows the L tests to be used in perl to test a module that implements the JSON Schema specification ("json-schema"). These are the same tests that many modules (libraries, plugins, packages, etc.) use to confirm support of json-schema. Using this module to confirm support gives assurance of interoperability with other modules that run the same tests in different languages. In the JSON::Schema::Modern module, a test could look like the following: use Test2::V0; use JSON::Schema::Modern; use Test::JSON::Schema::Acceptance; my $accepter = Test::JSON::Schema::Acceptance->new(specification => 'draft7'); $accepter->acceptance( validate_data => sub ($schema, $input_data) { return JSON::Schema::Modern->new($schema)->validate($input_data); }, todo_tests => [ { file => 'dependencies.json' } ], ); done_testing(); This would determine if JSON::Schema::Modern's C method returns the right result for all of the cases in the JSON Schema Test Suite, except for those listed in C. =head1 DESCRIPTION L is an IETF draft (at time of writing) which allows you to define the structure of JSON. From the overview of the L: =over 4 This document proposes a new media type "application/schema+json" to identify a JSON Schema for describing JSON data. It also proposes a further optional media type, "application/schema-instance+json", to provide additional integration features. JSON Schemas are themselves JSON documents. This, and related specifications, define keywords allowing authors to describe JSON data in several ways. JSON Schema uses keywords to assert constraints on JSON instances or annotate those instances with additional information. Additional keywords are used to apply assertions and annotations to more complex JSON data structures, or based on some sort of condition. =back This module allows other perl modules (for example JSON::Schema::Modern) to test that they are JSON Schema-compliant, by running the tests from the official test suite, without having to manually convert them to perl tests. You are unlikely to want this module, unless you are attempting to write a module which implements JSON Schema the specification, and want to test your compliance. =head1 CONSTRUCTOR Test::JSON::Schema::Acceptance->new(specification => $specification_version) Create a new instance of Test::JSON::Schema::Acceptance. Available options (which are also available as accessor methods on the object) are: =head2 specification This determines the draft version of the schema to confirm compliance to. Possible values are: =over 4 =item * C =item * C =item * C =item * C =item * C =item * C =item * C (alias for C) =item * C =back The default is C, but in the synopsis example, L is testing draft 7 compliance. (For backwards compatibility, C can be called with a single numeric argument of 3 to 7, which maps to C through C.) =head2 supported_specifications The version(s) that the implementation supports; used to skip adding remote resources that reference unsupported schema versions (for cross-schema tests). Defaults to C<< [ $self->specification ] >>. =head2 test_dir Instead of specifying a draft specification to test against, which will select the most appropriate tests, you can pass in the name of a directory of tests to run directly. Files in this directory should be F<.json> files following the format described in L. =head2 additional_resources A directory of additional resources which should be made available to the implementation under the base URI C. This dataset is automatically provided if you did not override L; otherwise, you need to supply it yourself, if any tests require it (for example by containing C<< {"$ref": "http://localhost:1234/foo.json/#a/b/c"} >>). If you supply an L value to L (see below), this will be done for you. =head2 verbose Optional. When true, prints version information and the test result table such that it is visible during C or C. =head2 include_optional Optional. When true, tests in subdirectories (most notably F are also included. =head2 skip_dir Optional. Pass a string or arrayref consisting of relative path name(s) to indicate directories (within the test directory as specified above with L or L) which will be skipped. Note that this is only useful currently with C<< include_optional => 1 >>, as otherwise all subdirectories would be skipped anyway. =head2 results After calling L, a list of test results are provided here. It is an arrayref of hashrefs with four keys: =over 4 =item * file - the filename =item * pass - the number of pass results for that file =item * todo_fail - the number of fail results for that file that were marked TODO =item * fail - the number of fail results for that file (not including TODO tests) =back =head2 results_text After calling L, a text string tabulating the test results are provided here. This is the same table that is printed at the end of the test run. =head2 test_schemas =for stopwords metaschema Optional. A boolean that, when true, will test every schema against its specification metaschema. (When set, L must also be set.) This normally should not be set as the official test suite has already been sanity-tested, but you may want to set this in development environments if you are using your own test files. Defaults to false. =head1 SUBROUTINES/METHODS =head2 acceptance =for stopwords truthy falsey JSONified Accepts a hash of options as its arguments. (Backwards-compatibility mode: accepts a subroutine which is used as L, and a hashref of arguments.) Available options are: =head3 validate_data A subroutine reference, which is passed two arguments: the JSON Schema, and the B data structure to be validated. This is the main entry point to your JSON Schema library being tested. The subroutine can return either one value or two: =over 4 =back * a boolean value indicating whether the schema was valid for the input or not (required) * a value containing the result of the evaluation (which will be JSONified in the test output) (optional) Either L or L is required. =head3 validate_json_string A subroutine reference, which is passed two arguments: the JSON Schema, and the B containing the data to be validated. This is an alternative to L above, if your library only accepts JSON strings. The subroutine can return either one value or two: =over 4 =back * a boolean value indicating whether the schema was valid for the input or not (required) * a value containing the result of the evaluation (which will be JSONified in the test output) (optional) Exactly one of L or L is required. =head3 add_resource Optional. A subroutine reference, which will be called at the start of L multiple times, with the arguments: =over 4 =item * a URI (string): the canonical uri to use for the new resource =item * a data structure containing schema data to be associated with that URI, for use in some tests that use additional resources (see above). =item * a list of key-value pairs (optional), containing additional options to be passed to the subroutine: keys currently limited to C. =back If you do not provide this option, you will be responsible for ensuring that those additional resources are made available to your implementation for the successful execution of the tests that rely on them. For more information, see . =head3 tests Optional. Restricts tests to just those mentioned (the conditions are ANDed together, not ORed). The syntax can take one of many forms: # run tests in this file tests => { file => 'dependencies.json' } # run tests in these files tests => { file => [ 'dependencies.json', 'refRemote.json' ] } # run tests in this file with this group description tests => { file => 'refRemote.json', group_description => 'remote ref', } # run tests in this file with these group descriptions tests => { file => 'const.json', group_description => [ 'const validation', 'const with object' ], } # run tests in this file with this group description and test description tests => { file => 'const.json', group_description => 'const validation', test_description => 'another type is invalid', } # run tests in this file with this group description and these test descriptions tests => { file => 'const.json', group_description => 'const validation', test_description => [ 'same value is valid', 'another type is invalid' ], } =head3 todo_tests Optional. Mentioned tests will run as L<"TODO"|Test::More/TODO: BLOCK>. Uses arrayrefs of the same hashref structure as L above, which are ORed together. todo_tests => [ # all tests in this file are TODO { file => 'dependencies.json' }, # just some tests in this file are TODO { file => 'boolean_schema.json', test_description => 'array is invalid' }, # .. etc ] =head2 json_prettyprint JSON-encodes a data structure in a format suitable for human view, used for printing test diagnostics. =head2 json_encoder Provides access to the object that provides the L method. =for stopwords OpenAPI =head1 GIVING THANKS =for stopwords MetaCPAN GitHub If you found this module to be useful, please show your appreciation by adding a +1 in L and a star in L. =head1 SUPPORT Bugs may be submitted through L. You can also find me on the L and L, which are also great resources for finding help. =head1 AUTHOR Ben Hutton (@relequestual) =head1 CONTRIBUTORS =for stopwords Karen Etheridge Daniel Perrett =over 4 =item * Karen Etheridge =item * Daniel Perrett =back =head1 COPYRIGHT AND LICENCE This software is Copyright (c) 2015 by Ben Hutton. This is free software, licensed under: The MIT (X11) License This distribution includes data from the L test suite, which carries its own licence (see F). Permission is explicitly B granted to repackage or redistribute this distribution with any files altered or added (such as with a different set of test data) than what was originally published to the Perl Programming Authors Upload Server (PAUSE), as dependencies of this distribution have specific expectations as to the contents of this test data depending on version. If it is desired to use a different dataset at runtime, please refer to the L configuration option. =for Pod::Coverage BUILDARGS BUILD json_decoder METASCHEMA =cut zulu.json100644000766000024 11415240201330 24703 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/include_optional[ { "description": "hello", "schema": true, "tests": [] } ] nested000755000766000024 015240201330 22330 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1string.json100640000766000024 10615240201330 24642 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1/nested{ "$schema": "https://json-schema.org/v1", "type": "string" } allOf.json100640000766000024 2077515240201330 24165 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "allOf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "allOf", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "mismatch second", "data": {"foo": "baz"}, "valid": false }, { "description": "mismatch first", "data": {"bar": 2}, "valid": false }, { "description": "wrong type", "data": {"foo": "baz", "bar": "quux"}, "valid": false } ] }, { "description": "allOf with base schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": {"bar": {"type": "integer"}}, "required": ["bar"], "allOf" : [ { "properties": { "foo": {"type": "string"} }, "required": ["foo"] }, { "properties": { "baz": {"type": "null"} }, "required": ["baz"] } ] }, "tests": [ { "description": "valid", "data": {"foo": "quux", "bar": 2, "baz": null}, "valid": true }, { "description": "mismatch base schema", "data": {"foo": "quux", "baz": null}, "valid": false }, { "description": "mismatch first allOf", "data": {"bar": 2, "baz": null}, "valid": false }, { "description": "mismatch second allOf", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "mismatch both", "data": {"bar": 2}, "valid": false } ] }, { "description": "allOf simple types", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ {"maximum": 30}, {"minimum": 20} ] }, "tests": [ { "description": "valid", "data": 25, "valid": true }, { "description": "mismatch one", "data": 35, "valid": false } ] }, { "description": "allOf with boolean schemas, all true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [true, true] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "allOf with boolean schemas, some false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [true, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with boolean schemas, all false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [false, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with one empty schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with two empty schemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ {}, {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with the first empty schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ {}, { "type": "number" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with the last empty schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "nested allOf, to check validation semantics", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "allOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] }, { "description": "allOf combined with anyOf, oneOf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "multipleOf": 2 } ], "anyOf": [ { "multipleOf": 3 } ], "oneOf": [ { "multipleOf": 5 } ] }, "tests": [ { "description": "allOf: false, anyOf: false, oneOf: false", "data": 1, "valid": false }, { "description": "allOf: false, anyOf: false, oneOf: true", "data": 5, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: false", "data": 3, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: true", "data": 15, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: false", "data": 2, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: true", "data": 10, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: false", "data": 6, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: true", "data": 30, "valid": true } ] } ] anyOf.json100640000766000024 1252515240201330 24176 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "anyOf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "anyOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first anyOf valid", "data": 1, "valid": true }, { "description": "second anyOf valid", "data": 2.5, "valid": true }, { "description": "both anyOf valid", "data": 3, "valid": true }, { "description": "neither anyOf valid", "data": 1.5, "valid": false } ] }, { "description": "anyOf with base schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "anyOf" : [ { "maxLength": 2 }, { "minLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one anyOf valid", "data": "foobar", "valid": true }, { "description": "both anyOf invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf with boolean schemas, all true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "anyOf": [true, true] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, some true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "anyOf": [true, false] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, all false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "anyOf": [false, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf complex types", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "anyOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first anyOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second anyOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both anyOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "neither anyOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "anyOf with one empty schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "anyOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is valid", "data": 123, "valid": true } ] }, { "description": "nested anyOf, to check validation semantics", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "anyOf": [ { "anyOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] const.json100640000766000024 3017515240201330 24251 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "const validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": 2 }, "tests": [ { "description": "same value is valid", "data": 2, "valid": true }, { "description": "another value is invalid", "data": 5, "valid": false }, { "description": "another type is invalid", "data": "a", "valid": false } ] }, { "description": "const with object", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": {"foo": "bar", "baz": "bax"} }, "tests": [ { "description": "same object is valid", "data": {"foo": "bar", "baz": "bax"}, "valid": true }, { "description": "same object with different property order is valid", "data": {"baz": "bax", "foo": "bar"}, "valid": true }, { "description": "another object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "another type is invalid", "data": [1, 2], "valid": false } ] }, { "description": "const with array", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": [{ "foo": "bar" }] }, "tests": [ { "description": "same array is valid", "data": [{"foo": "bar"}], "valid": true }, { "description": "another array item is invalid", "data": [2], "valid": false }, { "description": "array with additional items is invalid", "data": [1, 2, 3], "valid": false } ] }, { "description": "const with null", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": null }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "not null is invalid", "data": 0, "valid": false } ] }, { "description": "const with false does not match 0", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": false }, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "const with true does not match 1", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": true }, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "const with [false] does not match [0]", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": [false] }, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "const with [true] does not match [1]", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": [true] }, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "const with {\"a\": false} does not match {\"a\": 0}", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": {"a": false} }, "tests": [ { "description": "{\"a\": false} is valid", "data": {"a": false}, "valid": true }, { "description": "{\"a\": 0} is invalid", "data": {"a": 0}, "valid": false }, { "description": "{\"a\": 0.0} is invalid", "data": {"a": 0.0}, "valid": false } ] }, { "description": "const with {\"a\": true} does not match {\"a\": 1}", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": {"a": true} }, "tests": [ { "description": "{\"a\": true} is valid", "data": {"a": true}, "valid": true }, { "description": "{\"a\": 1} is invalid", "data": {"a": 1}, "valid": false }, { "description": "{\"a\": 1.0} is invalid", "data": {"a": 1.0}, "valid": false } ] }, { "description": "const with 0 does not match other zero-like types", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": 0 }, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "empty string is invalid", "data": "", "valid": false } ] }, { "description": "const with 1 does not match true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": 1 }, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "const with -2.0 matches integer and float types", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": -2.0 }, "tests": [ { "description": "integer -2 is valid", "data": -2, "valid": true }, { "description": "integer 2 is invalid", "data": 2, "valid": false }, { "description": "float -2.0 is valid", "data": -2.0, "valid": true }, { "description": "float 2.0 is invalid", "data": 2.0, "valid": false }, { "description": "float -2.00001 is invalid", "data": -2.00001, "valid": false } ] }, { "description": "float and integers are equal up to 64-bit representation limits", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": 9007199254740992 }, "tests": [ { "description": "integer is valid", "data": 9007199254740992, "valid": true }, { "description": "integer minus one is invalid", "data": 9007199254740991, "valid": false }, { "description": "float is valid", "data": 9007199254740992.0, "valid": true }, { "description": "float minus one is invalid", "data": 9007199254740991.0, "valid": false } ] }, { "description": "nul characters in strings", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": "hello\u0000there" }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] }, { "description": "characters with the same visual representation but different codepoint", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": "μ", "$comment": "U+03BC" }, "tests": [ { "description": "character uses the same codepoint", "data": "μ", "comment": "U+03BC", "valid": true }, { "description": "character looks the same but uses a different codepoint", "data": "µ", "comment": "U+00B5", "valid": false } ] }, { "description": "characters with the same visual representation, but different number of codepoints", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "const": "ä", "$comment": "U+00E4" }, "tests": [ { "description": "character uses the same codepoint", "data": "ä", "comment": "U+00E4", "valid": true }, { "description": "character looks the same but uses combining marks", "data": "ä", "comment": "a, U+0308", "valid": false } ] } ] items.json100640000766000024 2102315240201330 24234 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "a schema given for items", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": {"type": "integer"} }, "tests": [ { "description": "valid items", "data": [ 1, 2, 3 ], "valid": true }, { "description": "wrong type of items", "data": [1, "x"], "valid": false }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "length": 1 }, "valid": true } ] }, { "description": "an array of schemas for items", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ {"type": "integer"}, {"type": "string"} ] }, "tests": [ { "description": "correct types", "data": [ 1, "foo" ], "valid": true }, { "description": "wrong types", "data": [ "foo", 1 ], "valid": false }, { "description": "incomplete array of items", "data": [ 1 ], "valid": true }, { "description": "array with additional items", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array", "data": [ ], "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "1": "valid", "length": 2 }, "valid": true } ] }, { "description": "items with boolean schema (true)", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": true }, "tests": [ { "description": "any array is valid", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items with boolean schema (false)", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": false }, "tests": [ { "description": "any non-empty array is invalid", "data": [ 1, "foo", true ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items with boolean schemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [true, false] }, "tests": [ { "description": "array with one item is valid", "data": [ 1 ], "valid": true }, { "description": "array with two items is invalid", "data": [ 1, "foo" ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items and subitems", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "item": { "type": "array", "additionalItems": false, "items": [ { "$ref": "#/$defs/sub-item" }, { "$ref": "#/$defs/sub-item" } ] }, "sub-item": { "type": "object", "required": ["foo"] } }, "type": "array", "additionalItems": false, "items": [ { "$ref": "#/$defs/item" }, { "$ref": "#/$defs/item" }, { "$ref": "#/$defs/item" } ] }, "tests": [ { "description": "valid items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": true }, { "description": "too many items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "too many sub-items", "data": [ [ {"foo": null}, {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong item", "data": [ {"foo": null}, [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong sub-item", "data": [ [ {}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "fewer items is valid", "data": [ [ {"foo": null} ], [ {"foo": null} ] ], "valid": true } ] }, { "description": "nested items", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" } } } } }, "tests": [ { "description": "valid nested array", "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], "valid": true }, { "description": "nested array with invalid type", "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], "valid": false }, { "description": "not deep enough", "data": [[[1], [2],[3]], [[4], [5], [6]]], "valid": false } ] }, { "description": "single-form items with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] }, { "description": "array-form items with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "type": "null" } ] }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] oneOf.json100640000766000024 1767315240201330 24201 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "oneOf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "oneOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first oneOf valid", "data": 1, "valid": true }, { "description": "second oneOf valid", "data": 2.5, "valid": true }, { "description": "both oneOf valid", "data": 3, "valid": false }, { "description": "neither oneOf valid", "data": 1.5, "valid": false } ] }, { "description": "oneOf with base schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "oneOf" : [ { "minLength": 2 }, { "maxLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one oneOf valid", "data": "foobar", "valid": true }, { "description": "both oneOf valid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "oneOf": [true, true, true] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, one true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "oneOf": [true, false, false] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "oneOf with boolean schemas, more than one true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "oneOf": [true, true, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "oneOf": [false, false, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf complex types", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "oneOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second oneOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both oneOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": false }, { "description": "neither oneOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "oneOf with empty schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "oneOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "one valid - valid", "data": "foo", "valid": true }, { "description": "both valid - invalid", "data": 123, "valid": false } ] }, { "description": "oneOf with required", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "oneOf": [ { "required": ["foo", "bar"] }, { "required": ["foo", "baz"] } ] }, "tests": [ { "description": "both invalid - invalid", "data": {"bar": 2}, "valid": false }, { "description": "first valid - valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "second valid - valid", "data": {"foo": 1, "baz": 3}, "valid": true }, { "description": "both valid - invalid", "data": {"foo": 1, "bar": 2, "baz" : 3}, "valid": false } ] }, { "description": "oneOf with missing optional property", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "oneOf": [ { "properties": { "bar": true, "baz": true }, "required": ["bar"] }, { "properties": { "foo": true }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid", "data": {"bar": 8}, "valid": true }, { "description": "second oneOf valid", "data": {"foo": "foo"}, "valid": true }, { "description": "both oneOf valid", "data": {"foo": "foo", "bar": 8}, "valid": false }, { "description": "neither oneOf valid", "data": {"baz": "quux"}, "valid": false } ] }, { "description": "nested oneOf, to check validation semantics", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "oneOf": [ { "oneOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] allOf.json100640000766000024 2077515240201330 24147 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "allOf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "allOf", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "mismatch second", "data": {"foo": "baz"}, "valid": false }, { "description": "mismatch first", "data": {"bar": 2}, "valid": false }, { "description": "wrong type", "data": {"foo": "baz", "bar": "quux"}, "valid": false } ] }, { "description": "allOf with base schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"bar": {"type": "integer"}}, "required": ["bar"], "allOf" : [ { "properties": { "foo": {"type": "string"} }, "required": ["foo"] }, { "properties": { "baz": {"type": "null"} }, "required": ["baz"] } ] }, "tests": [ { "description": "valid", "data": {"foo": "quux", "bar": 2, "baz": null}, "valid": true }, { "description": "mismatch base schema", "data": {"foo": "quux", "baz": null}, "valid": false }, { "description": "mismatch first allOf", "data": {"bar": 2, "baz": null}, "valid": false }, { "description": "mismatch second allOf", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "mismatch both", "data": {"bar": 2}, "valid": false } ] }, { "description": "allOf simple types", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ {"maximum": 30}, {"minimum": 20} ] }, "tests": [ { "description": "valid", "data": 25, "valid": true }, { "description": "mismatch one", "data": 35, "valid": false } ] }, { "description": "allOf with boolean schemas, all true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [true, true] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "allOf with boolean schemas, some false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [true, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with boolean schemas, all false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [false, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with one empty schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with two empty schemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ {}, {} ] }, "tests": [ { "description": "any data is valid", "data": 1, "valid": true } ] }, { "description": "allOf with the first empty schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ {}, { "type": "number" } ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "allOf with the last empty schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "nested allOf, to check validation semantics", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "allOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] }, { "description": "allOf combined with anyOf, oneOf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "multipleOf": 2 } ], "anyOf": [ { "multipleOf": 3 } ], "oneOf": [ { "multipleOf": 5 } ] }, "tests": [ { "description": "allOf: false, anyOf: false, oneOf: false", "data": 1, "valid": false }, { "description": "allOf: false, anyOf: false, oneOf: true", "data": 5, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: false", "data": 3, "valid": false }, { "description": "allOf: false, anyOf: true, oneOf: true", "data": 15, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: false", "data": 2, "valid": false }, { "description": "allOf: true, anyOf: false, oneOf: true", "data": 10, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: false", "data": 6, "valid": false }, { "description": "allOf: true, anyOf: true, oneOf: true", "data": 30, "valid": true } ] } ] anyOf.json100640000766000024 1252515240201330 24160 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "anyOf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first anyOf valid", "data": 1, "valid": true }, { "description": "second anyOf valid", "data": 2.5, "valid": true }, { "description": "both anyOf valid", "data": 3, "valid": true }, { "description": "neither anyOf valid", "data": 1.5, "valid": false } ] }, { "description": "anyOf with base schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "anyOf" : [ { "maxLength": 2 }, { "minLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one anyOf valid", "data": "foobar", "valid": true }, { "description": "both anyOf invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf with boolean schemas, all true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [true, true] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, some true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [true, false] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "anyOf with boolean schemas, all false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [false, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "anyOf complex types", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first anyOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second anyOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both anyOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": true }, { "description": "neither anyOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "anyOf with one empty schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "string is valid", "data": "foo", "valid": true }, { "description": "number is valid", "data": 123, "valid": true } ] }, { "description": "nested anyOf, to check validation semantics", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "anyOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] const.json100640000766000024 3017515240201330 24233 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "const validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": 2 }, "tests": [ { "description": "same value is valid", "data": 2, "valid": true }, { "description": "another value is invalid", "data": 5, "valid": false }, { "description": "another type is invalid", "data": "a", "valid": false } ] }, { "description": "const with object", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": {"foo": "bar", "baz": "bax"} }, "tests": [ { "description": "same object is valid", "data": {"foo": "bar", "baz": "bax"}, "valid": true }, { "description": "same object with different property order is valid", "data": {"baz": "bax", "foo": "bar"}, "valid": true }, { "description": "another object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "another type is invalid", "data": [1, 2], "valid": false } ] }, { "description": "const with array", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": [{ "foo": "bar" }] }, "tests": [ { "description": "same array is valid", "data": [{"foo": "bar"}], "valid": true }, { "description": "another array item is invalid", "data": [2], "valid": false }, { "description": "array with additional items is invalid", "data": [1, 2, 3], "valid": false } ] }, { "description": "const with null", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": null }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "not null is invalid", "data": 0, "valid": false } ] }, { "description": "const with false does not match 0", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": false }, "tests": [ { "description": "false is valid", "data": false, "valid": true }, { "description": "integer zero is invalid", "data": 0, "valid": false }, { "description": "float zero is invalid", "data": 0.0, "valid": false } ] }, { "description": "const with true does not match 1", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": true }, "tests": [ { "description": "true is valid", "data": true, "valid": true }, { "description": "integer one is invalid", "data": 1, "valid": false }, { "description": "float one is invalid", "data": 1.0, "valid": false } ] }, { "description": "const with [false] does not match [0]", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": [false] }, "tests": [ { "description": "[false] is valid", "data": [false], "valid": true }, { "description": "[0] is invalid", "data": [0], "valid": false }, { "description": "[0.0] is invalid", "data": [0.0], "valid": false } ] }, { "description": "const with [true] does not match [1]", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": [true] }, "tests": [ { "description": "[true] is valid", "data": [true], "valid": true }, { "description": "[1] is invalid", "data": [1], "valid": false }, { "description": "[1.0] is invalid", "data": [1.0], "valid": false } ] }, { "description": "const with {\"a\": false} does not match {\"a\": 0}", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": {"a": false} }, "tests": [ { "description": "{\"a\": false} is valid", "data": {"a": false}, "valid": true }, { "description": "{\"a\": 0} is invalid", "data": {"a": 0}, "valid": false }, { "description": "{\"a\": 0.0} is invalid", "data": {"a": 0.0}, "valid": false } ] }, { "description": "const with {\"a\": true} does not match {\"a\": 1}", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": {"a": true} }, "tests": [ { "description": "{\"a\": true} is valid", "data": {"a": true}, "valid": true }, { "description": "{\"a\": 1} is invalid", "data": {"a": 1}, "valid": false }, { "description": "{\"a\": 1.0} is invalid", "data": {"a": 1.0}, "valid": false } ] }, { "description": "const with 0 does not match other zero-like types", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": 0 }, "tests": [ { "description": "false is invalid", "data": false, "valid": false }, { "description": "integer zero is valid", "data": 0, "valid": true }, { "description": "float zero is valid", "data": 0.0, "valid": true }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "empty string is invalid", "data": "", "valid": false } ] }, { "description": "const with 1 does not match true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": 1 }, "tests": [ { "description": "true is invalid", "data": true, "valid": false }, { "description": "integer one is valid", "data": 1, "valid": true }, { "description": "float one is valid", "data": 1.0, "valid": true } ] }, { "description": "const with -2.0 matches integer and float types", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": -2.0 }, "tests": [ { "description": "integer -2 is valid", "data": -2, "valid": true }, { "description": "integer 2 is invalid", "data": 2, "valid": false }, { "description": "float -2.0 is valid", "data": -2.0, "valid": true }, { "description": "float 2.0 is invalid", "data": 2.0, "valid": false }, { "description": "float -2.00001 is invalid", "data": -2.00001, "valid": false } ] }, { "description": "float and integers are equal up to 64-bit representation limits", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": 9007199254740992 }, "tests": [ { "description": "integer is valid", "data": 9007199254740992, "valid": true }, { "description": "integer minus one is invalid", "data": 9007199254740991, "valid": false }, { "description": "float is valid", "data": 9007199254740992.0, "valid": true }, { "description": "float minus one is invalid", "data": 9007199254740991.0, "valid": false } ] }, { "description": "nul characters in strings", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": "hello\u0000there" }, "tests": [ { "description": "match string with nul", "data": "hello\u0000there", "valid": true }, { "description": "do not match string lacking nul", "data": "hellothere", "valid": false } ] }, { "description": "characters with the same visual representation but different codepoint", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": "μ", "$comment": "U+03BC" }, "tests": [ { "description": "character uses the same codepoint", "data": "μ", "comment": "U+03BC", "valid": true }, { "description": "character looks the same but uses a different codepoint", "data": "µ", "comment": "U+00B5", "valid": false } ] }, { "description": "characters with the same visual representation, but different number of codepoints", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "const": "ä", "$comment": "U+00E4" }, "tests": [ { "description": "character uses the same codepoint", "data": "ä", "comment": "U+00E4", "valid": true }, { "description": "character looks the same but uses combining marks", "data": "ä", "comment": "a, U+0308", "valid": false } ] } ] items.json100640000766000024 2177115240201330 24230 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "a schema given for items", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "items": {"type": "integer"} }, "tests": [ { "description": "valid items", "data": [ 1, 2, 3 ], "valid": true }, { "description": "wrong type of items", "data": [1, "x"], "valid": false }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "length": 1 }, "valid": true } ] }, { "description": "items with boolean schema (true)", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "items": true }, "tests": [ { "description": "any array is valid", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items with boolean schema (false)", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "items": false }, "tests": [ { "description": "any non-empty array is invalid", "data": [ 1, "foo", true ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items and subitems", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "item": { "type": "array", "items": false, "prefixItems": [ { "$ref": "#/$defs/sub-item" }, { "$ref": "#/$defs/sub-item" } ] }, "sub-item": { "type": "object", "required": ["foo"] } }, "type": "array", "items": false, "prefixItems": [ { "$ref": "#/$defs/item" }, { "$ref": "#/$defs/item" }, { "$ref": "#/$defs/item" } ] }, "tests": [ { "description": "valid items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": true }, { "description": "too many items", "data": [ [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "too many sub-items", "data": [ [ {"foo": null}, {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong item", "data": [ {"foo": null}, [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "wrong sub-item", "data": [ [ {}, {"foo": null} ], [ {"foo": null}, {"foo": null} ], [ {"foo": null}, {"foo": null} ] ], "valid": false }, { "description": "fewer items is valid", "data": [ [ {"foo": null} ], [ {"foo": null} ] ], "valid": true } ] }, { "description": "nested items", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" } } } } }, "tests": [ { "description": "valid nested array", "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], "valid": true }, { "description": "nested array with invalid type", "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], "valid": false }, { "description": "not deep enough", "data": [[[1], [2],[3]], [[4], [5], [6]]], "valid": false } ] }, { "description": "prefixItems with no additional items allowed", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [{}, {}, {}], "items": false }, "tests": [ { "description": "empty array", "data": [ ], "valid": true }, { "description": "fewer number of items present (1)", "data": [ 1 ], "valid": true }, { "description": "fewer number of items present (2)", "data": [ 1, 2 ], "valid": true }, { "description": "equal number of items present", "data": [ 1, 2, 3 ], "valid": true }, { "description": "additional items are not permitted", "data": [ 1, 2, 3, 4 ], "valid": false } ] }, { "description": "items does not look in applicators, valid case", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "prefixItems": [ { "minimum": 3 } ] } ], "items": { "minimum": 5 } }, "tests": [ { "description": "prefixItems in allOf does not constrain items, invalid case", "data": [ 3, 5 ], "valid": false }, { "description": "prefixItems in allOf does not constrain items, valid case", "data": [ 5, 5 ], "valid": true } ] }, { "description": "prefixItems validation adjusts the starting index for items", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "type": "string" } ], "items": { "type": "integer" } }, "tests": [ { "description": "valid items", "data": [ "x", 2, 3 ], "valid": true }, { "description": "wrong type of second item", "data": [ "x", "y" ], "valid": false } ] }, { "description": "items with heterogeneous array", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [{}], "items": false }, "tests": [ { "description": "heterogeneous invalid instance", "data": [ "foo", "bar", 37 ], "valid": false }, { "description": "valid instance", "data": [ null ], "valid": true } ] }, { "description": "items with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "items": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] oneOf.json100640000766000024 1767315240201330 24163 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "oneOf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "oneOf": [ { "type": "integer" }, { "minimum": 2 } ] }, "tests": [ { "description": "first oneOf valid", "data": 1, "valid": true }, { "description": "second oneOf valid", "data": 2.5, "valid": true }, { "description": "both oneOf valid", "data": 3, "valid": false }, { "description": "neither oneOf valid", "data": 1.5, "valid": false } ] }, { "description": "oneOf with base schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "oneOf" : [ { "minLength": 2 }, { "maxLength": 4 } ] }, "tests": [ { "description": "mismatch base schema", "data": 3, "valid": false }, { "description": "one oneOf valid", "data": "foobar", "valid": true }, { "description": "both oneOf valid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "oneOf": [true, true, true] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, one true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "oneOf": [true, false, false] }, "tests": [ { "description": "any value is valid", "data": "foo", "valid": true } ] }, { "description": "oneOf with boolean schemas, more than one true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "oneOf": [true, true, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf with boolean schemas, all false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "oneOf": [false, false, false] }, "tests": [ { "description": "any value is invalid", "data": "foo", "valid": false } ] }, { "description": "oneOf complex types", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "oneOf": [ { "properties": { "bar": {"type": "integer"} }, "required": ["bar"] }, { "properties": { "foo": {"type": "string"} }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid (complex)", "data": {"bar": 2}, "valid": true }, { "description": "second oneOf valid (complex)", "data": {"foo": "baz"}, "valid": true }, { "description": "both oneOf valid (complex)", "data": {"foo": "baz", "bar": 2}, "valid": false }, { "description": "neither oneOf valid (complex)", "data": {"foo": 2, "bar": "quux"}, "valid": false } ] }, { "description": "oneOf with empty schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "oneOf": [ { "type": "number" }, {} ] }, "tests": [ { "description": "one valid - valid", "data": "foo", "valid": true }, { "description": "both valid - invalid", "data": 123, "valid": false } ] }, { "description": "oneOf with required", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "oneOf": [ { "required": ["foo", "bar"] }, { "required": ["foo", "baz"] } ] }, "tests": [ { "description": "both invalid - invalid", "data": {"bar": 2}, "valid": false }, { "description": "first valid - valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "second valid - valid", "data": {"foo": 1, "baz": 3}, "valid": true }, { "description": "both valid - invalid", "data": {"foo": 1, "bar": 2, "baz" : 3}, "valid": false } ] }, { "description": "oneOf with missing optional property", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "oneOf": [ { "properties": { "bar": true, "baz": true }, "required": ["bar"] }, { "properties": { "foo": true }, "required": ["foo"] } ] }, "tests": [ { "description": "first oneOf valid", "data": {"bar": 8}, "valid": true }, { "description": "second oneOf valid", "data": {"foo": "foo"}, "valid": true }, { "description": "both oneOf valid", "data": {"foo": "foo", "bar": 8}, "valid": false }, { "description": "neither oneOf valid", "data": {"baz": "quux"}, "valid": false } ] }, { "description": "nested oneOf, to check validation semantics", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "oneOf": [ { "oneOf": [ { "type": "null" } ] } ] }, "tests": [ { "description": "null is valid", "data": null, "valid": true }, { "description": "anything non-null is invalid", "data": 123, "valid": false } ] } ] divisibleBy.json100640000766000024 323415240201330 24665 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "by int", "schema": {"divisibleBy": 2}, "tests": [ { "description": "int by int", "data": 10, "valid": true }, { "description": "int by int fail", "data": 7, "valid": false }, { "description": "ignores non-numbers", "data": "foo", "valid": true } ] }, { "description": "by number", "schema": {"divisibleBy": 1.5}, "tests": [ { "description": "zero is divisible by anything (except 0)", "data": 0, "valid": true }, { "description": "4.5 is divisible by 1.5", "data": 4.5, "valid": true }, { "description": "-4.5 is divisible by 1.5", "data": -4.5, "valid": true }, { "description": "35 is not divisible by 1.5", "data": 35, "valid": false } ] }, { "description": "by small number", "schema": {"divisibleBy": 0.0001}, "tests": [ { "description": "0.0075 is divisible by 0.0001", "data": 0.0075, "valid": true }, { "description": "0.00751 is not divisible by 0.0001", "data": 0.00751, "valid": false } ] } ] uniqueItems.json100640000766000024 3076315240201330 24757 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "uniqueItems validation", "schema": {"uniqueItems": true}, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is invalid", "data": [1, 1], "valid": false }, { "description": "non-unique array of more than two integers is invalid", "data": [1, 2, 1], "valid": false }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": false }, { "description": "unique array of strings is valid", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "non-unique array of strings is invalid", "data": ["foo", "bar", "foo"], "valid": false }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is invalid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": false }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is invalid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": false }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is invalid", "data": [["foo"], ["foo"]], "valid": false }, { "description": "non-unique array of more than two arrays is invalid", "data": [["foo"], ["bar"], ["foo"]], "valid": false }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "[1] and [true] are unique", "data": [[1], [true]], "valid": true }, { "description": "[0] and [false] are unique", "data": [[0], [false]], "valid": true }, { "description": "nested [1] and [true] are unique", "data": [[[1], "foo"], [[true], "foo"]], "valid": true }, { "description": "nested [0] and [false] are unique", "data": [[[0], "foo"], [[false], "foo"]], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1], "valid": true }, { "description": "non-unique heterogeneous types are invalid", "data": [{}, [1], true, null, {}, 1], "valid": false }, { "description": "{\"a\": false} and {\"a\": 0} are unique", "data": [{"a": false}, {"a": 0}], "valid": true }, { "description": "{\"a\": true} and {\"a\": 1} are unique", "data": [{"a": true}, {"a": 1}], "valid": true } ] }, { "description": "uniqueItems with an array of items", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is not valid", "data": [false, true, "foo", "foo"], "valid": false }, { "description": "non-unique array extended from [true, false] is not valid", "data": [true, false, "foo", "foo"], "valid": false } ] }, { "description": "uniqueItems with an array of items and additionalItems=false", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] }, { "description": "uniqueItems=false validation", "schema": { "uniqueItems": false }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is valid", "data": [1, 1], "valid": true }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": true }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": true }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": true }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is valid", "data": [["foo"], ["foo"]], "valid": true }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1], "valid": true }, { "description": "non-unique heterogeneous types are valid", "data": [{}, [1], true, null, {}, 1], "valid": true } ] }, { "description": "uniqueItems=false with an array of items", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is valid", "data": [false, true, "foo", "foo"], "valid": true }, { "description": "non-unique array extended from [true, false] is valid", "data": [true, false, "foo", "foo"], "valid": true } ] }, { "description": "uniqueItems=false with an array of items and additionalItems=false", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] } ] definitions.json100640000766000024 131715240201330 24734 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "validate definition against metaschema", "schema": {"$ref": "http://json-schema.org/draft-04/schema#"}, "tests": [ { "description": "valid definition schema", "data": { "definitions": { "foo": {"type": "integer"} } }, "valid": true }, { "description": "invalid definition schema", "data": { "definitions": { "foo": {"type": 1} } }, "valid": false } ] } ] optional000755000766000024 015240201330 23215 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4id.json100640000766000024 326715240201330 24650 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional[ { "description": "id inside an enum is not a real identifier", "comment": "the implementation must not be confused by an id buried in the enum", "schema": { "definitions": { "id_in_enum": { "enum": [ { "id": "https://localhost:1234/my_identifier.json", "type": "null" } ] }, "real_id_in_schema": { "id": "https://localhost:1234/my_identifier.json", "type": "string" }, "zzz_id_in_const": { "const": { "id": "https://localhost:1234/my_identifier.json", "type": "null" } } }, "anyOf": [ { "$ref": "#/definitions/id_in_enum" }, { "$ref": "https://localhost:1234/my_identifier.json" } ] }, "tests": [ { "description": "exact match to enum, and type matches", "data": { "id": "https://localhost:1234/my_identifier.json", "type": "null" }, "valid": true }, { "description": "match $ref to id", "data": "a string to match #/definitions/id_in_enum", "valid": true }, { "description": "no match on enum or $ref to id", "data": 1, "valid": false } ] } ] uniqueItems.json100640000766000024 3330215240201330 24750 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "uniqueItems validation", "schema": {"uniqueItems": true}, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is invalid", "data": [1, 1], "valid": false }, { "description": "non-unique array of more than two integers is invalid", "data": [1, 2, 1], "valid": false }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": false }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of strings is valid", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "non-unique array of strings is invalid", "data": ["foo", "bar", "foo"], "valid": false }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is invalid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": false }, { "description": "property order of array of objects is ignored", "data": [{"foo": "bar", "bar": "foo"}, {"bar": "foo", "foo": "bar"}], "valid": false }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is invalid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": false }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is invalid", "data": [["foo"], ["foo"]], "valid": false }, { "description": "non-unique array of more than two arrays is invalid", "data": [["foo"], ["bar"], ["foo"]], "valid": false }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "[1] and [true] are unique", "data": [[1], [true]], "valid": true }, { "description": "[0] and [false] are unique", "data": [[0], [false]], "valid": true }, { "description": "nested [1] and [true] are unique", "data": [[[1], "foo"], [[true], "foo"]], "valid": true }, { "description": "nested [0] and [false] are unique", "data": [[[0], "foo"], [[false], "foo"]], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1, "{}"], "valid": true }, { "description": "non-unique heterogeneous types are invalid", "data": [{}, [1], true, null, {}, 1], "valid": false }, { "description": "different objects are unique", "data": [{"a": 1, "b": 2}, {"a": 2, "b": 1}], "valid": true }, { "description": "objects are non-unique despite key order", "data": [{"a": 1, "b": 2}, {"b": 2, "a": 1}], "valid": false }, { "description": "{\"a\": false} and {\"a\": 0} are unique", "data": [{"a": false}, {"a": 0}], "valid": true }, { "description": "{\"a\": true} and {\"a\": 1} are unique", "data": [{"a": true}, {"a": 1}], "valid": true } ] }, { "description": "uniqueItems with an array of items", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is not valid", "data": [false, true, "foo", "foo"], "valid": false }, { "description": "non-unique array extended from [true, false] is not valid", "data": [true, false, "foo", "foo"], "valid": false } ] }, { "description": "uniqueItems with an array of items and additionalItems=false", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] }, { "description": "uniqueItems=false validation", "schema": { "uniqueItems": false }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is valid", "data": [1, 1], "valid": true }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": true }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": true }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": true }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is valid", "data": [["foo"], ["foo"]], "valid": true }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1], "valid": true }, { "description": "non-unique heterogeneous types are valid", "data": [{}, [1], true, null, {}, 1], "valid": true } ] }, { "description": "uniqueItems=false with an array of items", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is valid", "data": [false, true, "foo", "foo"], "valid": true }, { "description": "non-unique array extended from [true, false] is valid", "data": [true, false, "foo", "foo"], "valid": true } ] }, { "description": "uniqueItems=false with an array of items and additionalItems=false", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] } ] definitions.json100640000766000024 131715240201330 24736 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "validate definition against metaschema", "schema": {"$ref": "http://json-schema.org/draft-06/schema#"}, "tests": [ { "description": "valid definition schema", "data": { "definitions": { "foo": {"type": "integer"} } }, "valid": true }, { "description": "invalid definition schema", "data": { "definitions": { "foo": {"type": 1} } }, "valid": false } ] } ] optional000755000766000024 015240201330 23217 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6id.json100640000766000024 1010315240201330 24655 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional[ { "description": "id inside an enum is not a real identifier", "comment": "the implementation must not be confused by an id buried in the enum", "schema": { "definitions": { "id_in_enum": { "enum": [ { "$id": "https://localhost:1234/id/my_identifier.json", "type": "null" } ] }, "real_id_in_schema": { "$id": "https://localhost:1234/id/my_identifier.json", "type": "string" }, "zzz_id_in_const": { "const": { "$id": "https://localhost:1234/id/my_identifier.json", "type": "null" } } }, "anyOf": [ { "$ref": "#/definitions/id_in_enum" }, { "$ref": "https://localhost:1234/id/my_identifier.json" } ] }, "tests": [ { "description": "exact match to enum, and type matches", "data": { "$id": "https://localhost:1234/id/my_identifier.json", "type": "null" }, "valid": true }, { "description": "match $ref to id", "data": "a string to match #/definitions/id_in_enum", "valid": true }, { "description": "no match on enum or $ref to id", "data": 1, "valid": false } ] }, { "description": "non-schema object containing a plain-name $id property", "schema": { "definitions": { "const_not_anchor": { "const": { "$id": "#not_a_real_anchor" } } }, "oneOf": [ { "const": "skip not_a_real_anchor" }, { "allOf": [ { "not": { "const": "skip not_a_real_anchor" } }, { "$ref": "#/definitions/const_not_anchor" } ] } ] }, "tests": [ { "description": "skip traversing definition for a valid result", "data": "skip not_a_real_anchor", "valid": true }, { "description": "const at const_not_anchor does not match", "data": 1, "valid": false } ] }, { "description": "non-schema object containing an $id property", "schema": { "definitions": { "const_not_id": { "const": { "$id": "not_a_real_id" } } }, "oneOf": [ { "const":"skip not_a_real_id" }, { "allOf": [ { "not": { "const": "skip not_a_real_id" } }, { "$ref": "#/definitions/const_not_id" } ] } ] }, "tests": [ { "description": "skip traversing definition for a valid result", "data": "skip not_a_real_id", "valid": true }, { "description": "const at const_not_id does not match", "data": 1, "valid": false } ] } ] uniqueItems.json100640000766000024 3330215240201330 24752 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "uniqueItems validation", "schema": {"uniqueItems": true}, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is invalid", "data": [1, 1], "valid": false }, { "description": "non-unique array of more than two integers is invalid", "data": [1, 2, 1], "valid": false }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": false }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of strings is valid", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "non-unique array of strings is invalid", "data": ["foo", "bar", "foo"], "valid": false }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is invalid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": false }, { "description": "property order of array of objects is ignored", "data": [{"foo": "bar", "bar": "foo"}, {"bar": "foo", "foo": "bar"}], "valid": false }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is invalid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": false }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is invalid", "data": [["foo"], ["foo"]], "valid": false }, { "description": "non-unique array of more than two arrays is invalid", "data": [["foo"], ["bar"], ["foo"]], "valid": false }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "[1] and [true] are unique", "data": [[1], [true]], "valid": true }, { "description": "[0] and [false] are unique", "data": [[0], [false]], "valid": true }, { "description": "nested [1] and [true] are unique", "data": [[[1], "foo"], [[true], "foo"]], "valid": true }, { "description": "nested [0] and [false] are unique", "data": [[[0], "foo"], [[false], "foo"]], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1, "{}"], "valid": true }, { "description": "non-unique heterogeneous types are invalid", "data": [{}, [1], true, null, {}, 1], "valid": false }, { "description": "different objects are unique", "data": [{"a": 1, "b": 2}, {"a": 2, "b": 1}], "valid": true }, { "description": "objects are non-unique despite key order", "data": [{"a": 1, "b": 2}, {"b": 2, "a": 1}], "valid": false }, { "description": "{\"a\": false} and {\"a\": 0} are unique", "data": [{"a": false}, {"a": 0}], "valid": true }, { "description": "{\"a\": true} and {\"a\": 1} are unique", "data": [{"a": true}, {"a": 1}], "valid": true } ] }, { "description": "uniqueItems with an array of items", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is not valid", "data": [false, true, "foo", "foo"], "valid": false }, { "description": "non-unique array extended from [true, false] is not valid", "data": [true, false, "foo", "foo"], "valid": false } ] }, { "description": "uniqueItems with an array of items and additionalItems=false", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] }, { "description": "uniqueItems=false validation", "schema": { "uniqueItems": false }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is valid", "data": [1, 1], "valid": true }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": true }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": true }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": true }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is valid", "data": [["foo"], ["foo"]], "valid": true }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1], "valid": true }, { "description": "non-unique heterogeneous types are valid", "data": [{}, [1], true, null, {}, 1], "valid": true } ] }, { "description": "uniqueItems=false with an array of items", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is valid", "data": [false, true, "foo", "foo"], "valid": true }, { "description": "non-unique array extended from [true, false] is valid", "data": [true, false, "foo", "foo"], "valid": true } ] }, { "description": "uniqueItems=false with an array of items and additionalItems=false", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] } ] definitions.json100640000766000024 131715240201330 24737 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "validate definition against metaschema", "schema": {"$ref": "http://json-schema.org/draft-07/schema#"}, "tests": [ { "description": "valid definition schema", "data": { "definitions": { "foo": {"type": "integer"} } }, "valid": true }, { "description": "invalid definition schema", "data": { "definitions": { "foo": {"type": 1} } }, "valid": false } ] } ] optional000755000766000024 015240201330 23220 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7id.json100640000766000024 671215240201330 24651 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional[ { "description": "id inside an enum is not a real identifier", "comment": "the implementation must not be confused by an id buried in the enum", "schema": { "definitions": { "id_in_enum": { "enum": [ { "$id": "https://localhost:1234/id/my_identifier.json", "type": "null" } ] }, "real_id_in_schema": { "$id": "https://localhost:1234/id/my_identifier.json", "type": "string" }, "zzz_id_in_const": { "const": { "$id": "https://localhost:1234/id/my_identifier.json", "type": "null" } } }, "anyOf": [ { "$ref": "#/definitions/id_in_enum" }, { "$ref": "https://localhost:1234/id/my_identifier.json" } ] }, "tests": [ { "description": "exact match to enum, and type matches", "data": { "$id": "https://localhost:1234/id/my_identifier.json", "type": "null" }, "valid": true }, { "description": "match $ref to id", "data": "a string to match #/definitions/id_in_enum", "valid": true }, { "description": "no match on enum or $ref to id", "data": 1, "valid": false } ] }, { "description": "non-schema object containing a plain-name $id property", "schema": { "definitions": { "const_not_anchor": { "const": { "$id": "#not_a_real_anchor" } } }, "if": { "const": "skip not_a_real_anchor" }, "then": true, "else" : { "$ref": "#/definitions/const_not_anchor" } }, "tests": [ { "description": "skip traversing definition for a valid result", "data": "skip not_a_real_anchor", "valid": true }, { "description": "const at const_not_anchor does not match", "data": 1, "valid": false } ] }, { "description": "non-schema object containing an $id property", "schema": { "definitions": { "const_not_id": { "const": { "$id": "not_a_real_id" } } }, "if": { "const": "skip not_a_real_id" }, "then": true, "else" : { "$ref": "#/definitions/const_not_id" } }, "tests": [ { "description": "skip traversing definition for a valid result", "data": "skip not_a_real_id", "valid": true }, { "description": "const at const_not_id does not match", "data": 1, "valid": false } ] } ] uniqueItems.json100640000766000024 3330215240201330 24753 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "uniqueItems validation", "schema": {"uniqueItems": true}, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is invalid", "data": [1, 1], "valid": false }, { "description": "non-unique array of more than two integers is invalid", "data": [1, 2, 1], "valid": false }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": false }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of strings is valid", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "non-unique array of strings is invalid", "data": ["foo", "bar", "foo"], "valid": false }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is invalid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": false }, { "description": "property order of array of objects is ignored", "data": [{"foo": "bar", "bar": "foo"}, {"bar": "foo", "foo": "bar"}], "valid": false }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is invalid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": false }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is invalid", "data": [["foo"], ["foo"]], "valid": false }, { "description": "non-unique array of more than two arrays is invalid", "data": [["foo"], ["bar"], ["foo"]], "valid": false }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "[1] and [true] are unique", "data": [[1], [true]], "valid": true }, { "description": "[0] and [false] are unique", "data": [[0], [false]], "valid": true }, { "description": "nested [1] and [true] are unique", "data": [[[1], "foo"], [[true], "foo"]], "valid": true }, { "description": "nested [0] and [false] are unique", "data": [[[0], "foo"], [[false], "foo"]], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1, "{}"], "valid": true }, { "description": "non-unique heterogeneous types are invalid", "data": [{}, [1], true, null, {}, 1], "valid": false }, { "description": "different objects are unique", "data": [{"a": 1, "b": 2}, {"a": 2, "b": 1}], "valid": true }, { "description": "objects are non-unique despite key order", "data": [{"a": 1, "b": 2}, {"b": 2, "a": 1}], "valid": false }, { "description": "{\"a\": false} and {\"a\": 0} are unique", "data": [{"a": false}, {"a": 0}], "valid": true }, { "description": "{\"a\": true} and {\"a\": 1} are unique", "data": [{"a": true}, {"a": 1}], "valid": true } ] }, { "description": "uniqueItems with an array of items", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is not valid", "data": [false, true, "foo", "foo"], "valid": false }, { "description": "non-unique array extended from [true, false] is not valid", "data": [true, false, "foo", "foo"], "valid": false } ] }, { "description": "uniqueItems with an array of items and additionalItems=false", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] }, { "description": "uniqueItems=false validation", "schema": { "uniqueItems": false }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is valid", "data": [1, 1], "valid": true }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": true }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": true }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": true }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is valid", "data": [["foo"], ["foo"]], "valid": true }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1], "valid": true }, { "description": "non-unique heterogeneous types are valid", "data": [{}, [1], true, null, {}, 1], "valid": true } ] }, { "description": "uniqueItems=false with an array of items", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is valid", "data": [false, true, "foo", "foo"], "valid": true }, { "description": "non-unique array extended from [true, false] is valid", "data": [true, false, "foo", "foo"], "valid": true } ] }, { "description": "uniqueItems=false with an array of items and additionalItems=false", "schema": { "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] } ] duration.json100640000766000024 2116415240201330 24722 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of duration strings", "comment": "RFC 3339 Appendix A defines the ABNF grammar for ISO-8601 durations used by JSON Schema format 'duration'. These tests enforce only the syntax defined by that grammar.", "schema": { "$schema": "https://json-schema.org/v1", "format": "duration" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid duration string", "data": "P4DT12H30M5S", "valid": true }, { "description": "an invalid duration string", "data": "PT1D", "valid": false }, { "description": "must start with P", "data": "4DT12H30M5S", "valid": false }, { "description": "no elements present", "data": "P", "valid": false }, { "description": "no time elements present", "data": "P1YT", "valid": false }, { "description": "no date or time elements present", "data": "PT", "valid": false }, { "description": "elements out of order", "data": "P2D1Y", "valid": false }, { "description": "missing time separator", "data": "P1D2H", "valid": false }, { "description": "time element in the date position", "data": "P2S", "valid": false }, { "description": "four years duration", "data": "P4Y", "valid": true }, { "description": "zero time, in seconds", "data": "PT0S", "valid": true }, { "description": "zero time, in days", "data": "P0D", "valid": true }, { "description": "one month duration", "data": "P1M", "valid": true }, { "description": "one minute duration", "data": "PT1M", "valid": true }, { "description": "one and a half days, in hours", "data": "PT36H", "valid": true }, { "description": "one and a half days, in days and hours", "data": "P1DT12H", "valid": true }, { "description": "two weeks", "data": "P2W", "valid": true }, { "description": "weeks cannot be combined with other units", "data": "P1Y2W", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "P২Y", "valid": false }, { "description": "element without unit", "data": "P1", "valid": false }, { "description": "all date and time components", "data": "P1Y2M3DT4H5M6S", "valid": true }, { "description": "date components only", "data": "P1Y2M3D", "valid": true }, { "description": "time components only", "data": "PT1H2M3S", "valid": true }, { "description": "month and day", "data": "P1M2D", "valid": true }, { "description": "hour and minute", "data": "PT1H30M", "valid": true }, { "description": "multi-digit values in all components", "data": "P10Y10M10DT10H10M10S", "valid": true }, { "description": "fractional duration is not allowed by RFC 3339 ABNF", "comment": "numeric components use 1*DIGIT where DIGIT = %x30-39; '.' is not allowed", "data": "PT0.5S", "valid": false }, { "description": "leading whitespace is invalid", "data": " P1D", "valid": false }, { "description": "trailing whitespace is invalid", "data": "P1D ", "valid": false }, { "description": "empty string is invalid", "data": "", "valid": false }, { "description": "years and months can appear without days", "data": "P1Y2M", "valid": true }, { "description": "years and days cannot appear without months", "data": "P1Y2D", "valid": false }, { "description": "months and days can appear without years", "data": "P1M2D", "valid": true }, { "description": "hours and minutes can appear without seconds", "data": "PT1H2M", "valid": true }, { "description": "hours and seconds cannot appear without minutes", "data": "PT1H2S", "valid": false }, { "description": "minutes and seconds can appear without hour", "data": "PT1M2S", "valid": true }, { "description": "a leading sign is not allowed", "data": "-P1D", "valid": false }, { "description": "a number before the time separator has no unit", "data": "P1D2T3H", "valid": false }, { "description": "exponent notation is not allowed in a component", "data": "P1e2D", "valid": false }, { "description": "a trailing newline is invalid", "data": "P1D\n", "valid": false }, { "description": "weeks cannot be combined with a time component", "data": "P1WT1H", "valid": false }, { "description": "weeks cannot be combined with a zero-valued component", "data": "P0Y1W", "valid": false }, { "description": "a leading zero in a component is valid", "data": "P01D", "valid": true }, { "description": "a component with many digits is valid", "data": "P999999999999999999999999999999999999999999999999999999999999999999999999999999D", "valid": true }, { "description": "a comma as the decimal separator is invalid", "data": "PT0,5S", "valid": false }, { "description": "a sign inside a component is invalid", "data": "P-1D", "valid": false } ] } ] hostname.json100640000766000024 3765015240201330 24722 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of host names", "schema": { "$schema": "https://json-schema.org/v1", "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name", "data": "www.example.com", "valid": true }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label starting with digit", "data": "1host", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "single dot", "data": ".", "valid": false }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "IDN label separator", "data": "example\uff0ecom", "valid": false }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "starts with hyphen", "data": "-hostname", "valid": false }, { "description": "ends with hyphen", "data": "hostname-", "valid": false }, { "description": "contains underscore", "data": "host_name", "valid": false }, { "description": "exceeds maximum overall length (256)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": false }, { "description": "maximum label length (63)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": true }, { "description": "exceeds maximum label length (63)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl.com", "valid": false }, { "description": "trailing newline is invalid", "data": "example.com\n", "valid": false }, { "description": "invalid non-ASCII KELVIN SIGN (U+212A)", "data": "\u212Aelvin.example.com", "valid": false }, { "description": "consecutive hyphens inside a label", "data": "a--b.com", "valid": true } ] }, { "description": "validation of A-label (punycode) host names", "schema": { "$schema": "https://json-schema.org/v1", "format": "hostname" }, "tests": [ { "description": "invalid Punycode", "comment": "https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "xn--X", "valid": false }, { "description": "a valid host name (example.test in Hangul)", "data": "xn--9n2bp8q.xn--9t4b11yi5a", "valid": true }, { "description": "contains illegal char U+302E Hangul single dot tone mark", "data": "xn--07jt112bpxg.xn--9t4b11yi5a", "valid": false }, { "description": "Begins with a Spacing Combining Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-txk", "valid": false }, { "description": "Begins with a Nonspacing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-zed", "valid": false }, { "description": "Begins with an Enclosing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-6bf", "valid": false }, { "description": "Exceptions that are PVALID, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--zca29lwxobi7a", "valid": true }, { "description": "Exceptions that are PVALID, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--qmbc", "valid": true }, { "description": "Exceptions that are DISALLOWED, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--chb89f", "valid": false }, { "description": "Exceptions that are DISALLOWED, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6 Note: The two combining marks (U+302E and U+302F) are in the middle and not at the start", "data": "xn--07jceefgh4c", "valid": false }, { "description": "MIDDLE DOT with no preceding 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--al-0ea", "valid": false }, { "description": "MIDDLE DOT with nothing preceding", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--l-fda", "valid": false }, { "description": "MIDDLE DOT with no following 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--la-0ea", "valid": false }, { "description": "MIDDLE DOT with nothing following", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--l-gda", "valid": false }, { "description": "MIDDLE DOT with surrounding 'l's", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--ll-0ea", "valid": true }, { "description": "Greek KERAIA not followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--S-jib3p", "valid": false }, { "description": "Greek KERAIA not followed by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--wva3j", "valid": false }, { "description": "Greek KERAIA followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--wva3je", "valid": true }, { "description": "Hebrew GERESH not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--A-2hc5h", "valid": false }, { "description": "Hebrew GERESH not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--5db1e", "valid": false }, { "description": "Hebrew GERESH preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--4dbc5h", "valid": true }, { "description": "Hebrew GERSHAYIM not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--A-2hc8h", "valid": false }, { "description": "Hebrew GERSHAYIM not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--5db3e", "valid": false }, { "description": "Hebrew GERSHAYIM preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--4dbc8h", "valid": true }, { "description": "KATAKANA MIDDLE DOT with no Hiragana, Katakana, or Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--defabc-k64e", "valid": false }, { "description": "KATAKANA MIDDLE DOT with no other characters", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--vek", "valid": false }, { "description": "KATAKANA MIDDLE DOT with Hiragana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--k8j5u", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Katakana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--bck0j", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--vek778f", "valid": true }, { "description": "Arabic-Indic digits mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "xn--ngb6iyr", "valid": false }, { "description": "Arabic-Indic digits not mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "xn--ngba1o", "valid": true }, { "description": "Extended Arabic-Indic digits not mixed with Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.9", "data": "xn--0-gyc", "valid": true }, { "description": "ZERO WIDTH JOINER not preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--11b2er09f", "valid": false }, { "description": "ZERO WIDTH JOINER not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--02b508i", "valid": false }, { "description": "ZERO WIDTH JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--11b2ezcw70k", "valid": true }, { "description": "ZERO WIDTH NON-JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1", "data": "xn--11b2ezcs70k", "valid": true }, { "description": "ZERO WIDTH NON-JOINER not preceded by Virama but matches regexp", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1 https://www.w3.org/TR/alreq/#h_disjoining_enforcement", "data": "xn--ngba5hb2804a", "valid": true }, { "description": "contains \"--\" in the 3rd and 4th position", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "XN--aa---o47jg78q", "valid": false } ] } ] anchor.json100640000766000024 355615240201330 24671 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "$anchor inside an enum is not a real identifier", "comment": "the implementation must not be confused by an $anchor buried in the enum", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "anchor_in_enum": { "enum": [ { "$anchor": "my_anchor", "type": "null" } ] }, "real_identifier_in_schema": { "$anchor": "my_anchor", "type": "string" }, "zzz_anchor_in_const": { "const": { "$anchor": "my_anchor", "type": "null" } } }, "anyOf": [ { "$ref": "#/$defs/anchor_in_enum" }, { "$ref": "#my_anchor" } ] }, "tests": [ { "description": "exact match to enum, and type matches", "data": { "$anchor": "my_anchor", "type": "null" }, "valid": true }, { "description": "in implementations that strip $anchor, this may match either $def", "data": { "type": "null" }, "valid": false }, { "description": "match $ref to $anchor", "data": "a string to match #/$defs/anchor_in_enum", "valid": true }, { "description": "no match on enum or $ref to $anchor", "data": 1, "valid": false } ] } ] bignum.json100640000766000024 633015240201330 24671 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "integer", "schema": { "$schema": "https://json-schema.org/v1", "type": "integer" }, "tests": [ { "description": "a bignum is an integer", "data": 12345678910111213141516171819202122232425262728293031, "valid": true }, { "description": "a negative bignum is an integer", "data": -12345678910111213141516171819202122232425262728293031, "valid": true } ] }, { "description": "number", "schema": { "$schema": "https://json-schema.org/v1", "type": "number" }, "tests": [ { "description": "a bignum is a number", "data": 98249283749234923498293171823948729348710298301928331, "valid": true }, { "description": "a negative bignum is a number", "data": -98249283749234923498293171823948729348710298301928331, "valid": true } ] }, { "description": "string", "schema": { "$schema": "https://json-schema.org/v1", "type": "string" }, "tests": [ { "description": "a bignum is not a string", "data": 98249283749234923498293171823948729348710298301928331, "valid": false } ] }, { "description": "maximum integer comparison", "schema": { "$schema": "https://json-schema.org/v1", "maximum": 18446744073709551615 }, "tests": [ { "description": "comparison works for high numbers", "data": 18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision", "schema": { "$schema": "https://json-schema.org/v1", "exclusiveMaximum": 972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for high numbers", "data": 972783798187987123879878123.188781371, "valid": false } ] }, { "description": "minimum integer comparison", "schema": { "$schema": "https://json-schema.org/v1", "minimum": -18446744073709551615 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision on negative numbers", "schema": { "$schema": "https://json-schema.org/v1", "exclusiveMinimum": -972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -972783798187987123879878123.188781371, "valid": false } ] } ] draft2020-12000755000766000024 015240201330 22344 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotestree.json100640000766000024 63215240201330 24313 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "description": "tree schema, extensible", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/tree.json", "$dynamicAnchor": "node", "type": "object", "properties": { "data": true, "children": { "type": "array", "items": { "$dynamicRef": "#node" } } } } draft3000755000766000024 015240201330 21703 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotessubSchemas.json100640000766000024 25515240201330 25011 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft3{ "definitions": { "integer": { "type": "integer" }, "refToInteger": { "$ref": "#/definitions/integer" } } } subSchemas.json100640000766000024 25515240201330 25012 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft4{ "definitions": { "integer": { "type": "integer" }, "refToInteger": { "$ref": "#/definitions/integer" } } } subSchemas.json100640000766000024 25515240201330 25014 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft6{ "definitions": { "integer": { "type": "integer" }, "refToInteger": { "$ref": "#/definitions/integer" } } } subSchemas.json100640000766000024 25515240201330 25015 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft7{ "definitions": { "integer": { "type": "integer" }, "refToInteger": { "$ref": "#/definitions/integer" } } } urn-ref-string.json100640000766000024 20415240201330 24733 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$id": "urn:uuid:feebdaed-ffff-0000-ff01-0000deadbeef", "$defs": {"bar": {"type": "string"}}, "$ref": "#/$defs/bar" } anchor.json100640000766000024 665615240201330 24364 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "Location-independent identifier", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "#foo", "$defs": { "A": { "$anchor": "foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Location-independent identifier with absolute URI", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/bar#foo", "$defs": { "A": { "$id": "http://localhost:1234/draft2019-09/bar", "$anchor": "foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Location-independent identifier with base URI change in subschema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/root", "$ref": "http://localhost:1234/draft2019-09/nested.json#foo", "$defs": { "A": { "$id": "nested.json", "$defs": { "B": { "$anchor": "foo", "type": "integer" } } } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "same $anchor with different base uri", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/foobar", "$defs": { "A": { "$id": "child1", "allOf": [ { "$id": "child2", "$anchor": "my_anchor", "type": "number" }, { "$anchor": "my_anchor", "type": "string" } ] } }, "$ref": "child1#my_anchor" }, "tests": [ { "description": "$ref resolves to /$defs/A/allOf/1", "data": "a", "valid": true }, { "description": "$ref does not resolve to /$defs/A/allOf/0", "data": 1, "valid": false } ] } ] format.json100640000766000024 5263015240201330 24413 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "email format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "idn-email format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "idn-email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "regex format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "regex" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ipv4 format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "ipv6 format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "idn-hostname format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "idn-hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "hostname format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "date format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "date" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "date-time format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "time format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "json-pointer format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "relative-json-pointer format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "relative-json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "iri format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "iri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "iri-reference format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "iri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri-reference format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uri-template format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "uuid format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "uuid" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { "description": "duration format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "duration" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true } ] } ] anchor.json100640000766000024 665615240201330 24346 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "Location-independent identifier", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "#foo", "$defs": { "A": { "$anchor": "foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Location-independent identifier with absolute URI", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/bar#foo", "$defs": { "A": { "$id": "http://localhost:1234/draft2020-12/bar", "$anchor": "foo", "type": "integer" } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "Location-independent identifier with base URI change in subschema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/root", "$ref": "http://localhost:1234/draft2020-12/nested.json#foo", "$defs": { "A": { "$id": "nested.json", "$defs": { "B": { "$anchor": "foo", "type": "integer" } } } } }, "tests": [ { "data": 1, "description": "match", "valid": true }, { "data": "a", "description": "mismatch", "valid": false } ] }, { "description": "same $anchor with different base uri", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/foobar", "$defs": { "A": { "$id": "child1", "allOf": [ { "$id": "child2", "$anchor": "my_anchor", "type": "number" }, { "$anchor": "my_anchor", "type": "string" } ] } }, "$ref": "child1#my_anchor" }, "tests": [ { "description": "$ref resolves to /$defs/A/allOf/1", "data": "a", "valid": true }, { "description": "$ref does not resolve to /$defs/A/allOf/0", "data": 1, "valid": false } ] } ] format.json100640000766000024 6205415240201330 24376 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "email format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid email string is only an annotation by default", "data": "2962", "valid": true } ] }, { "description": "idn-email format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "idn-email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid idn-email string is only an annotation by default", "data": "2962", "valid": true } ] }, { "description": "regex format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "regex" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid regex string is only an annotation by default", "data": "^(abc]", "valid": true } ] }, { "description": "ipv4 format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid ipv4 string is only an annotation by default", "data": "127.0.0.0.1", "valid": true } ] }, { "description": "ipv6 format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid ipv6 string is only an annotation by default", "data": "12345::", "valid": true } ] }, { "description": "idn-hostname format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "idn-hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid idn-hostname string is only an annotation by default", "data": "〮실례.테스트", "valid": true } ] }, { "description": "hostname format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid hostname string is only an annotation by default", "data": "-a-host-name-that-starts-with--", "valid": true } ] }, { "description": "date format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "date" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid date string is only an annotation by default", "data": "06/19/1963", "valid": true } ] }, { "description": "date-time format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid date-time string is only an annotation by default", "data": "1990-02-31T15:59:60.123-08:00", "valid": true } ] }, { "description": "time format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid time string is only an annotation by default", "data": "08:30:06 PST", "valid": true } ] }, { "description": "json-pointer format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid json-pointer string is only an annotation by default", "data": "/foo/bar~", "valid": true } ] }, { "description": "relative-json-pointer format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "relative-json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid relative-json-pointer string is only an annotation by default", "data": "/foo/bar", "valid": true } ] }, { "description": "iri format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "iri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid iri string is only an annotation by default", "data": "http://2001:0db8:85a3:0000:0000:8a2e:0370:7334", "valid": true } ] }, { "description": "iri-reference format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "iri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid iri-reference string is only an annotation by default", "data": "\\\\WINDOWS\\filëßåré", "valid": true } ] }, { "description": "uri format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid uri string is only an annotation by default", "data": "//foo.bar/?baz=qux#quux", "valid": true } ] }, { "description": "uri-reference format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid uri-reference string is only an annotation by default", "data": "\\\\WINDOWS\\fileshare", "valid": true } ] }, { "description": "uri-template format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid uri-template string is only an annotation by default", "data": "http://example.com/dictionary/{term:1}/{term", "valid": true } ] }, { "description": "uuid format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "uuid" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid uuid string is only an annotation by default", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d1638", "valid": true } ] }, { "description": "duration format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "duration" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid duration string is only an annotation by default", "data": "PT1D", "valid": true } ] } ] dependencies.json100640000766000024 654015240201330 25051 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "dependencies", "schema": { "dependencies": {"bar": "foo"} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "multiple dependencies", "schema": { "dependencies": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "multiple dependencies subschema", "schema": { "dependencies": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false } ] } ] dependencies.json100640000766000024 1436415240201330 25075 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "dependencies", "schema": { "dependencies": {"bar": ["foo"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "multiple dependencies", "schema": { "dependencies": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "multiple dependencies subschema", "schema": { "dependencies": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false } ] }, { "description": "dependencies with escaped characters", "schema": { "dependencies": { "foo\nbar": ["foo\rbar"], "foo\tbar": { "minProperties": 4 }, "foo'bar": {"required": ["foo\"bar"]}, "foo\"bar": ["foo'bar"] } }, "tests": [ { "description": "valid object 1", "data": { "foo\nbar": 1, "foo\rbar": 2 }, "valid": true }, { "description": "valid object 2", "data": { "foo\tbar": 1, "a": 2, "b": 3, "c": 4 }, "valid": true }, { "description": "valid object 3", "data": { "foo'bar": 1, "foo\"bar": 2 }, "valid": true }, { "description": "invalid object 1", "data": { "foo\nbar": 1, "foo": 2 }, "valid": false }, { "description": "invalid object 2", "data": { "foo\tbar": 1, "a": 2 }, "valid": false }, { "description": "invalid object 3", "data": { "foo'bar": 1 }, "valid": false }, { "description": "invalid object 4", "data": { "foo\"bar": 2 }, "valid": false } ] }, { "description": "dependent subschema incompatible with root", "schema": { "properties": { "foo": {} }, "dependencies": { "foo": { "properties": { "bar": {} }, "additionalProperties": false } } }, "tests": [ { "description": "matches root", "data": {"foo": 1}, "valid": false }, { "description": "matches dependency", "data": {"bar": 1}, "valid": true }, { "description": "matches both", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "no dependency", "data": {"baz": 1}, "valid": true } ] } ] dependencies.json100640000766000024 1733715240201330 25102 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "dependencies", "schema": { "dependencies": {"bar": ["foo"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "dependencies with empty array", "schema": { "dependencies": {"bar": []} }, "tests": [ { "description": "empty object", "data": {}, "valid": true }, { "description": "object with one property", "data": {"bar": 2}, "valid": true }, { "description": "non-object is valid", "data": 1, "valid": true } ] }, { "description": "multiple dependencies", "schema": { "dependencies": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "multiple dependencies subschema", "schema": { "dependencies": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false } ] }, { "description": "dependencies with boolean subschemas", "schema": { "dependencies": { "foo": true, "bar": false } }, "tests": [ { "description": "object with property having schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property having schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "dependencies with escaped characters", "schema": { "dependencies": { "foo\nbar": ["foo\rbar"], "foo\tbar": { "minProperties": 4 }, "foo'bar": {"required": ["foo\"bar"]}, "foo\"bar": ["foo'bar"] } }, "tests": [ { "description": "valid object 1", "data": { "foo\nbar": 1, "foo\rbar": 2 }, "valid": true }, { "description": "valid object 2", "data": { "foo\tbar": 1, "a": 2, "b": 3, "c": 4 }, "valid": true }, { "description": "valid object 3", "data": { "foo'bar": 1, "foo\"bar": 2 }, "valid": true }, { "description": "invalid object 1", "data": { "foo\nbar": 1, "foo": 2 }, "valid": false }, { "description": "invalid object 2", "data": { "foo\tbar": 1, "a": 2 }, "valid": false }, { "description": "invalid object 3", "data": { "foo'bar": 1 }, "valid": false }, { "description": "invalid object 4", "data": { "foo\"bar": 2 }, "valid": false } ] }, { "description": "dependent subschema incompatible with root", "schema": { "properties": { "foo": {} }, "dependencies": { "foo": { "properties": { "bar": {} }, "additionalProperties": false } } }, "tests": [ { "description": "matches root", "data": {"foo": 1}, "valid": false }, { "description": "matches dependency", "data": {"bar": 1}, "valid": true }, { "description": "matches both", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "no dependency", "data": {"baz": 1}, "valid": true } ] } ] dependencies.json100640000766000024 1733715240201330 25103 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "dependencies", "schema": { "dependencies": {"bar": ["foo"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "dependencies with empty array", "schema": { "dependencies": {"bar": []} }, "tests": [ { "description": "empty object", "data": {}, "valid": true }, { "description": "object with one property", "data": {"bar": 2}, "valid": true }, { "description": "non-object is valid", "data": 1, "valid": true } ] }, { "description": "multiple dependencies", "schema": { "dependencies": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "multiple dependencies subschema", "schema": { "dependencies": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false } ] }, { "description": "dependencies with boolean subschemas", "schema": { "dependencies": { "foo": true, "bar": false } }, "tests": [ { "description": "object with property having schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property having schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "dependencies with escaped characters", "schema": { "dependencies": { "foo\nbar": ["foo\rbar"], "foo\tbar": { "minProperties": 4 }, "foo'bar": {"required": ["foo\"bar"]}, "foo\"bar": ["foo'bar"] } }, "tests": [ { "description": "valid object 1", "data": { "foo\nbar": 1, "foo\rbar": 2 }, "valid": true }, { "description": "valid object 2", "data": { "foo\tbar": 1, "a": 2, "b": 3, "c": 4 }, "valid": true }, { "description": "valid object 3", "data": { "foo'bar": 1, "foo\"bar": 2 }, "valid": true }, { "description": "invalid object 1", "data": { "foo\nbar": 1, "foo": 2 }, "valid": false }, { "description": "invalid object 2", "data": { "foo\tbar": 1, "a": 2 }, "valid": false }, { "description": "invalid object 3", "data": { "foo'bar": 1 }, "valid": false }, { "description": "invalid object 4", "data": { "foo\"bar": 2 }, "valid": false } ] }, { "description": "dependent subschema incompatible with root", "schema": { "properties": { "foo": {} }, "dependencies": { "foo": { "properties": { "bar": {} }, "additionalProperties": false } } }, "tests": [ { "description": "matches root", "data": {"foo": 1}, "valid": false }, { "description": "matches dependency", "data": {"bar": 1}, "valid": true }, { "description": "matches both", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "no dependency", "data": {"baz": 1}, "valid": true } ] } ] if-then-else.json100640000766000024 1735715240201330 24737 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "ignore if without then or else", "schema": { "if": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone if", "data": 0, "valid": true }, { "description": "valid when invalid against lone if", "data": "hello", "valid": true } ] }, { "description": "ignore then without if", "schema": { "then": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone then", "data": 0, "valid": true }, { "description": "valid when invalid against lone then", "data": "hello", "valid": true } ] }, { "description": "ignore else without if", "schema": { "else": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone else", "data": 0, "valid": true }, { "description": "valid when invalid against lone else", "data": "hello", "valid": true } ] }, { "description": "if and then without else", "schema": { "if": { "exclusiveMaximum": 0 }, "then": { "minimum": -10 } }, "tests": [ { "description": "valid through then", "data": -1, "valid": true }, { "description": "invalid through then", "data": -100, "valid": false }, { "description": "valid when if test fails", "data": 3, "valid": true } ] }, { "description": "if and else without then", "schema": { "if": { "exclusiveMaximum": 0 }, "else": { "multipleOf": 2 } }, "tests": [ { "description": "valid when if test passes", "data": -1, "valid": true }, { "description": "valid through else", "data": 4, "valid": true }, { "description": "invalid through else", "data": 3, "valid": false } ] }, { "description": "validate against correct branch, then vs else", "schema": { "if": { "exclusiveMaximum": 0 }, "then": { "minimum": -10 }, "else": { "multipleOf": 2 } }, "tests": [ { "description": "valid through then", "data": -1, "valid": true }, { "description": "invalid through then", "data": -100, "valid": false }, { "description": "valid through else", "data": 4, "valid": true }, { "description": "invalid through else", "data": 3, "valid": false } ] }, { "description": "non-interference across combined schemas", "schema": { "allOf": [ { "if": { "exclusiveMaximum": 0 } }, { "then": { "minimum": -10 } }, { "else": { "multipleOf": 2 } } ] }, "tests": [ { "description": "valid, but would have been invalid through then", "data": -100, "valid": true }, { "description": "valid, but would have been invalid through else", "data": 3, "valid": true } ] }, { "description": "if with boolean schema true", "schema": { "if": true, "then": { "const": "then" }, "else": { "const": "else" } }, "tests": [ { "description": "boolean schema true in if always chooses the then path (valid)", "data": "then", "valid": true }, { "description": "boolean schema true in if always chooses the then path (invalid)", "data": "else", "valid": false } ] }, { "description": "if with boolean schema false", "schema": { "if": false, "then": { "const": "then" }, "else": { "const": "else" } }, "tests": [ { "description": "boolean schema false in if always chooses the else path (invalid)", "data": "then", "valid": false }, { "description": "boolean schema false in if always chooses the else path (valid)", "data": "else", "valid": true } ] }, { "description": "if appears at the end when serialized (keyword processing sequence)", "schema": { "then": { "const": "yes" }, "else": { "const": "other" }, "if": { "maxLength": 4 } }, "tests": [ { "description": "yes redirects to then and passes", "data": "yes", "valid": true }, { "description": "other redirects to else and passes", "data": "other", "valid": true }, { "description": "no redirects to then and fails", "data": "no", "valid": false }, { "description": "invalid redirects to else and fails", "data": "invalid", "valid": false } ] }, { "description": "then: false fails when condition matches", "schema": { "if": { "const": 1 }, "then": false }, "tests": [ { "description": "matches if → then=false → invalid", "data": 1, "valid": false }, { "description": "does not match if → then ignored → valid", "data": 2, "valid": true } ] }, { "description": "else: false fails when condition does not match", "schema": { "if": { "const": 1 }, "else": false }, "tests": [ { "description": "matches if → else ignored → valid", "data": 1, "valid": true }, { "description": "does not match if → else executes → invalid", "data": 2, "valid": false } ] } ] dependentSchemas.json100640000766000024 1144515240201330 25060 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "single dependency", "schema": { "$schema": "https://json-schema.org/v1", "dependentSchemas": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "boolean subschemas", "schema": { "$schema": "https://json-schema.org/v1", "dependentSchemas": { "foo": true, "bar": false } }, "tests": [ { "description": "object with property having schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property having schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/v1", "dependentSchemas": { "foo\tbar": {"minProperties": 4}, "foo'bar": {"required": ["foo\"bar"]} } }, "tests": [ { "description": "quoted tab", "data": { "foo\tbar": 1, "a": 2, "b": 3, "c": 4 }, "valid": true }, { "description": "quoted quote", "data": { "foo'bar": {"foo\"bar": 1} }, "valid": false }, { "description": "quoted tab invalid under dependent schema", "data": { "foo\tbar": 1, "a": 2 }, "valid": false }, { "description": "quoted quote invalid under dependent schema", "data": {"foo'bar": 1}, "valid": false } ] }, { "description": "dependent subschema incompatible with root", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {} }, "dependentSchemas": { "foo": { "properties": { "bar": {} }, "additionalProperties": false } } }, "tests": [ { "description": "matches root", "data": {"foo": 1}, "valid": false }, { "description": "matches dependency", "data": {"bar": 1}, "valid": true }, { "description": "matches both", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "no dependency", "data": {"baz": 1}, "valid": true } ] } ] exclusiveMaximum.json100640000766000024 147415240201330 25134 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "exclusiveMaximum validation", "schema": { "$schema": "https://json-schema.org/v1", "exclusiveMaximum": 3.0 }, "tests": [ { "description": "below the exclusiveMaximum is valid", "data": 2.2, "valid": true }, { "description": "boundary point is invalid", "data": 3.0, "valid": false }, { "description": "above the exclusiveMaximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] exclusiveMinimum.json100640000766000024 147415240201330 25132 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "exclusiveMinimum validation", "schema": { "$schema": "https://json-schema.org/v1", "exclusiveMinimum": 1.1 }, "tests": [ { "description": "above the exclusiveMinimum is valid", "data": 1.2, "valid": true }, { "description": "boundary point is invalid", "data": 1.1, "valid": false }, { "description": "below the exclusiveMinimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] date-time.json100640000766000024 1407515240201330 24751 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of date-time strings", "schema": { "$schema": "https://json-schema.org/v1", "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date-time string", "data": "1963-06-19T08:30:06.283185Z", "valid": true }, { "description": "a valid date-time string without second fraction", "data": "1963-06-19T08:30:06Z", "valid": true }, { "description": "a valid date-time string with plus offset", "data": "1937-01-01T12:00:27.87+00:20", "valid": true }, { "description": "a valid date-time string with minus offset", "data": "1990-12-31T15:59:50.123-08:00", "valid": true }, { "description": "a valid date-time with a leap second, UTC", "data": "1998-12-31T23:59:60Z", "valid": true }, { "description": "a valid date-time with a leap second, with minus offset", "data": "1998-12-31T15:59:60.123-08:00", "valid": true }, { "description": "an invalid date-time past leap second, UTC", "data": "1998-12-31T23:59:61Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong minute, UTC", "data": "1998-12-31T23:58:60Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong hour, UTC", "data": "1998-12-31T22:59:60Z", "valid": false }, { "description": "an invalid day in date-time string", "data": "1990-02-31T15:59:59.123-08:00", "valid": false }, { "description": "an invalid offset in date-time string", "data": "1990-12-31T15:59:59-24:00", "valid": false }, { "description": "an invalid closing Z after time-zone offset", "data": "1963-06-19T08:30:06.28123+01:00Z", "valid": false }, { "description": "an invalid hour in date-time string", "data": "1990-12-31T24:00:00Z", "valid": false }, { "description": "an invalid minute in date-time string", "data": "1990-12-31T15:60:00Z", "valid": false }, { "description": "an invalid offset minute in date-time string", "data": "1990-12-31T10:00:00+10:60", "valid": false }, { "description": "an invalid date-time string", "data": "06/19/1963 08:30:06 PST", "valid": false }, { "description": "case-insensitive T and Z", "data": "1963-06-19t08:30:06.283185z", "valid": true }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350T01:01:01", "valid": false }, { "description": "invalid non-padded month dates", "data": "1963-6-19T08:30:06.283185Z", "valid": false }, { "description": "invalid non-padded day dates", "data": "1963-06-1T08:30:06.283185Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in date portion", "data": "1963-06-1৪T00:00:00Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in time portion", "data": "1963-06-11T0৪:00:00Z", "valid": false }, { "description": "invalid extended year", "data": "+11963-06-19T08:30:06.283185Z", "valid": false }, { "description": "a numeric offset without minutes is invalid", "data": "1985-04-12T23:20:50+01", "valid": false }, { "description": "hour 24 is invalid even with a leap second", "data": "2016-12-31T24:59:60+01:00", "valid": false }, { "description": "a second fraction of fifteen nines is valid", "data": "1985-04-12T00:59:59.999999999999999Z", "valid": true }, { "description": "a trailing newline is invalid", "data": "1985-04-12T23:20:50Z\n", "valid": false } ] } ] idn-email.json100640000766000024 1074415240201330 24736 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of an internationalized e-mail addresses", "schema": { "$schema": "https://json-schema.org/v1", "format": "idn-email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid idn e-mail (example@example.test in Hangul)", "data": "실례@실례.테스트", "valid": true }, { "description": "an invalid idn e-mail address", "data": "2962", "valid": false }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "an invalid e-mail address", "data": "2962", "valid": false }, { "description": "a non-ASCII local part with an ASCII domain is valid", "data": "δοκιμή@example.com", "valid": true }, { "description": "a non-ASCII quoted local part is valid", "data": "\"δοκιμή\"@example.com", "valid": true }, { "description": "a domain label that is not in Unicode NFC is valid", "data": "user@cafe\u0301.com", "valid": true }, { "description": "a local part that is not in Unicode NFC is valid", "data": "cafe\u0301@example.com", "valid": true }, { "description": "a C1 control in the local part is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii; https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-2 admits U+0085", "data": "\u0085@example.com", "valid": true }, { "description": "a noncharacter in the local part is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii; https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-3 admits U+FFFF", "data": "\uffff@example.com", "valid": true }, { "description": "a local part at the 64-octet limit is valid", "comment": "https://www.rfc-editor.org/rfc/rfc5321#section-4.5.3.1 every implementation must be able to receive a local part of 64 octets", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com", "valid": true }, { "description": "a fullwidth commercial at is not a local-part separator", "comment": "https://www.rfc-editor.org/rfc/rfc5321#section-4.1.2 Mailbox = Local-part \"@\" ( Domain / address-literal ) splits on U+0040, and any IDN mapping applies only to the domain that split produces, so U+FF20 cannot become the delimiter", "data": "user\uff20example.com", "valid": false }, { "description": "a local part with a supplementary-plane character is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii, and https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-4 covers U+10000 and above", "data": "\ud835\udd4f@example.com", "valid": true } ] } ] unevaluatedItems.json100640000766000024 6003715240201330 25126 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "unevaluatedItems true", "schema": { "$schema": "https://json-schema.org/v1", "unevaluatedItems": true }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with unevaluated items", "data": ["foo"], "valid": true } ] }, { "description": "unevaluatedItems false", "schema": { "$schema": "https://json-schema.org/v1", "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with unevaluated items", "data": ["foo"], "valid": false } ] }, { "description": "unevaluatedItems as schema", "schema": { "$schema": "https://json-schema.org/v1", "unevaluatedItems": { "type": "string" } }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with valid unevaluated items", "data": ["foo"], "valid": true }, { "description": "with invalid unevaluated items", "data": [42], "valid": false } ] }, { "description": "unevaluatedItems with uniform items", "schema": { "$schema": "https://json-schema.org/v1", "items": { "type": "string" }, "unevaluatedItems": false }, "tests": [ { "description": "unevaluatedItems doesn't apply", "data": ["foo", "bar"], "valid": true } ] }, { "description": "unevaluatedItems with tuple", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "type": "string" } ], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": ["foo"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar"], "valid": false } ] }, { "description": "unevaluatedItems with items and prefixItems", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "type": "string" } ], "items": true, "unevaluatedItems": false }, "tests": [ { "description": "unevaluatedItems doesn't apply", "data": ["foo", 42], "valid": true } ] }, { "description": "unevaluatedItems with items", "schema": { "$schema": "https://json-schema.org/v1", "items": {"type": "number"}, "unevaluatedItems": {"type": "string"} }, "tests": [ { "description": "valid under items", "comment": "no elements are considered by unevaluatedItems", "data": [5, 6, 7, 8], "valid": true }, { "description": "invalid under items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems with nested tuple", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "type": "string" } ], "allOf": [ { "prefixItems": [ true, { "type": "number" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", 42], "valid": true }, { "description": "with unevaluated items", "data": ["foo", 42, true], "valid": false } ] }, { "description": "unevaluatedItems with nested items", "schema": { "$schema": "https://json-schema.org/v1", "unevaluatedItems": {"type": "boolean"}, "anyOf": [ { "items": {"type": "string"} }, true ] }, "tests": [ { "description": "with only (valid) additional items", "data": [true, false], "valid": true }, { "description": "with no additional items", "data": ["yes", "no"], "valid": true }, { "description": "with invalid additional item", "data": ["yes", false], "valid": false } ] }, { "description": "unevaluatedItems with nested prefixItems and items", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "prefixItems": [ { "type": "string" } ], "items": true } ], "unevaluatedItems": false }, "tests": [ { "description": "with no additional items", "data": ["foo"], "valid": true }, { "description": "with additional items", "data": ["foo", 42, true], "valid": true } ] }, { "description": "unevaluatedItems with nested unevaluatedItems", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "prefixItems": [ { "type": "string" } ] }, { "unevaluatedItems": true } ], "unevaluatedItems": false }, "tests": [ { "description": "with no additional items", "data": ["foo"], "valid": true }, { "description": "with additional items", "data": ["foo", 42, true], "valid": true } ] }, { "description": "unevaluatedItems with anyOf", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "const": "foo" } ], "anyOf": [ { "prefixItems": [ true, { "const": "bar" } ] }, { "prefixItems": [ true, true, { "const": "baz" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "when one schema matches and has no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "when one schema matches and has unevaluated items", "data": ["foo", "bar", 42], "valid": false }, { "description": "when two schemas match and has no unevaluated items", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "when two schemas match and has unevaluated items", "data": ["foo", "bar", "baz", 42], "valid": false } ] }, { "description": "unevaluatedItems with oneOf", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "const": "foo" } ], "oneOf": [ { "prefixItems": [ true, { "const": "bar" } ] }, { "prefixItems": [ true, { "const": "baz" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", 42], "valid": false } ] }, { "description": "unevaluatedItems with not", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "const": "foo" } ], "not": { "not": { "prefixItems": [ true, { "const": "bar" } ] } }, "unevaluatedItems": false }, "tests": [ { "description": "with unevaluated items", "data": ["foo", "bar"], "valid": false } ] }, { "description": "unevaluatedItems with if/then/else", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "const": "foo" } ], "if": { "prefixItems": [ true, { "const": "bar" } ] }, "then": { "prefixItems": [ true, true, { "const": "then" } ] }, "else": { "prefixItems": [ true, true, true, { "const": "else" } ] }, "unevaluatedItems": false }, "tests": [ { "description": "when if matches and it has no unevaluated items", "data": ["foo", "bar", "then"], "valid": true }, { "description": "when if matches and it has unevaluated items", "data": ["foo", "bar", "then", "else"], "valid": false }, { "description": "when if doesn't match and it has no unevaluated items", "data": ["foo", 42, 42, "else"], "valid": true }, { "description": "when if doesn't match and it has unevaluated items", "data": ["foo", 42, 42, "else", 42], "valid": false } ] }, { "description": "unevaluatedItems with boolean schemas", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [true], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with unevaluated items", "data": ["foo"], "valid": false } ] }, { "description": "unevaluatedItems with $ref", "schema": { "$schema": "https://json-schema.org/v1", "$ref": "#/$defs/bar", "prefixItems": [ { "type": "string" } ], "unevaluatedItems": false, "$defs": { "bar": { "prefixItems": [ true, { "type": "string" } ] } } }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems before $ref", "schema": { "$schema": "https://json-schema.org/v1", "unevaluatedItems": false, "prefixItems": [ { "type": "string" } ], "$ref": "#/$defs/bar", "$defs": { "bar": { "prefixItems": [ true, { "type": "string" } ] } } }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems with $dynamicRef", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://example.com/unevaluated-items-with-dynamic-ref/derived", "$ref": "./baseSchema", "$defs": { "derived": { "$dynamicAnchor": "addons", "prefixItems": [ true, { "type": "string" } ] }, "baseSchema": { "$id": "./baseSchema", "$comment": "unevaluatedItems comes first so it's more likely to catch bugs with implementations that are sensitive to keyword ordering", "unevaluatedItems": false, "type": "array", "prefixItems": [ { "type": "string" } ], "$dynamicRef": "#addons" } } }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems can't see inside cousins", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "prefixItems": [ true ] }, { "unevaluatedItems": false } ] }, "tests": [ { "description": "always fails", "data": [ 1 ], "valid": false } ] }, { "description": "item is evaluated in an uncle schema to unevaluatedItems", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": { "prefixItems": [ { "type": "string" } ], "unevaluatedItems": false } }, "anyOf": [ { "properties": { "foo": { "prefixItems": [ true, { "type": "string" } ] } } } ] }, "tests": [ { "description": "no extra items", "data": { "foo": [ "test" ] }, "valid": true }, { "description": "uncle keyword evaluation is not significant", "data": { "foo": [ "test", "test" ] }, "valid": false } ] }, { "description": "unevaluatedItems depends on adjacent contains", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [true], "contains": {"type": "string"}, "unevaluatedItems": false }, "tests": [ { "description": "second item is evaluated by contains", "data": [ 1, "foo" ], "valid": true }, { "description": "contains fails, second item is not evaluated", "data": [ 1, 2 ], "valid": false }, { "description": "contains passes, second item is not evaluated", "data": [ 1, 2, "foo" ], "valid": false } ] }, { "description": "unevaluatedItems depends on multiple nested contains", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "contains": { "multipleOf": 2 } }, { "contains": { "multipleOf": 3 } } ], "unevaluatedItems": { "multipleOf": 5 } }, "tests": [ { "description": "5 not evaluated, passes unevaluatedItems", "data": [ 2, 3, 4, 5, 6 ], "valid": true }, { "description": "7 not evaluated, fails unevaluatedItems", "data": [ 2, 3, 4, 7, 8 ], "valid": false } ] }, { "description": "unevaluatedItems and contains interact to control item dependency relationship", "schema": { "$schema": "https://json-schema.org/v1", "if": { "contains": {"const": "a"} }, "then": { "if": { "contains": {"const": "b"} }, "then": { "if": { "contains": {"const": "c"} } } }, "unevaluatedItems": false }, "tests": [ { "description": "empty array is valid", "data": [], "valid": true }, { "description": "only a's are valid", "data": [ "a", "a" ], "valid": true }, { "description": "a's and b's are valid", "data": [ "a", "b", "a", "b", "a" ], "valid": true }, { "description": "a's, b's and c's are valid", "data": [ "c", "a", "c", "c", "b", "a" ], "valid": true }, { "description": "only b's are invalid", "data": [ "b", "b" ], "valid": false }, { "description": "only c's are invalid", "data": [ "c", "c" ], "valid": false }, { "description": "only b's and c's are invalid", "data": [ "c", "b", "c", "b", "c" ], "valid": false }, { "description": "only a's and c's are invalid", "data": [ "c", "a", "c", "a", "c" ], "valid": false } ] }, { "description" : "unevaluatedItems with minContains = 0", "schema" : { "$schema": "https://json-schema.org/v1", "contains": {"type": "string"}, "minContains": 0, "unevaluatedItems": false }, "tests" : [ { "description": "empty array is valid", "data": [], "valid": true }, { "description": "no items evaluated by contains", "data": [0], "valid": false }, { "description": "some but not all items evaluated by contains", "data": ["foo", 0], "valid": false }, { "description": "all items evaluated by contains", "data": ["foo", "bar"], "valid": true } ] }, { "description": "non-array instances are valid", "schema": { "$schema": "https://json-schema.org/v1", "unevaluatedItems": false }, "tests": [ { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "unevaluatedItems with null instance elements", "schema": { "$schema": "https://json-schema.org/v1", "unevaluatedItems": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] }, { "description": "unevaluatedItems can see annotations from if without then and else", "schema": { "$schema": "https://json-schema.org/v1", "if": { "prefixItems": [{"const": "a"}] }, "unevaluatedItems": false }, "tests": [ { "description": "valid in case if is evaluated", "data": [ "a" ], "valid": true }, { "description": "invalid in case if is evaluated", "data": [ "b" ], "valid": false } ] }, { "description": "Evaluated items collection needs to consider instance location", "schema": { "$schema": "https://json-schema.org/v1", "prefixItems": [ { "prefixItems": [ true, { "type": "string" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "with an unevaluated item that exists at another location", "data": [ ["foo", "bar"], "bar" ], "valid": false } ] } ] draft2019-09000755000766000024 015240201330 22362 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotestree.json100644000766000024 215240201330 24264 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{}content.json100640000766000024 1045515240201330 24574 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "validation of string-encoded content based on media type", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contentMediaType": "application/json" }, "tests": [ { "description": "a valid JSON document", "data": "{\"foo\": \"bar\"}", "valid": true }, { "description": "an invalid JSON document; validates true", "data": "{:}", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary string-encoding", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contentEncoding": "base64" }, "tests": [ { "description": "a valid base64 string", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "an invalid base64 string (% is not a valid character); validates true", "data": "eyJmb28iOi%iYmFyIn0K", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary-encoded media type documents", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contentMediaType": "application/json", "contentEncoding": "base64" }, "tests": [ { "description": "a valid base64-encoded JSON document", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "a validly-encoded invalid JSON document; validates true", "data": "ezp9Cg==", "valid": true }, { "description": "an invalid base64 string that is valid JSON; validates true", "data": "{}", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary-encoded media type documents with schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contentMediaType": "application/json", "contentEncoding": "base64", "contentSchema": { "type": "object", "required": ["foo"], "properties": { "foo": { "type": "string" } } } }, "tests": [ { "description": "a valid base64-encoded JSON document", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "another valid base64-encoded JSON document", "data": "eyJib28iOiAyMCwgImZvbyI6ICJiYXoifQ==", "valid": true }, { "description": "an invalid base64-encoded JSON document; validates true", "data": "eyJib28iOiAyMH0=", "valid": true }, { "description": "an empty object as a base64-encoded JSON document; validates true", "data": "e30=", "valid": true }, { "description": "an empty array as a base64-encoded JSON document", "data": "W10=", "valid": true }, { "description": "a validly-encoded invalid JSON document; validates true", "data": "ezp9Cg==", "valid": true }, { "description": "an invalid base64 string that is valid JSON; validates true", "data": "{}", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] } ] default.json100640000766000024 461415240201330 24526 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "invalid type for default", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": { "type": "integer", "default": [] } } }, "tests": [ { "description": "valid when property is specified", "data": {"foo": 13}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "invalid string value for default", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "bar": { "type": "string", "minLength": 4, "default": "bad" } } }, "tests": [ { "description": "valid when property is specified", "data": {"bar": "good"}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "the default keyword does not do anything if the property is missing", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "alpha": { "type": "number", "maximum": 3, "default": 5 } } }, "tests": [ { "description": "an explicit property value is checked against maximum (passing)", "data": { "alpha": 1 }, "valid": true }, { "description": "an explicit property value is checked against maximum (failing)", "data": { "alpha": 5 }, "valid": false }, { "description": "missing properties are not filled in with the default", "data": {}, "valid": true } ] } ] maximum.json100640000766000024 317415240201330 24557 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "maximum validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maximum": 3.0 }, "tests": [ { "description": "below the maximum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 3.0, "valid": true }, { "description": "above the maximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "maximum validation with unsigned integer", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maximum": 300 }, "tests": [ { "description": "below the maximum is valid", "data": 299.97, "valid": true }, { "description": "boundary point integer is valid", "data": 300, "valid": true }, { "description": "boundary point float is valid", "data": 300.00, "valid": true }, { "description": "above the maximum is invalid", "data": 300.5, "valid": false } ] } ] minimum.json100640000766000024 410415240201330 24547 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "minimum validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minimum": 1.1 }, "tests": [ { "description": "above the minimum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 1.1, "valid": true }, { "description": "below the minimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "minimum validation with signed integer", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minimum": -2 }, "tests": [ { "description": "negative above the minimum is valid", "data": -1, "valid": true }, { "description": "positive above the minimum is valid", "data": 0, "valid": true }, { "description": "boundary point is valid", "data": -2, "valid": true }, { "description": "boundary point with float is valid", "data": -2.0, "valid": true }, { "description": "float below the minimum is invalid", "data": -2.0001, "valid": false }, { "description": "int below the minimum is invalid", "data": -3, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] pattern.json100640000766000024 327515240201330 24561 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "pattern validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "pattern": "^a*$" }, "tests": [ { "description": "a matching pattern is valid", "data": "aaa", "valid": true }, { "description": "a non-matching pattern is invalid", "data": "abc", "valid": false }, { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "pattern is not anchored", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "pattern": "a+" }, "tests": [ { "description": "matches a substring", "data": "xxaayy", "valid": true } ] } ] content.json100640000766000024 1045515240201330 24556 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "validation of string-encoded content based on media type", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contentMediaType": "application/json" }, "tests": [ { "description": "a valid JSON document", "data": "{\"foo\": \"bar\"}", "valid": true }, { "description": "an invalid JSON document; validates true", "data": "{:}", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary string-encoding", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contentEncoding": "base64" }, "tests": [ { "description": "a valid base64 string", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "an invalid base64 string (% is not a valid character); validates true", "data": "eyJmb28iOi%iYmFyIn0K", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary-encoded media type documents", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contentMediaType": "application/json", "contentEncoding": "base64" }, "tests": [ { "description": "a valid base64-encoded JSON document", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "a validly-encoded invalid JSON document; validates true", "data": "ezp9Cg==", "valid": true }, { "description": "an invalid base64 string that is valid JSON; validates true", "data": "{}", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary-encoded media type documents with schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contentMediaType": "application/json", "contentEncoding": "base64", "contentSchema": { "type": "object", "required": ["foo"], "properties": { "foo": { "type": "string" } } } }, "tests": [ { "description": "a valid base64-encoded JSON document", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "another valid base64-encoded JSON document", "data": "eyJib28iOiAyMCwgImZvbyI6ICJiYXoifQ==", "valid": true }, { "description": "an invalid base64-encoded JSON document; validates true", "data": "eyJib28iOiAyMH0=", "valid": true }, { "description": "an empty object as a base64-encoded JSON document; validates true", "data": "e30=", "valid": true }, { "description": "an empty array as a base64-encoded JSON document", "data": "W10=", "valid": true }, { "description": "a validly-encoded invalid JSON document; validates true", "data": "ezp9Cg==", "valid": true }, { "description": "an invalid base64 string that is valid JSON; validates true", "data": "{}", "valid": true }, { "description": "ignores non-strings", "data": 100, "valid": true } ] } ] default.json100640000766000024 461415240201330 24510 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "invalid type for default", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "integer", "default": [] } } }, "tests": [ { "description": "valid when property is specified", "data": {"foo": 13}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "invalid string value for default", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "bar": { "type": "string", "minLength": 4, "default": "bad" } } }, "tests": [ { "description": "valid when property is specified", "data": {"bar": "good"}, "valid": true }, { "description": "still valid when the invalid default is used", "data": {}, "valid": true } ] }, { "description": "the default keyword does not do anything if the property is missing", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "alpha": { "type": "number", "maximum": 3, "default": 5 } } }, "tests": [ { "description": "an explicit property value is checked against maximum (passing)", "data": { "alpha": 1 }, "valid": true }, { "description": "an explicit property value is checked against maximum (failing)", "data": { "alpha": 5 }, "valid": false }, { "description": "missing properties are not filled in with the default", "data": {}, "valid": true } ] } ] maximum.json100640000766000024 317415240201330 24541 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "maximum validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maximum": 3.0 }, "tests": [ { "description": "below the maximum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 3.0, "valid": true }, { "description": "above the maximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "maximum validation with unsigned integer", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maximum": 300 }, "tests": [ { "description": "below the maximum is valid", "data": 299.97, "valid": true }, { "description": "boundary point integer is valid", "data": 300, "valid": true }, { "description": "boundary point float is valid", "data": 300.00, "valid": true }, { "description": "above the maximum is invalid", "data": 300.5, "valid": false } ] } ] minimum.json100640000766000024 410415240201330 24531 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "minimum validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minimum": 1.1 }, "tests": [ { "description": "above the minimum is valid", "data": 2.6, "valid": true }, { "description": "boundary point is valid", "data": 1.1, "valid": true }, { "description": "below the minimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] }, { "description": "minimum validation with signed integer", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minimum": -2 }, "tests": [ { "description": "negative above the minimum is valid", "data": -1, "valid": true }, { "description": "positive above the minimum is valid", "data": 0, "valid": true }, { "description": "boundary point is valid", "data": -2, "valid": true }, { "description": "boundary point with float is valid", "data": -2.0, "valid": true }, { "description": "float below the minimum is invalid", "data": -2.0001, "valid": false }, { "description": "int below the minimum is invalid", "data": -3, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] pattern.json100640000766000024 463515240201330 24544 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "pattern validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "pattern": "^a*$" }, "tests": [ { "description": "a matching pattern is valid", "data": "aaa", "valid": true }, { "description": "a non-matching pattern is invalid", "data": "abc", "valid": false }, { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "pattern is not anchored", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "pattern": "a+" }, "tests": [ { "description": "matches a substring", "data": "xxaayy", "valid": true } ] }, { "description": "pattern with Unicode property escape requires unicode mode", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\p{Letter}+$" }, "tests": [ { "description": "ASCII letters match", "data": "Hello", "valid": true }, { "description": "Non-ASCII letters match", "data": "π", "valid": true }, { "description": "Digits do not match", "data": "123", "valid": false } ] } ] maxProperties.json100640000766000024 273215240201330 25265 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "maxProperties validation", "schema": {"maxProperties": 2}, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "maxProperties = 0 means the object is empty", "schema": { "maxProperties": 0 }, "tests": [ { "description": "no properties is valid", "data": {}, "valid": true }, { "description": "one property is invalid", "data": { "foo": 1 }, "valid": false } ] } ] minProperties.json100640000766000024 240015240201330 25253 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "minProperties validation", "schema": {"minProperties": 1}, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] } ] maxProperties.json100640000766000024 365315240201330 25272 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "maxProperties validation", "schema": {"maxProperties": 2}, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "maxProperties validation with a decimal", "schema": {"maxProperties": 2.0}, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false } ] }, { "description": "maxProperties = 0 means the object is empty", "schema": { "maxProperties": 0 }, "tests": [ { "description": "no properties is valid", "data": {}, "valid": true }, { "description": "one property is invalid", "data": { "foo": 1 }, "valid": false } ] } ] minProperties.json100640000766000024 327715240201330 25272 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "minProperties validation", "schema": {"minProperties": 1}, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "minProperties validation with a decimal", "schema": {"minProperties": 1.0}, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false } ] } ] propertyNames.json100640000766000024 1106115240201330 25310 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "propertyNames validation", "schema": { "propertyNames": {"maxLength": 3} }, "tests": [ { "description": "all property names valid", "data": { "f": {}, "foo": {} }, "valid": true }, { "description": "some property names invalid", "data": { "foo": {}, "foobar": {} }, "valid": false }, { "description": "object without properties is valid", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [1, 2, 3, 4], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "propertyNames validation with pattern", "schema": { "propertyNames": { "pattern": "^a+$" } }, "tests": [ { "description": "matching property names valid", "data": { "a": {}, "aa": {}, "aaa": {} }, "valid": true }, { "description": "non-matching property name is invalid", "data": { "aaA": {} }, "valid": false }, { "description": "object without properties is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with boolean schema true", "schema": {"propertyNames": true}, "tests": [ { "description": "object with any properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with boolean schema false", "schema": {"propertyNames": false}, "tests": [ { "description": "object with any properties is invalid", "data": {"foo": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with const", "schema": {"propertyNames": {"const": "foo"}}, "tests": [ { "description": "object with property foo is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with any other property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with enum", "schema": {"propertyNames": {"enum": ["foo", "bar"]}}, "tests": [ { "description": "object with property foo is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property foo and bar is valid", "data": {"foo": 1, "bar": 1}, "valid": true }, { "description": "object with any other property is invalid", "data": {"baz": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] } ] maxProperties.json100640000766000024 365315240201330 25273 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "maxProperties validation", "schema": {"maxProperties": 2}, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "maxProperties validation with a decimal", "schema": {"maxProperties": 2.0}, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false } ] }, { "description": "maxProperties = 0 means the object is empty", "schema": { "maxProperties": 0 }, "tests": [ { "description": "no properties is valid", "data": {}, "valid": true }, { "description": "one property is invalid", "data": { "foo": 1 }, "valid": false } ] } ] minProperties.json100640000766000024 327715240201330 25273 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "minProperties validation", "schema": {"minProperties": 1}, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "minProperties validation with a decimal", "schema": {"minProperties": 1.0}, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false } ] } ] propertyNames.json100640000766000024 1106115240201330 25311 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "propertyNames validation", "schema": { "propertyNames": {"maxLength": 3} }, "tests": [ { "description": "all property names valid", "data": { "f": {}, "foo": {} }, "valid": true }, { "description": "some property names invalid", "data": { "foo": {}, "foobar": {} }, "valid": false }, { "description": "object without properties is valid", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [1, 2, 3, 4], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "propertyNames validation with pattern", "schema": { "propertyNames": { "pattern": "^a+$" } }, "tests": [ { "description": "matching property names valid", "data": { "a": {}, "aa": {}, "aaa": {} }, "valid": true }, { "description": "non-matching property name is invalid", "data": { "aaA": {} }, "valid": false }, { "description": "object without properties is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with boolean schema true", "schema": {"propertyNames": true}, "tests": [ { "description": "object with any properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with boolean schema false", "schema": {"propertyNames": false}, "tests": [ { "description": "object with any properties is invalid", "data": {"foo": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with const", "schema": {"propertyNames": {"const": "foo"}}, "tests": [ { "description": "object with property foo is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with any other property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with enum", "schema": {"propertyNames": {"enum": ["foo", "bar"]}}, "tests": [ { "description": "object with property foo is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property foo and bar is valid", "data": {"foo": 1, "bar": 1}, "valid": true }, { "description": "object with any other property is invalid", "data": {"baz": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] } ] dependentRequired.json100640000766000024 1017615240201330 25255 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "single dependency", "schema": { "$schema": "https://json-schema.org/v1", "dependentRequired": {"bar": ["foo"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "empty dependents", "schema": { "$schema": "https://json-schema.org/v1", "dependentRequired": {"bar": []} }, "tests": [ { "description": "empty object", "data": {}, "valid": true }, { "description": "object with one property", "data": {"bar": 2}, "valid": true }, { "description": "non-object is valid", "data": 1, "valid": true } ] }, { "description": "multiple dependents required", "schema": { "$schema": "https://json-schema.org/v1", "dependentRequired": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/v1", "dependentRequired": { "foo\nbar": ["foo\rbar"], "foo\"bar": ["foo'bar"] } }, "tests": [ { "description": "CRLF", "data": { "foo\nbar": 1, "foo\rbar": 2 }, "valid": true }, { "description": "quoted quotes", "data": { "foo'bar": 1, "foo\"bar": 2 }, "valid": true }, { "description": "CRLF missing dependent", "data": { "foo\nbar": 1, "foo": 2 }, "valid": false }, { "description": "quoted quotes missing dependent", "data": { "foo\"bar": 2 }, "valid": false } ] } ] patternProperties.json100640000766000024 1424615240201330 25342 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "patternProperties validates properties matching a regex", "schema": { "$schema": "https://json-schema.org/v1", "patternProperties": { "f.*o": {"type": "integer"} } }, "tests": [ { "description": "a single valid match is valid", "data": {"foo": 1}, "valid": true }, { "description": "multiple valid matches is valid", "data": {"foo": 1, "foooooo" : 2}, "valid": true }, { "description": "a single invalid match is invalid", "data": {"foo": "bar", "fooooo": 2}, "valid": false }, { "description": "multiple invalid matches is invalid", "data": {"foo": "bar", "foooooo" : "baz"}, "valid": false }, { "description": "ignores arrays", "data": ["foo"], "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "multiple simultaneous patternProperties are validated", "schema": { "$schema": "https://json-schema.org/v1", "patternProperties": { "a*": {"type": "integer"}, "aaa*": {"maximum": 20} } }, "tests": [ { "description": "a single valid match is valid", "data": {"a": 21}, "valid": true }, { "description": "a simultaneous match is valid", "data": {"aaaa": 18}, "valid": true }, { "description": "multiple matches is valid", "data": {"a": 21, "aaaa": 18}, "valid": true }, { "description": "an invalid due to one is invalid", "data": {"a": "bar"}, "valid": false }, { "description": "an invalid due to the other is invalid", "data": {"aaaa": 31}, "valid": false }, { "description": "an invalid due to both is invalid", "data": {"aaa": "foo", "aaaa": 31}, "valid": false } ] }, { "description": "regexes are not anchored by default and are case sensitive", "schema": { "$schema": "https://json-schema.org/v1", "patternProperties": { "[0-9]{2,}": { "type": "boolean" }, "X_": { "type": "string" } } }, "tests": [ { "description": "non recognized members are ignored", "data": { "answer 1": "42" }, "valid": true }, { "description": "recognized members are accounted for", "data": { "a31b": null }, "valid": false }, { "description": "regexes are case sensitive", "data": { "a_x_3": 3 }, "valid": true }, { "description": "regexes are case sensitive, 2", "data": { "a_X_3": 3 }, "valid": false } ] }, { "description": "patternProperties with boolean schemas", "schema": { "$schema": "https://json-schema.org/v1", "patternProperties": { "f.*": true, "b.*": false } }, "tests": [ { "description": "object with property matching schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property matching schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "object with a property matching both true and false is invalid", "data": {"foobar":1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "patternProperties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/v1", "patternProperties": { "^.*bar$": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foobar": null}, "valid": true } ] }, { "description": "patternProperties with Unicode property escape", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "patternProperties": { "^\\p{Letter}+$": {"type": "number"} } }, "tests": [ { "description": "Unicode letter property name matches", "data": {"π": 1}, "valid": true }, { "description": "Unicode letter property name matches but value type is incorrect", "data": {"π": "1"}, "valid": false }, { "description": "Non-letter property name does not match pattern", "data": {"123": 1}, "valid": true } ] } ] detached-ref.json100640000766000024 40515240201330 25227 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft6{ "$id": "http://localhost:1234/draft6/detached-ref.json", "$schema": "http://json-schema.org/draft-06/schema#", "definitions": { "foo": { "$ref": "#detached" }, "detached": { "$id": "#detached", "type": "integer" } } }detached-ref.json100640000766000024 40515240201330 25230 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft7{ "$id": "http://localhost:1234/draft7/detached-ref.json", "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "foo": { "$ref": "#detached" }, "detached": { "$id": "#detached", "type": "integer" } } }contains.json100640000766000024 1206615240201330 24740 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "contains keyword validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"minimum": 5} }, "tests": [ { "description": "array with item matching schema (5) is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with item matching schema (6) is valid", "data": [3, 4, 6], "valid": true }, { "description": "array with two items matching schema (5, 6) is valid", "data": [3, 4, 5, 6], "valid": true }, { "description": "array without items matching schema is invalid", "data": [2, 3, 4], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "not array is valid", "data": {}, "valid": true } ] }, { "description": "contains keyword with const keyword", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": { "const": 5 } }, "tests": [ { "description": "array with item 5 is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with two items 5 is valid", "data": [3, 4, 5, 5], "valid": true }, { "description": "array without item 5 is invalid", "data": [1, 2, 3, 4], "valid": false } ] }, { "description": "contains keyword with boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": true }, "tests": [ { "description": "any non-empty array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "contains keyword with boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": false }, "tests": [ { "description": "any non-empty array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "non-arrays are valid", "data": "contains does not apply to strings", "valid": true } ] }, { "description": "items + contains", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": { "multipleOf": 2 }, "contains": { "multipleOf": 3 } }, "tests": [ { "description": "matches items, does not match contains", "data": [ 2, 4, 8 ], "valid": false }, { "description": "does not match items, matches contains", "data": [ 3, 6, 9 ], "valid": false }, { "description": "matches both items and contains", "data": [ 6, 12 ], "valid": true }, { "description": "matches neither items nor contains", "data": [ 1, 5 ], "valid": false } ] }, { "description": "contains with false if subschema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": { "if": false, "else": true } }, "tests": [ { "description": "any non-empty array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "contains with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": { "type": "null" } }, "tests": [ { "description": "allows null items", "data": [ null ], "valid": true } ] } ] maxItems.json100640000766000024 244715240201330 24673 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "maxItems validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maxItems": 2 }, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "exact length is valid", "data": [1, 2], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false }, { "description": "ignores non-arrays", "data": "foobar", "valid": true } ] }, { "description": "maxItems validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maxItems": 2.0 }, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false } ] } ] minItems.json100640000766000024 242615240201330 24666 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "minItems validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minItems": 1 }, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "exact length is valid", "data": [1], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false }, { "description": "ignores non-arrays", "data": "", "valid": true } ] }, { "description": "minItems validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minItems": 1.0 }, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false } ] } ] required.json100640000766000024 1144615240201330 24743 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "required validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {}, "bar": {} }, "required": ["foo"] }, "tests": [ { "description": "present required property is valid", "data": {"foo": 1}, "valid": true }, { "description": "non-present required property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores boolean", "data": true, "valid": true } ] }, { "description": "required default validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {} } }, "tests": [ { "description": "not required by default", "data": {}, "valid": true } ] }, { "description": "required with empty array", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {} }, "required": [] }, "tests": [ { "description": "property not required", "data": {}, "valid": true } ] }, { "description": "required with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "required": [ "foo\nbar", "foo\"bar", "foo\\bar", "foo\rbar", "foo\tbar", "foo\fbar" ] }, "tests": [ { "description": "object with all properties present is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with some properties missing is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1" }, "valid": false } ] }, { "description": "required properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "required": ["__proto__", "toString", "constructor"] }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": false }, { "description": "__proto__ present", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString present", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor present", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] contains.json100640000766000024 1206615240201330 24722 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "contains keyword validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"minimum": 5} }, "tests": [ { "description": "array with item matching schema (5) is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with item matching schema (6) is valid", "data": [3, 4, 6], "valid": true }, { "description": "array with two items matching schema (5, 6) is valid", "data": [3, 4, 5, 6], "valid": true }, { "description": "array without items matching schema is invalid", "data": [2, 3, 4], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "not array is valid", "data": {}, "valid": true } ] }, { "description": "contains keyword with const keyword", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": { "const": 5 } }, "tests": [ { "description": "array with item 5 is valid", "data": [3, 4, 5], "valid": true }, { "description": "array with two items 5 is valid", "data": [3, 4, 5, 5], "valid": true }, { "description": "array without item 5 is invalid", "data": [1, 2, 3, 4], "valid": false } ] }, { "description": "contains keyword with boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": true }, "tests": [ { "description": "any non-empty array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "contains keyword with boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": false }, "tests": [ { "description": "any non-empty array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false }, { "description": "non-arrays are valid", "data": "contains does not apply to strings", "valid": true } ] }, { "description": "items + contains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "items": { "multipleOf": 2 }, "contains": { "multipleOf": 3 } }, "tests": [ { "description": "matches items, does not match contains", "data": [ 2, 4, 8 ], "valid": false }, { "description": "does not match items, matches contains", "data": [ 3, 6, 9 ], "valid": false }, { "description": "matches both items and contains", "data": [ 6, 12 ], "valid": true }, { "description": "matches neither items nor contains", "data": [ 1, 5 ], "valid": false } ] }, { "description": "contains with false if subschema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": { "if": false, "else": true } }, "tests": [ { "description": "any non-empty array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is invalid", "data": [], "valid": false } ] }, { "description": "contains with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": { "type": "null" } }, "tests": [ { "description": "allows null items", "data": [ null ], "valid": true } ] } ] maxItems.json100640000766000024 244715240201330 24655 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "maxItems validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxItems": 2 }, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "exact length is valid", "data": [1, 2], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false }, { "description": "ignores non-arrays", "data": "foobar", "valid": true } ] }, { "description": "maxItems validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxItems": 2.0 }, "tests": [ { "description": "shorter is valid", "data": [1], "valid": true }, { "description": "too long is invalid", "data": [1, 2, 3], "valid": false } ] } ] minItems.json100640000766000024 242615240201330 24650 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "minItems validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minItems": 1 }, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "exact length is valid", "data": [1], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false }, { "description": "ignores non-arrays", "data": "", "valid": true } ] }, { "description": "minItems validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minItems": 1.0 }, "tests": [ { "description": "longer is valid", "data": [1, 2], "valid": true }, { "description": "too short is invalid", "data": [], "valid": false } ] } ] required.json100640000766000024 1144615240201330 24725 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "required validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {}, "bar": {} }, "required": ["foo"] }, "tests": [ { "description": "present required property is valid", "data": {"foo": 1}, "valid": true }, { "description": "non-present required property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description":"ignores boolean", "data": true, "valid": true } ] }, { "description": "required default validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {} } }, "tests": [ { "description": "not required by default", "data": {}, "valid": true } ] }, { "description": "required with empty array", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {} }, "required": [] }, "tests": [ { "description": "property not required", "data": {}, "valid": true } ] }, { "description": "required with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "foo\nbar", "foo\"bar", "foo\\bar", "foo\rbar", "foo\tbar", "foo\fbar" ] }, "tests": [ { "description": "object with all properties present is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with some properties missing is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1" }, "valid": false } ] }, { "description": "required properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "required": ["__proto__", "toString", "constructor"] }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": false }, { "description": "__proto__ present", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString present", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor present", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] boolean_schema.json100640000766000024 540215240201330 25361 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "boolean schema 'true'", "schema": true, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "boolean schema 'false'", "schema": false, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] } ] boolean_schema.json100640000766000024 540215240201330 25362 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "boolean schema 'true'", "schema": true, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "boolean schema 'false'", "schema": false, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] } ] unknownKeyword.json100644000766000024 215240201330 25401 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[]unknownKeyword.json100644000766000024 215240201330 25402 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[]ref-and-definitions.json100644000766000024 215240201330 25310 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}content000755000766000024 015240201330 23542 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/v1type.json100640000766000024 312415240201330 25552 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/v1/content[ { "description": "incorrect type", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://json-schema.org/tests/content/v1/type/0", "type": "string" }, "tests": [ { "description": "incorrect type must be reported, but a message is not required", "data": 1, "output": { "list": { "$id": "https://json-schema.org/tests/content/v1/type/0/tests/0/basic", "$ref": "/v1/output/schema", "properties": { "details": { "contains": { "properties": { "evaluationPath": {"const": ""}, "schemaLocation": {"const": "https://json-schema.org/tests/content/v1/type/0#"}, "instanceLocation": {"const": ""}, "annotations": false, "errors": { "required": ["type"] } }, "required": ["evaluationPath", "schemaLocation", "instanceLocation"] } } }, "required": ["details"] } } } ] } ] integer.json100640000766000024 13115240201330 25021 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer" } integer.json100640000766000024 13115240201330 25003 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer" } maxLength.json100640000766000024 271315240201330 25027 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "maxLength validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maxLength": 2 }, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false }, { "description": "ignores non-strings", "data": 100, "valid": true }, { "description": "two graphemes is long enough", "data": "\uD83D\uDCA9\uD83D\uDCA9", "valid": true } ] }, { "description": "maxLength validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maxLength": 2.0 }, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false } ] } ] minLength.json100640000766000024 270115240201330 25022 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "minLength validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minLength": 2 }, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false }, { "description": "ignores non-strings", "data": 1, "valid": true }, { "description": "one grapheme is not long enough", "data": "\uD83D\uDCA9", "valid": false } ] }, { "description": "minLength validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minLength": 2.0 }, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false } ] } ] refRemote.json100640000766000024 2412215240201330 25046 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "remote ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/integer.json" }, "tests": [ { "description": "remote ref valid", "data": 1, "valid": true }, { "description": "remote ref invalid", "data": "a", "valid": false } ] }, { "description": "fragment within remote ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/subSchemas.json#/$defs/integer" }, "tests": [ { "description": "remote fragment valid", "data": 1, "valid": true }, { "description": "remote fragment invalid", "data": "a", "valid": false } ] }, { "description": "anchor within remote ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/locationIndependentIdentifier.json#foo" }, "tests": [ { "description": "remote anchor valid", "data": 1, "valid": true }, { "description": "remote anchor invalid", "data": "a", "valid": false } ] }, { "description": "ref within remote ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/subSchemas.json#/$defs/refToInteger" }, "tests": [ { "description": "ref within ref valid", "data": 1, "valid": true }, { "description": "ref within ref invalid", "data": "a", "valid": false } ] }, { "description": "base URI change", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/", "items": { "$id": "baseUriChange/", "items": {"$ref": "folderInteger.json"} } }, "tests": [ { "description": "base URI change ref valid", "data": [[1]], "valid": true }, { "description": "base URI change ref invalid", "data": [["a"]], "valid": false } ] }, { "description": "base URI change - change folder", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/scope_change_defs1.json", "type" : "object", "properties": {"list": {"$ref": "baseUriChangeFolder/"}}, "$defs": { "baz": { "$id": "baseUriChangeFolder/", "type": "array", "items": {"$ref": "folderInteger.json"} } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "base URI change - change folder in subschema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/scope_change_defs2.json", "type" : "object", "properties": {"list": {"$ref": "baseUriChangeFolderInSubschema/#/$defs/bar"}}, "$defs": { "baz": { "$id": "baseUriChangeFolderInSubschema/", "$defs": { "bar": { "type": "array", "items": {"$ref": "folderInteger.json"} } } } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "root ref in remote ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/object", "type": "object", "properties": { "name": {"$ref": "name-defs.json#/$defs/orNull"} } }, "tests": [ { "description": "string is valid", "data": { "name": "foo" }, "valid": true }, { "description": "null is valid", "data": { "name": null }, "valid": true }, { "description": "object is invalid", "data": { "name": { "name": null } }, "valid": false } ] }, { "description": "remote ref with ref to defs", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/schema-remote-ref-ref-defs1.json", "$ref": "ref-and-defs.json" }, "tests": [ { "description": "invalid", "data": { "bar": 1 }, "valid": false }, { "description": "valid", "data": { "bar": "a" }, "valid": true } ] }, { "description": "Location-independent identifier in remote ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/locationIndependentIdentifier.json#/$defs/refToInteger" }, "tests": [ { "description": "integer is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "retrieved nested refs resolve relative to their URI not $id", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/some-id", "properties": { "name": {"$ref": "nested/foo-ref-string.json"} } }, "tests": [ { "description": "number is invalid", "data": { "name": {"foo": 1} }, "valid": false }, { "description": "string is valid", "data": { "name": {"foo": "a"} }, "valid": true } ] }, { "description": "remote HTTP ref with different $id", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/different-id-ref-string.json" }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is valid", "data": "foo", "valid": true } ] }, { "description": "remote HTTP ref with different URN $id", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/urn-ref-string.json" }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is valid", "data": "foo", "valid": true } ] }, { "description": "remote HTTP ref with nested absolute ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/nested-absolute-ref-to-string.json" }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is valid", "data": "foo", "valid": true } ] }, { "description": "$ref to $ref finds detached $anchor", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "http://localhost:1234/draft2019-09/detached-ref.json#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] maxLength.json100640000766000024 271315240201330 25011 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "maxLength validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxLength": 2 }, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false }, { "description": "ignores non-strings", "data": 100, "valid": true }, { "description": "two graphemes is long enough", "data": "\uD83D\uDCA9\uD83D\uDCA9", "valid": true } ] }, { "description": "maxLength validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxLength": 2.0 }, "tests": [ { "description": "shorter is valid", "data": "f", "valid": true }, { "description": "too long is invalid", "data": "foo", "valid": false } ] } ] minLength.json100640000766000024 270115240201330 25004 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "minLength validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minLength": 2 }, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "exact length is valid", "data": "fo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false }, { "description": "ignores non-strings", "data": 1, "valid": true }, { "description": "one grapheme is not long enough", "data": "\uD83D\uDCA9", "valid": false } ] }, { "description": "minLength validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minLength": 2.0 }, "tests": [ { "description": "longer is valid", "data": "foo", "valid": true }, { "description": "too short is invalid", "data": "f", "valid": false } ] } ] refRemote.json100640000766000024 2410215240201330 25026 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "remote ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/integer.json" }, "tests": [ { "description": "remote ref valid", "data": 1, "valid": true }, { "description": "remote ref invalid", "data": "a", "valid": false } ] }, { "description": "fragment within remote ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/subSchemas.json#/$defs/integer" }, "tests": [ { "description": "remote fragment valid", "data": 1, "valid": true }, { "description": "remote fragment invalid", "data": "a", "valid": false } ] }, { "description": "anchor within remote ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/locationIndependentIdentifier.json#foo" }, "tests": [ { "description": "remote anchor valid", "data": 1, "valid": true }, { "description": "remote anchor invalid", "data": "a", "valid": false } ] }, { "description": "ref within remote ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/subSchemas.json#/$defs/refToInteger" }, "tests": [ { "description": "ref within ref valid", "data": 1, "valid": true }, { "description": "ref within ref invalid", "data": "a", "valid": false } ] }, { "description": "base URI change", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/", "items": { "$id": "baseUriChange/", "items": {"$ref": "folderInteger.json"} } }, "tests": [ { "description": "base URI change ref valid", "data": [[1]], "valid": true }, { "description": "base URI change ref invalid", "data": [["a"]], "valid": false } ] }, { "description": "base URI change - change folder", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/scope_change_defs1.json", "type" : "object", "properties": {"list": {"$ref": "baseUriChangeFolder/"}}, "$defs": { "baz": { "$id": "baseUriChangeFolder/", "type": "array", "items": {"$ref": "folderInteger.json"} } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "base URI change - change folder in subschema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/scope_change_defs2.json", "type" : "object", "properties": {"list": {"$ref": "baseUriChangeFolderInSubschema/#/$defs/bar"}}, "$defs": { "baz": { "$id": "baseUriChangeFolderInSubschema/", "$defs": { "bar": { "type": "array", "items": {"$ref": "folderInteger.json"} } } } } }, "tests": [ { "description": "number is valid", "data": {"list": [1]}, "valid": true }, { "description": "string is invalid", "data": {"list": ["a"]}, "valid": false } ] }, { "description": "root ref in remote ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/object", "type": "object", "properties": { "name": {"$ref": "name-defs.json#/$defs/orNull"} } }, "tests": [ { "description": "string is valid", "data": { "name": "foo" }, "valid": true }, { "description": "null is valid", "data": { "name": null }, "valid": true }, { "description": "object is invalid", "data": { "name": { "name": null } }, "valid": false } ] }, { "description": "remote ref with ref to defs", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/schema-remote-ref-ref-defs1.json", "$ref": "ref-and-defs.json" }, "tests": [ { "description": "invalid", "data": { "bar": 1 }, "valid": false }, { "description": "valid", "data": { "bar": "a" }, "valid": true } ] }, { "description": "Location-independent identifier in remote ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/locationIndependentIdentifier.json#/$defs/refToInteger" }, "tests": [ { "description": "integer is valid", "data": 1, "valid": true }, { "description": "string is invalid", "data": "foo", "valid": false } ] }, { "description": "retrieved nested refs resolve relative to their URI not $id", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/some-id", "properties": { "name": {"$ref": "nested/foo-ref-string.json"} } }, "tests": [ { "description": "number is invalid", "data": { "name": {"foo": 1} }, "valid": false }, { "description": "string is valid", "data": { "name": {"foo": "a"} }, "valid": true } ] }, { "description": "remote HTTP ref with different $id", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/different-id-ref-string.json" }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is valid", "data": "foo", "valid": true } ] }, { "description": "remote HTTP ref with different URN $id", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/urn-ref-string.json" }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is valid", "data": "foo", "valid": true } ] }, { "description": "remote HTTP ref with nested absolute ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/nested-absolute-ref-to-string.json" }, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is valid", "data": "foo", "valid": true } ] }, { "description": "$ref to $ref finds detached $anchor", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "http://localhost:1234/draft2020-12/detached-ref.json#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] } ] additionalItems.json100640000766000024 706615240201330 25541 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "additionalItems as schema", "schema": { "items": [], "additionalItems": {"type": "integer"} }, "tests": [ { "description": "additional items match schema", "data": [ 1, 2, 3, 4 ], "valid": true }, { "description": "additional items do not match schema", "data": [ 1, 2, 3, "foo" ], "valid": false } ] }, { "description": "when items is schema, additionalItems does nothing", "schema": { "items": {}, "additionalItems": false }, "tests": [ { "description": "all items match schema", "data": [ 1, 2, 3, 4, 5 ], "valid": true } ] }, { "description": "array of items with no additionalItems permitted", "schema": { "items": [{}, {}, {}], "additionalItems": false }, "tests": [ { "description": "empty array", "data": [ ], "valid": true }, { "description": "fewer number of items present (1)", "data": [ 1 ], "valid": true }, { "description": "fewer number of items present (2)", "data": [ 1, 2 ], "valid": true }, { "description": "equal number of items present", "data": [ 1, 2, 3 ], "valid": true }, { "description": "additional items are not permitted", "data": [ 1, 2, 3, 4 ], "valid": false } ] }, { "description": "additionalItems as false without items", "schema": {"additionalItems": false}, "tests": [ { "description": "items defaults to empty schema so everything is valid", "data": [ 1, 2, 3, 4, 5 ], "valid": true }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true } ] }, { "description": "additionalItems are allowed by default", "schema": {"items": [{"type": "integer"}]}, "tests": [ { "description": "only the first item is validated", "data": [1, "foo", false], "valid": true } ] }, { "description": "additionalItems with heterogeneous array", "schema": { "items": [{}], "additionalItems": false }, "tests": [ { "description": "heterogeneous invalid instance", "data": [ "foo", "bar", 37 ], "valid": false }, { "description": "valid instance", "data": [ null ], "valid": true } ] }, { "description": "additionalItems with null instance elements", "schema": { "additionalItems": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] optional000755000766000024 015240201330 23214 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3bignum.json100640000766000024 547315240201330 25535 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional[ { "description": "integer", "schema": { "type": "integer" }, "tests": [ { "description": "a bignum is an integer", "data": 12345678910111213141516171819202122232425262728293031, "valid": true }, { "description": "a negative bignum is an integer", "data": -12345678910111213141516171819202122232425262728293031, "valid": true } ] }, { "description": "number", "schema": { "type": "number" }, "tests": [ { "description": "a bignum is a number", "data": 98249283749234923498293171823948729348710298301928331, "valid": true }, { "description": "a negative bignum is a number", "data": -98249283749234923498293171823948729348710298301928331, "valid": true } ] }, { "description": "string", "schema": { "type": "string" }, "tests": [ { "description": "a bignum is not a string", "data": 98249283749234923498293171823948729348710298301928331, "valid": false } ] }, { "description": "maximum integer comparison", "schema": { "maximum": 18446744073709551615 }, "tests": [ { "description": "comparison works for high numbers", "data": 18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision", "schema": { "maximum": 972783798187987123879878123.18878137, "exclusiveMaximum": true }, "tests": [ { "description": "comparison works for high numbers", "data": 972783798187987123879878123.188781371, "valid": false } ] }, { "description": "minimum integer comparison", "schema": { "minimum": -18446744073709551615 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision on negative numbers", "schema": { "minimum": -972783798187987123879878123.18878137, "exclusiveMinimum": true }, "tests": [ { "description": "comparison works for very negative numbers", "data": -972783798187987123879878123.188781371, "valid": false } ] } ] additionalItems.json100640000766000024 1122415240201330 25551 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "additionalItems as schema", "schema": { "items": [{}], "additionalItems": {"type": "integer"} }, "tests": [ { "description": "additional items match schema", "data": [ null, 2, 3, 4 ], "valid": true }, { "description": "additional items do not match schema", "data": [ null, 2, 3, "foo" ], "valid": false } ] }, { "description": "when items is schema, additionalItems does nothing", "schema": { "items": {}, "additionalItems": false }, "tests": [ { "description": "all items match schema", "data": [ 1, 2, 3, 4, 5 ], "valid": true } ] }, { "description": "array of items with no additionalItems permitted", "schema": { "items": [{}, {}, {}], "additionalItems": false }, "tests": [ { "description": "empty array", "data": [ ], "valid": true }, { "description": "fewer number of items present (1)", "data": [ 1 ], "valid": true }, { "description": "fewer number of items present (2)", "data": [ 1, 2 ], "valid": true }, { "description": "equal number of items present", "data": [ 1, 2, 3 ], "valid": true }, { "description": "additional items are not permitted", "data": [ 1, 2, 3, 4 ], "valid": false } ] }, { "description": "additionalItems as false without items", "schema": {"additionalItems": false}, "tests": [ { "description": "items defaults to empty schema so everything is valid", "data": [ 1, 2, 3, 4, 5 ], "valid": true }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true } ] }, { "description": "additionalItems are allowed by default", "schema": {"items": [{"type": "integer"}]}, "tests": [ { "description": "only the first item is validated", "data": [1, "foo", false], "valid": true } ] }, { "description": "additionalItems does not look in applicators, invalid case", "schema": { "allOf": [ { "items": [ { "type": "integer" }, { "type": "string" } ] } ], "items": [ {"type": "integer" } ], "additionalItems": { "type": "boolean" } }, "tests": [ { "description": "items defined in allOf are not examined", "data": [ 1, "hello" ], "valid": false } ] }, { "description": "items validation adjusts the starting index for additionalItems", "schema": { "items": [ { "type": "string" } ], "additionalItems": { "type": "integer" } }, "tests": [ { "description": "valid items", "data": [ "x", 2, 3 ], "valid": true }, { "description": "wrong type of second item", "data": [ "x", "y" ], "valid": false } ] }, { "description": "additionalItems with heterogeneous array", "schema": { "items": [{}], "additionalItems": false }, "tests": [ { "description": "heterogeneous invalid instance", "data": [ "foo", "bar", 37 ], "valid": false }, { "description": "valid instance", "data": [ null ], "valid": true } ] }, { "description": "additionalItems with null instance elements", "schema": { "additionalItems": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] bignum.json100640000766000024 547315240201330 25536 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional[ { "description": "integer", "schema": { "type": "integer" }, "tests": [ { "description": "a bignum is an integer", "data": 12345678910111213141516171819202122232425262728293031, "valid": true }, { "description": "a negative bignum is an integer", "data": -12345678910111213141516171819202122232425262728293031, "valid": true } ] }, { "description": "number", "schema": { "type": "number" }, "tests": [ { "description": "a bignum is a number", "data": 98249283749234923498293171823948729348710298301928331, "valid": true }, { "description": "a negative bignum is a number", "data": -98249283749234923498293171823948729348710298301928331, "valid": true } ] }, { "description": "string", "schema": { "type": "string" }, "tests": [ { "description": "a bignum is not a string", "data": 98249283749234923498293171823948729348710298301928331, "valid": false } ] }, { "description": "maximum integer comparison", "schema": { "maximum": 18446744073709551615 }, "tests": [ { "description": "comparison works for high numbers", "data": 18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision", "schema": { "maximum": 972783798187987123879878123.18878137, "exclusiveMaximum": true }, "tests": [ { "description": "comparison works for high numbers", "data": 972783798187987123879878123.188781371, "valid": false } ] }, { "description": "minimum integer comparison", "schema": { "minimum": -18446744073709551615 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision on negative numbers", "schema": { "minimum": -972783798187987123879878123.18878137, "exclusiveMinimum": true }, "tests": [ { "description": "comparison works for very negative numbers", "data": -972783798187987123879878123.188781371, "valid": false } ] } ] additionalItems.json100640000766000024 1242215240201330 25554 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "additionalItems as schema", "schema": { "items": [{}], "additionalItems": {"type": "integer"} }, "tests": [ { "description": "additional items match schema", "data": [ null, 2, 3, 4 ], "valid": true }, { "description": "additional items do not match schema", "data": [ null, 2, 3, "foo" ], "valid": false } ] }, { "description": "when items is schema, additionalItems does nothing", "schema": { "items": { "type": "integer" }, "additionalItems": { "type": "string" } }, "tests": [ { "description": "valid with a array of type integers", "data": [1,2,3], "valid": true }, { "description": "invalid with a array of mixed types", "data": [1,"2","3"], "valid": false } ] }, { "description": "when items is schema, boolean additionalItems does nothing", "schema": { "items": {}, "additionalItems": false }, "tests": [ { "description": "all items match schema", "data": [ 1, 2, 3, 4, 5 ], "valid": true } ] }, { "description": "array of items with no additionalItems permitted", "schema": { "items": [{}, {}, {}], "additionalItems": false }, "tests": [ { "description": "empty array", "data": [ ], "valid": true }, { "description": "fewer number of items present (1)", "data": [ 1 ], "valid": true }, { "description": "fewer number of items present (2)", "data": [ 1, 2 ], "valid": true }, { "description": "equal number of items present", "data": [ 1, 2, 3 ], "valid": true }, { "description": "additional items are not permitted", "data": [ 1, 2, 3, 4 ], "valid": false } ] }, { "description": "additionalItems as false without items", "schema": {"additionalItems": false}, "tests": [ { "description": "items defaults to empty schema so everything is valid", "data": [ 1, 2, 3, 4, 5 ], "valid": true }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true } ] }, { "description": "additionalItems are allowed by default", "schema": {"items": [{"type": "integer"}]}, "tests": [ { "description": "only the first item is validated", "data": [1, "foo", false], "valid": true } ] }, { "description": "additionalItems does not look in applicators, invalid case", "schema": { "allOf": [ { "items": [ { "type": "integer" }, { "type": "string" } ] } ], "items": [ {"type": "integer" } ], "additionalItems": { "type": "boolean" } }, "tests": [ { "description": "items defined in allOf are not examined", "data": [ 1, "hello" ], "valid": false } ] }, { "description": "items validation adjusts the starting index for additionalItems", "schema": { "items": [ { "type": "string" } ], "additionalItems": { "type": "integer" } }, "tests": [ { "description": "valid items", "data": [ "x", 2, 3 ], "valid": true }, { "description": "wrong type of second item", "data": [ "x", "y" ], "valid": false } ] }, { "description": "additionalItems with heterogeneous array", "schema": { "items": [{}], "additionalItems": false }, "tests": [ { "description": "heterogeneous invalid instance", "data": [ "foo", "bar", 37 ], "valid": false }, { "description": "valid instance", "data": [ null ], "valid": true } ] }, { "description": "additionalItems with null instance elements", "schema": { "additionalItems": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] bignum.json100640000766000024 540115240201330 25527 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional[ { "description": "integer", "schema": { "type": "integer" }, "tests": [ { "description": "a bignum is an integer", "data": 12345678910111213141516171819202122232425262728293031, "valid": true }, { "description": "a negative bignum is an integer", "data": -12345678910111213141516171819202122232425262728293031, "valid": true } ] }, { "description": "number", "schema": { "type": "number" }, "tests": [ { "description": "a bignum is a number", "data": 98249283749234923498293171823948729348710298301928331, "valid": true }, { "description": "a negative bignum is a number", "data": -98249283749234923498293171823948729348710298301928331, "valid": true } ] }, { "description": "string", "schema": { "type": "string" }, "tests": [ { "description": "a bignum is not a string", "data": 98249283749234923498293171823948729348710298301928331, "valid": false } ] }, { "description": "maximum integer comparison", "schema": { "maximum": 18446744073709551615 }, "tests": [ { "description": "comparison works for high numbers", "data": 18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision", "schema": { "exclusiveMaximum": 972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for high numbers", "data": 972783798187987123879878123.188781371, "valid": false } ] }, { "description": "minimum integer comparison", "schema": { "minimum": -18446744073709551615 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision on negative numbers", "schema": { "exclusiveMinimum": -972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -972783798187987123879878123.188781371, "valid": false } ] } ] additionalItems.json100640000766000024 1242215240201330 25555 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "additionalItems as schema", "schema": { "items": [{}], "additionalItems": {"type": "integer"} }, "tests": [ { "description": "additional items match schema", "data": [ null, 2, 3, 4 ], "valid": true }, { "description": "additional items do not match schema", "data": [ null, 2, 3, "foo" ], "valid": false } ] }, { "description": "when items is schema, additionalItems does nothing", "schema": { "items": { "type": "integer" }, "additionalItems": { "type": "string" } }, "tests": [ { "description": "valid with a array of type integers", "data": [1,2,3], "valid": true }, { "description": "invalid with a array of mixed types", "data": [1,"2","3"], "valid": false } ] }, { "description": "when items is schema, boolean additionalItems does nothing", "schema": { "items": {}, "additionalItems": false }, "tests": [ { "description": "all items match schema", "data": [ 1, 2, 3, 4, 5 ], "valid": true } ] }, { "description": "array of items with no additionalItems permitted", "schema": { "items": [{}, {}, {}], "additionalItems": false }, "tests": [ { "description": "empty array", "data": [ ], "valid": true }, { "description": "fewer number of items present (1)", "data": [ 1 ], "valid": true }, { "description": "fewer number of items present (2)", "data": [ 1, 2 ], "valid": true }, { "description": "equal number of items present", "data": [ 1, 2, 3 ], "valid": true }, { "description": "additional items are not permitted", "data": [ 1, 2, 3, 4 ], "valid": false } ] }, { "description": "additionalItems as false without items", "schema": {"additionalItems": false}, "tests": [ { "description": "items defaults to empty schema so everything is valid", "data": [ 1, 2, 3, 4, 5 ], "valid": true }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true } ] }, { "description": "additionalItems are allowed by default", "schema": {"items": [{"type": "integer"}]}, "tests": [ { "description": "only the first item is validated", "data": [1, "foo", false], "valid": true } ] }, { "description": "additionalItems does not look in applicators, invalid case", "schema": { "allOf": [ { "items": [ { "type": "integer" }, { "type": "string" } ] } ], "items": [ {"type": "integer" } ], "additionalItems": { "type": "boolean" } }, "tests": [ { "description": "items defined in allOf are not examined", "data": [ 1, "hello" ], "valid": false } ] }, { "description": "items validation adjusts the starting index for additionalItems", "schema": { "items": [ { "type": "string" } ], "additionalItems": { "type": "integer" } }, "tests": [ { "description": "valid items", "data": [ "x", 2, 3 ], "valid": true }, { "description": "wrong type of second item", "data": [ "x", "y" ], "valid": false } ] }, { "description": "additionalItems with heterogeneous array", "schema": { "items": [{}], "additionalItems": false }, "tests": [ { "description": "heterogeneous invalid instance", "data": [ "foo", "bar", 37 ], "valid": false }, { "description": "valid instance", "data": [ null ], "valid": true } ] }, { "description": "additionalItems with null instance elements", "schema": { "additionalItems": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] bignum.json100640000766000024 540115240201330 25530 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional[ { "description": "integer", "schema": { "type": "integer" }, "tests": [ { "description": "a bignum is an integer", "data": 12345678910111213141516171819202122232425262728293031, "valid": true }, { "description": "a negative bignum is an integer", "data": -12345678910111213141516171819202122232425262728293031, "valid": true } ] }, { "description": "number", "schema": { "type": "number" }, "tests": [ { "description": "a bignum is a number", "data": 98249283749234923498293171823948729348710298301928331, "valid": true }, { "description": "a negative bignum is a number", "data": -98249283749234923498293171823948729348710298301928331, "valid": true } ] }, { "description": "string", "schema": { "type": "string" }, "tests": [ { "description": "a bignum is not a string", "data": 98249283749234923498293171823948729348710298301928331, "valid": false } ] }, { "description": "maximum integer comparison", "schema": { "maximum": 18446744073709551615 }, "tests": [ { "description": "comparison works for high numbers", "data": 18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision", "schema": { "exclusiveMaximum": 972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for high numbers", "data": 972783798187987123879878123.188781371, "valid": false } ] }, { "description": "minimum integer comparison", "schema": { "minimum": -18446744073709551615 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision on negative numbers", "schema": { "exclusiveMinimum": -972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -972783798187987123879878123.188781371, "valid": false } ] } ] idn-hostname.json100640000766000024 5677715240201330 25505 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of internationalized host names", "schema": { "$schema": "https://json-schema.org/v1", "format": "idn-hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name (example.test in Hangul)", "data": "실례.테스트", "valid": true }, { "description": "illegal first char U+302E Hangul single dot tone mark", "data": "〮실례.테스트", "valid": false }, { "description": "contains illegal char U+302E Hangul single dot tone mark", "data": "실〮례.테스트", "valid": false }, { "description": "a single label of 63 characters is valid", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": true }, { "description": "a single label of 64 characters is too long", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": false }, { "description": "invalid label, correct Punycode", "comment": "https://tools.ietf.org/html/rfc5890#section-2.3.2.1 https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc3492#section-7.1", "data": "-> $1.00 <--", "valid": false }, { "description": "valid Chinese Punycode", "comment": "https://tools.ietf.org/html/rfc5890#section-2.3.2.1 https://tools.ietf.org/html/rfc5891#section-4.4", "data": "xn--ihqwcrb4cv8a8dqg056pqjye", "valid": true }, { "description": "invalid Punycode", "comment": "https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "xn--X", "valid": false }, { "description": "U-label contains \"--\" in the 3rd and 4th position", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "XN--aa---o47jg78q", "valid": false }, { "description": "U-label starts with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "-hello", "valid": false }, { "description": "U-label ends with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "hello-", "valid": false }, { "description": "U-label starts and ends with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "-hello-", "valid": false }, { "description": "Begins with a Spacing Combining Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0903hello", "valid": false }, { "description": "Begins with a Nonspacing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0300hello", "valid": false }, { "description": "Begins with an Enclosing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0488hello", "valid": false }, { "description": "Exceptions that are PVALID, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u00df\u03c2\u0f0b\u3007", "valid": true }, { "description": "Exceptions that are PVALID, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u06fd\u06fe", "valid": true }, { "description": "Exceptions that are DISALLOWED, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u0640\u07fa", "valid": false }, { "description": "Exceptions that are DISALLOWED, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6 Note: The two combining marks (U+302E and U+302F) are in the middle and not at the start", "data": "\u3031\u3032\u3033\u3034\u3035\u302e\u302f\u303b", "valid": false }, { "description": "MIDDLE DOT with no preceding 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "a\u00b7l", "valid": false }, { "description": "MIDDLE DOT with nothing preceding", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "\u00b7l", "valid": false }, { "description": "MIDDLE DOT with no following 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7a", "valid": false }, { "description": "MIDDLE DOT with nothing following", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7", "valid": false }, { "description": "MIDDLE DOT with surrounding 'l's", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7l", "valid": true }, { "description": "Greek KERAIA not followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375S", "valid": false }, { "description": "Greek KERAIA not followed by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375", "valid": false }, { "description": "Greek KERAIA followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375\u03b2", "valid": true }, { "description": "Hebrew GERESH not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "A\u05f3\u05d1", "valid": false }, { "description": "Hebrew GERESH not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "\u05f3\u05d1", "valid": false }, { "description": "Hebrew GERESH preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "\u05d0\u05f3\u05d1", "valid": true }, { "description": "Hebrew GERSHAYIM not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "A\u05f4\u05d1", "valid": false }, { "description": "Hebrew GERSHAYIM not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "\u05f4\u05d1", "valid": false }, { "description": "Hebrew GERSHAYIM preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "\u05d0\u05f4\u05d1", "valid": true }, { "description": "KATAKANA MIDDLE DOT with no Hiragana, Katakana, or Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "def\u30fbabc", "valid": false }, { "description": "KATAKANA MIDDLE DOT with no other characters", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb", "valid": false }, { "description": "KATAKANA MIDDLE DOT with Hiragana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u3041", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Katakana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u30a1", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u4e08", "valid": true }, { "description": "Arabic-Indic digits mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "\u0628\u0660\u06f0", "valid": false }, { "description": "Arabic-Indic digits not mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "\u0628\u0660\u0628", "valid": true }, { "description": "Extended Arabic-Indic digits not mixed with Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.9", "data": "\u06f00", "valid": true }, { "description": "ZERO WIDTH JOINER not preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u0915\u200d\u0937", "valid": false }, { "description": "ZERO WIDTH JOINER not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u200d\u0937", "valid": false }, { "description": "ZERO WIDTH JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u0915\u094d\u200d\u0937", "valid": true }, { "description": "ZERO WIDTH NON-JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1", "data": "\u0915\u094d\u200c\u0937", "valid": true }, { "description": "ZERO WIDTH NON-JOINER not preceded by Virama but matches regexp", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1 https://www.w3.org/TR/alreq/#h_disjoining_enforcement", "data": "\u0628\u064a\u200c\u0628\u064a", "valid": true }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label starting with digit", "data": "1host", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "zero width non-joiner must pass at every occurrence", "comment": "https://www.rfc-editor.org/rfc/rfc5892#appendix-A.1", "data": "\u0915\u094d\u200c\u0937x\u200cy", "valid": false }, { "description": "Bidi domain name with a digit-first label is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2 a label in a Bidi domain name must start with an L, R or AL character", "data": "0a.\u05d0", "valid": false }, { "description": "label starting with a digit before a right-to-left letter is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "0\u0627", "valid": false }, { "description": "left-to-right label containing a right-to-left letter is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "a\u05d0", "valid": false }, { "description": "right-to-left label mixing both digit types is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "\u05d00\u0660", "valid": false }, { "description": "A-label that decodes to a disallowed code point is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 https://www.rfc-editor.org/rfc/rfc5892#section-2.6", "data": "xn--7a", "valid": false }, { "description": "A-label that decodes to a Bidi rule violation is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 https://www.rfc-editor.org/rfc/rfc5893", "data": "xn--0ca24w", "valid": false }, { "description": "a U-label whose A-label form is longer than 63 octets is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5891#section-4.2.4 the 63-octet limit is on the A-label form, not the code point count", "data": "\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc", "valid": false }, { "description": "empty label between two dots is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc1034#section-3.1", "data": "a..b", "valid": false }, { "description": "a name longer than 253 characters is invalid", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": false }, { "description": "A-label that decodes to only ASCII is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 a U-label must have at least one non-ASCII character", "data": "xn--example-", "valid": false }, { "description": "non-canonical Punycode that does not re-encode to itself is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5891#section-5.4 a label decoded from Punycode must be identical to the original A-label", "data": "xn---9uc", "valid": false } ] }, { "description": "validation of separators in internationalized host names", "specification": [ {"rfc3490": "3.1", "quote": "Whenever dots are used as label separators, the following characters MUST be recognized as dots: U+002E (full stop), U+3002 (ideographic full stop), U+FF0E (fullwidth full stop), U+FF61(halfwidth ideographic full stop)"} ], "schema": { "$schema": "https://json-schema.org/v1", "format": "idn-hostname" }, "tests": [ { "description": "single dot", "data": ".", "valid": false }, { "description": "single ideographic full stop", "data": "\u3002", "valid": false }, { "description": "single fullwidth full stop", "data": "\uff0e", "valid": false }, { "description": "single halfwidth ideographic full stop", "data": "\uff61", "valid": false }, { "description": "dot as label separator", "data": "a.b", "valid": true }, { "description": "ideographic full stop as label separator", "data": "a\u3002b", "valid": true }, { "description": "fullwidth full stop as label separator", "data": "a\uff0eb", "valid": true }, { "description": "halfwidth ideographic full stop as label separator", "data": "a\uff61b", "valid": true }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "leading ideographic full stop", "data": "\u3002example", "valid": false }, { "description": "leading fullwidth full stop", "data": "\uff0eexample", "valid": false }, { "description": "leading halfwidth ideographic full stop", "data": "\uff61example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "trailing ideographic full stop", "data": "example\u3002", "valid": false }, { "description": "trailing fullwidth full stop", "data": "example\uff0e", "valid": false }, { "description": "trailing halfwidth ideographic full stop", "data": "example\uff61", "valid": false }, { "description": "label too long if separator ignored (full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα.com", "valid": true }, { "description": "label too long if separator ignored (ideographic full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\u3002com", "valid": true }, { "description": "label too long if separator ignored (fullwidth full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\uff0ecom", "valid": true }, { "description": "label too long if separator ignored (halfwidth ideographic full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\uff61com", "valid": true } ] } ] json-pointer.json100640000766000024 1602115240201330 25520 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of JSON-pointers (JSON String Representation)", "schema": { "$schema": "https://json-schema.org/v1", "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid JSON-pointer", "data": "/foo/bar~0/baz~1/%a", "valid": true }, { "description": "not a valid JSON-pointer (~ not escaped)", "data": "/foo/bar~", "valid": false }, { "description": "valid JSON-pointer with empty segment", "data": "/foo//bar", "valid": true }, { "description": "valid JSON-pointer with the last empty segment", "data": "/foo/bar/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #1", "data": "", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #2", "data": "/foo", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #3", "data": "/foo/0", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #4", "data": "/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #5", "data": "/a~1b", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #6", "data": "/c%d", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #7", "data": "/e^f", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #8", "data": "/g|h", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #9", "data": "/i\\j", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #10", "data": "/k\"l", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #11", "data": "/ ", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #12", "data": "/m~0n", "valid": true }, { "description": "valid JSON-pointer used adding to the last array position", "data": "/foo/-", "valid": true }, { "description": "valid JSON-pointer (- used as object member name)", "data": "/foo/-/bar", "valid": true }, { "description": "valid JSON-pointer (multiple escaped characters)", "data": "/~1~0~0~1~1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #1", "data": "/~1.1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #2", "data": "/~0.1", "valid": true }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #1", "data": "#", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #2", "data": "#/", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #3", "data": "#a", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #1", "data": "/~0~", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #2", "data": "/~0/~", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #1", "data": "/~2", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #2", "data": "/~-1", "valid": false }, { "description": "not a valid JSON-pointer (multiple characters not escaped)", "data": "/~~", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #1", "data": "a", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #2", "data": "0", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #3", "data": "a/a", "valid": false }, { "description": "valid JSON-pointer (Unicode characters allowed by RFC 6901)", "data": "/foo/bar/😎", "valid": true }, { "description": "valid JSON-pointer (control characters allowed after JSON unescaping)", "data": "/foo\u0000bar\n\tbaz", "valid": true } ] } ] uri-template.json100640000766000024 1466715240201330 25517 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "format: uri-template", "schema": { "$schema": "https://json-schema.org/v1", "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid uri-template", "data": "http://example.com/dictionary/{term:1}/{term}", "valid": true }, { "description": "an invalid uri-template", "data": "http://example.com/dictionary/{term:1}/{term", "valid": false }, { "description": "a valid uri-template without variables", "data": "http://example.com/dictionary", "valid": true }, { "description": "a valid relative uri-template", "data": "dictionary/{term:1}/{term}", "valid": true }, { "description": "an empty expression is invalid", "data": "{}", "valid": false }, { "description": "an empty varspec inside the variable list is invalid", "data": "{a,,b}", "valid": false }, { "description": "a zero prefix max-length is invalid", "data": "{v:0}", "valid": false }, { "description": "a five-digit prefix max-length is invalid", "data": "{v:10000}", "valid": false }, { "description": "an empty string is a valid uri-template", "data": "", "valid": true }, { "description": "an unmatched closing brace is invalid", "data": "foo}bar", "valid": false }, { "description": "a percent-encoded triplet in a literal is valid", "data": "a%41b", "valid": true }, { "description": "a supplementary plane character in a literal is valid", "data": "a\ud83d\ude00b", "valid": true }, { "description": "reserved expansion operator", "data": "{+var}", "valid": true }, { "description": "fragment expansion operator", "data": "{#var}", "valid": true }, { "description": "label expansion operator", "data": "{.var}", "valid": true }, { "description": "path segment expansion operator", "data": "{/var}", "valid": true }, { "description": "path style parameter expansion operator", "data": "{;var}", "valid": true }, { "description": "form style query expansion operator", "data": "{?var}", "valid": true }, { "description": "form style query continuation operator", "data": "{&var}", "valid": true }, { "description": "the explode modifier is valid", "data": "{var*}", "valid": true }, { "description": "a variable list with more than one varspec is valid", "data": "{x,y}", "valid": true }, { "description": "a dotted variable name is valid", "data": "{a.b}", "valid": true }, { "description": "a double dot in a variable name is invalid", "data": "{a..b}", "valid": false }, { "description": "a variable name may start with a percent-encoded triplet", "data": "{%41}", "valid": true }, { "description": "a four-digit prefix max-length is valid", "data": "{v:1000}", "valid": true }, { "description": "a leading zero in the prefix max-length is invalid", "data": "{v:01}", "valid": false }, { "description": "a space in a literal is invalid", "data": "a b", "valid": false }, { "description": "a delete character in a literal is invalid", "data": "a\u007fb", "valid": false }, { "description": "a trailing comma in the variable list is invalid", "data": "{a,}", "valid": false }, { "description": "a default value in a varspec is invalid", "data": "{var=def}", "valid": false }, { "description": "an operator in place of the first varspec is invalid", "data": "{,+var}", "valid": false }, { "description": "an apostrophe in a literal is valid", "data": "a'b", "valid": true } ] } ] dynamicRef.json100640000766000024 351015240201330 25466 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "$dynamicRef skips over intermediate resources - pointer reference across resource boundary", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://test.json-schema.org/dynamic-ref-skips-intermediate-resource/optional/main", "type": "object", "properties": { "bar-item": { "$ref": "bar#/$defs/item" } }, "$defs": { "bar": { "$id": "bar", "type": "array", "items": { "$ref": "item" }, "$defs": { "item": { "$id": "item", "type": "object", "properties": { "content": { "$dynamicRef": "#content" } }, "$defs": { "defaultContent": { "$dynamicAnchor": "content", "type": "integer" } } }, "content": { "$dynamicAnchor": "content", "type": "string" } } } } }, "tests": [ { "description": "integer property passes", "data": { "bar-item": { "content": 42 } }, "valid": true }, { "description": "string property fails", "data": { "bar-item": { "content": "value" } }, "valid": false } ] }] format.json100644000766000024 215240201330 25447 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional[]format.json100644000766000024 215240201330 25450 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional[]format.json100644000766000024 215240201330 25452 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional[]folder000755000766000024 015240201330 21773 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotesfolderInteger.json100644000766000024 215240201330 25527 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/folder{}extra000755000766000024 015240201330 24020 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/include_optionalfoo.json100644000766000024 11415240201330 25612 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/include_optional/extra[ { "description": "hello", "schema": true, "tests": [] } ] v1000755000766000024 015240201330 22070 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-testsoutput-schema.json100640000766000024 437315240201330 25724 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/v1{ "$schema": "https://json-schema.org/v1", "$id": "https://json-schema.org/v1/output/schema", "description": "A schema that validates the minimum requirements for validation output", "anyOf": [ { "$ref": "#/$defs/flag" }, { "$ref": "#/$defs/basic" }, { "$ref": "#/$defs/hierarchical" } ], "$defs": { "outputUnit":{ "properties": { "valid": { "type": "boolean" }, "evaluationPath": { "type": "string", "format": "json-pointer" }, "schemaLocation": { "type": "string", "format": "uri" }, "instanceLocation": { "type": "string", "format": "json-pointer" }, "details": { "$ref": "#/$defs/outputUnitArray" }, "annotations": { "type": "object", "additionalProperties": true }, "droppedAnnotations": { "type": "object", "additionalProperties": true }, "errors": { "type": "object", "additionalProperties": { "type": "string" } } }, "required": [ "valid", "evaluationPath", "schemaLocation", "instanceLocation" ], "allOf": [ { "if": { "anyOf": [ { "required": [ "errors" ] }, { "required": [ "droppedAnnotations" ] } ] }, "then": { "properties": { "valid": { "const": false } } } }, { "if": { "required": [ "annotations" ] }, "then": { "properties": { "valid": { "const": true } } } } ] }, "outputUnitArray": { "type": "array", "items": { "$ref": "#/$defs/outputUnit" } }, "flag": { "properties": { "valid": { "type": "boolean" } }, "required": [ "valid" ] }, "basic": { "properties": { "valid": { "type": "boolean" }, "details": { "$ref": "#/$defs/outputUnitArray" } }, "required": [ "valid", "details" ] }, "hierarchical": { "$ref": "#/$defs/outputUnit" } } } foo-ref-string.json100640000766000024 13315240201330 25647 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/nested{ "type": "object", "properties": { "foo": {"$ref": "string.json"} } } multipleOf.json100640000766000024 537015240201330 25222 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "by int", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "multipleOf": 2 }, "tests": [ { "description": "int by int", "data": 10, "valid": true }, { "description": "int by int fail", "data": 7, "valid": false }, { "description": "ignores non-numbers", "data": "foo", "valid": true } ] }, { "description": "by number", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "multipleOf": 1.5 }, "tests": [ { "description": "zero is multiple of anything", "data": 0, "valid": true }, { "description": "4.5 is multiple of 1.5", "data": 4.5, "valid": true }, { "description": "-4.5 is multiple of 1.5", "data": -4.5, "valid": true }, { "description": "35 is not multiple of 1.5", "data": 35, "valid": false } ] }, { "description": "by small number", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "multipleOf": 0.0001 }, "tests": [ { "description": "0.0075 is multiple of 0.0001", "data": 0.0075, "valid": true }, { "description": "0.00751 is not multiple of 0.0001", "data": 0.00751, "valid": false } ] }, { "description": "float division = inf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer", "multipleOf": 0.123456789 }, "tests": [ { "description": "always invalid, but naive implementations may raise an overflow error", "data": 1e308, "valid": false } ] }, { "description": "small multiple of large integer", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer", "multipleOf": 1e-8 }, "tests": [ { "description": "any integer is a multiple of 1e-8", "data": 12391239123, "valid": true } ] } ] properties.json100640000766000024 1706315240201330 25320 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "object properties validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {"type": "integer"}, "bar": {"type": "string"} } }, "tests": [ { "description": "both properties present and valid is valid", "data": {"foo": 1, "bar": "baz"}, "valid": true }, { "description": "one property invalid is invalid", "data": {"foo": 1, "bar": {}}, "valid": false }, { "description": "both properties invalid is invalid", "data": {"foo": [], "bar": {}}, "valid": false }, { "description": "doesn't invalidate other properties", "data": {"quux": []}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "properties, patternProperties, additionalProperties interaction", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {"type": "array", "maxItems": 3}, "bar": {"type": "array"} }, "patternProperties": {"f.o": {"minItems": 2}}, "additionalProperties": {"type": "integer"} }, "tests": [ { "description": "property validates property", "data": {"foo": [1, 2]}, "valid": true }, { "description": "property invalidates property", "data": {"foo": [1, 2, 3, 4]}, "valid": false }, { "description": "patternProperty invalidates property", "data": {"foo": []}, "valid": false }, { "description": "patternProperty validates nonproperty", "data": {"fxo": [1, 2]}, "valid": true }, { "description": "patternProperty invalidates nonproperty", "data": {"fxo": []}, "valid": false }, { "description": "additionalProperty ignores property", "data": {"bar": []}, "valid": true }, { "description": "additionalProperty validates others", "data": {"quux": 3}, "valid": true }, { "description": "additionalProperty invalidates others", "data": {"quux": "foo"}, "valid": false } ] }, { "description": "properties with boolean schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": true, "bar": false } }, "tests": [ { "description": "no property present is valid", "data": {}, "valid": true }, { "description": "only 'true' property present is valid", "data": {"foo": 1}, "valid": true }, { "description": "only 'false' property present is invalid", "data": {"bar": 2}, "valid": false }, { "description": "both properties present is invalid", "data": {"foo": 1, "bar": 2}, "valid": false } ] }, { "description": "properties with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo\nbar": {"type": "number"}, "foo\"bar": {"type": "number"}, "foo\\bar": {"type": "number"}, "foo\rbar": {"type": "number"}, "foo\tbar": {"type": "number"}, "foo\fbar": {"type": "number"} } }, "tests": [ { "description": "object with all numbers is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1", "foo\\bar": "1", "foo\rbar": "1", "foo\tbar": "1", "foo\fbar": "1" }, "valid": false } ] }, { "description": "properties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] }, { "description": "properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "__proto__": {"type": "number"}, "toString": { "properties": { "length": { "type": "string" } } }, "constructor": {"type": "number"} } }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": true }, { "description": "__proto__ not valid", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString not valid", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor not valid", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present and valid", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] vocabulary.json100640000766000024 327415240201330 25252 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "schema that uses custom metaschema with with no validation vocabulary", "schema": { "$id": "https://schema/using/no/validation", "$schema": "http://localhost:1234/draft2019-09/metaschema-no-validation.json", "properties": { "badProperty": false, "numberProperty": { "minimum": 10 } } }, "tests": [ { "description": "applicator vocabulary still works", "data": { "badProperty": "this property should not exist" }, "valid": false }, { "description": "no validation: valid number", "data": { "numberProperty": 20 }, "valid": true }, { "description": "no validation: invalid number, but it still validates", "data": { "numberProperty": 1 }, "valid": true } ] }, { "description": "ignore unrecognized optional vocabulary", "schema": { "$schema": "http://localhost:1234/draft2019-09/metaschema-optional-vocabulary.json", "type": "number" }, "tests": [ { "description": "string value", "data": "foobar", "valid": false }, { "description": "number value", "data": 20, "valid": true } ] } ] dynamicRef.json100640000766000024 7171215240201330 25170 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "A $dynamicRef to a $dynamicAnchor in the same schema resource behaves like a normal $ref to an $anchor", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamicRef-dynamicAnchor-same-schema/root", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" } } }, "tests": [ { "description": "An array of strings is valid", "data": ["foo", "bar"], "valid": true }, { "description": "An array containing non-strings is invalid", "data": ["foo", 42], "valid": false } ] }, { "description": "A $dynamicRef to an $anchor in the same schema resource behaves like a normal $ref to an $anchor", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamicRef-anchor-same-schema/root", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { "foo": { "$anchor": "items", "type": "string" } } }, "tests": [ { "description": "An array of strings is valid", "data": ["foo", "bar"], "valid": true }, { "description": "An array containing non-strings is invalid", "data": ["foo", 42], "valid": false } ] }, { "description": "A $ref to a $dynamicAnchor in the same schema resource behaves like a normal $ref to an $anchor", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/ref-dynamicAnchor-same-schema/root", "type": "array", "items": { "$ref": "#items" }, "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" } } }, "tests": [ { "description": "An array of strings is valid", "data": ["foo", "bar"], "valid": true }, { "description": "An array containing non-strings is invalid", "data": ["foo", 42], "valid": false } ] }, { "description": "A $dynamicRef resolves to the first $dynamicAnchor still in scope that is encountered when the schema is evaluated", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/typical-dynamic-resolution/root", "$ref": "list", "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" }, "list": { "$id": "list", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { "items": { "$comment": "This is only needed to satisfy the bookending requirement", "$dynamicAnchor": "items" } } } } }, "tests": [ { "description": "An array of strings is valid", "data": ["foo", "bar"], "valid": true }, { "description": "An array containing non-strings is invalid", "data": ["foo", 42], "valid": false } ] }, { "description": "A $dynamicRef without anchor in fragment behaves identical to $ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamicRef-without-anchor/root", "$ref": "list", "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" }, "list": { "$id": "list", "type": "array", "items": { "$dynamicRef": "#/$defs/items" }, "$defs": { "items": { "$comment": "This is only needed to satisfy the bookending requirement", "$dynamicAnchor": "items", "type": "number" } } } } }, "tests": [ { "description": "An array of strings is invalid", "data": ["foo", "bar"], "valid": false }, { "description": "An array of numbers is valid", "data": [24, 42], "valid": true } ] }, { "description": "A $dynamicRef with intermediate scopes that don't include a matching $dynamicAnchor does not affect dynamic scope resolution", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamic-resolution-with-intermediate-scopes/root", "$ref": "intermediate-scope", "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" }, "intermediate-scope": { "$id": "intermediate-scope", "$ref": "list" }, "list": { "$id": "list", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { "items": { "$comment": "This is only needed to satisfy the bookending requirement", "$dynamicAnchor": "items" } } } } }, "tests": [ { "description": "An array of strings is valid", "data": ["foo", "bar"], "valid": true }, { "description": "An array containing non-strings is invalid", "data": ["foo", 42], "valid": false } ] }, { "description": "An $anchor with the same name as a $dynamicAnchor is not used for dynamic scope resolution", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamic-resolution-ignores-anchors/root", "$ref": "list", "$defs": { "foo": { "$anchor": "items", "type": "string" }, "list": { "$id": "list", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { "items": { "$comment": "This is only needed to satisfy the bookending requirement", "$dynamicAnchor": "items" } } } } }, "tests": [ { "description": "Any array is valid", "data": ["foo", 42], "valid": true } ] }, { "description": "A $dynamicRef without a matching $dynamicAnchor in the same schema resource behaves like a normal $ref to $anchor", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamic-resolution-without-bookend/root", "$ref": "list", "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" }, "list": { "$id": "list", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { "items": { "$comment": "This is only needed to give the reference somewhere to resolve to when it behaves like $ref", "$anchor": "items" } } } } }, "tests": [ { "description": "Any array is valid", "data": ["foo", 42], "valid": true } ] }, { "description": "A $dynamicRef with a non-matching $dynamicAnchor in the same schema resource behaves like a normal $ref to $anchor", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/unmatched-dynamic-anchor/root", "$ref": "list", "$defs": { "foo": { "$dynamicAnchor": "items", "type": "string" }, "list": { "$id": "list", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { "items": { "$comment": "This is only needed to give the reference somewhere to resolve to when it behaves like $ref", "$anchor": "items", "$dynamicAnchor": "foo" } } } } }, "tests": [ { "description": "Any array is valid", "data": ["foo", 42], "valid": true } ] }, { "description": "A $dynamicRef that initially resolves to a schema with a matching $dynamicAnchor resolves to the first $dynamicAnchor in the dynamic scope", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/relative-dynamic-reference/root", "$dynamicAnchor": "meta", "type": "object", "properties": { "foo": { "const": "pass" } }, "$ref": "extended", "$defs": { "extended": { "$id": "extended", "$dynamicAnchor": "meta", "type": "object", "properties": { "bar": { "$ref": "bar" } } }, "bar": { "$id": "bar", "type": "object", "properties": { "baz": { "$dynamicRef": "extended#meta" } } } } }, "tests": [ { "description": "The recursive part is valid against the root", "data": { "foo": "pass", "bar": { "baz": { "foo": "pass" } } }, "valid": true }, { "description": "The recursive part is not valid against the root", "data": { "foo": "pass", "bar": { "baz": { "foo": "fail" } } }, "valid": false } ] }, { "description": "A $dynamicRef that initially resolves to a schema without a matching $dynamicAnchor behaves like a normal $ref to $anchor", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/relative-dynamic-reference-without-bookend/root", "$dynamicAnchor": "meta", "type": "object", "properties": { "foo": { "const": "pass" } }, "$ref": "extended", "$defs": { "extended": { "$id": "extended", "$anchor": "meta", "type": "object", "properties": { "bar": { "$ref": "bar" } } }, "bar": { "$id": "bar", "type": "object", "properties": { "baz": { "$dynamicRef": "extended#meta" } } } } }, "tests": [ { "description": "The recursive part doesn't need to validate against the root", "data": { "foo": "pass", "bar": { "baz": { "foo": "fail" } } }, "valid": true } ] }, { "description": "multiple dynamic paths to the $dynamicRef keyword", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamic-ref-with-multiple-paths/main", "if": { "properties": { "kindOfList": { "const": "numbers" } }, "required": ["kindOfList"] }, "then": { "$ref": "numberList" }, "else": { "$ref": "stringList" }, "$defs": { "genericList": { "$id": "genericList", "properties": { "list": { "items": { "$dynamicRef": "#itemType" } } }, "$defs": { "defaultItemType": { "$comment": "Only needed to satisfy bookending requirement", "$dynamicAnchor": "itemType" } } }, "numberList": { "$id": "numberList", "$defs": { "itemType": { "$dynamicAnchor": "itemType", "type": "number" } }, "$ref": "genericList" }, "stringList": { "$id": "stringList", "$defs": { "itemType": { "$dynamicAnchor": "itemType", "type": "string" } }, "$ref": "genericList" } } }, "tests": [ { "description": "number list with number values", "data": { "kindOfList": "numbers", "list": [1.1] }, "valid": true }, { "description": "number list with string values", "data": { "kindOfList": "numbers", "list": ["foo"] }, "valid": false }, { "description": "string list with number values", "data": { "kindOfList": "strings", "list": [1.1] }, "valid": false }, { "description": "string list with string values", "data": { "kindOfList": "strings", "list": ["foo"] }, "valid": true } ] }, { "description": "after leaving a dynamic scope, it is not used by a $dynamicRef", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamic-ref-leaving-dynamic-scope/main", "if": { "$id": "first_scope", "$defs": { "thingy": { "$comment": "this is first_scope#thingy", "$dynamicAnchor": "thingy", "type": "number" } } }, "then": { "$id": "second_scope", "$ref": "start", "$defs": { "thingy": { "$comment": "this is second_scope#thingy, the final destination of the $dynamicRef", "$dynamicAnchor": "thingy", "type": "null" } } }, "$defs": { "start": { "$comment": "this is the landing spot from $ref", "$id": "start", "$dynamicRef": "inner_scope#thingy" }, "thingy": { "$comment": "this is the first stop for the $dynamicRef", "$id": "inner_scope", "$dynamicAnchor": "thingy", "type": "string" } } }, "tests": [ { "description": "string matches /$defs/thingy, but the $dynamicRef does not stop here", "data": "a string", "valid": false }, { "description": "first_scope is not in dynamic scope for the $dynamicRef", "data": 42, "valid": false }, { "description": "/then/$defs/thingy is the final stop for the $dynamicRef", "data": null, "valid": true } ] }, { "description": "strict-tree schema, guards against misspelled properties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/strict-tree.json", "$dynamicAnchor": "node", "$ref": "tree.json", "unevaluatedProperties": false }, "tests": [ { "description": "instance with misspelled field", "data": { "children": [{ "daat": 1 }] }, "valid": false }, { "description": "instance with correct field", "data": { "children": [{ "data": 1 }] }, "valid": true } ] }, { "description": "tests for implementation dynamic anchor and reference link", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/strict-extendible.json", "$ref": "extendible-dynamic-ref.json", "$defs": { "elements": { "$dynamicAnchor": "elements", "properties": { "a": true }, "required": ["a"], "additionalProperties": false } } }, "tests": [ { "description": "incorrect parent schema", "data": { "a": true }, "valid": false }, { "description": "incorrect extended schema", "data": { "elements": [ { "b": 1 } ] }, "valid": false }, { "description": "correct extended schema", "data": { "elements": [ { "a": 1 } ] }, "valid": true } ] }, { "description": "$ref and $dynamicAnchor are independent of order - $defs first", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/strict-extendible-allof-defs-first.json", "allOf": [ { "$ref": "extendible-dynamic-ref.json" }, { "$defs": { "elements": { "$dynamicAnchor": "elements", "properties": { "a": true }, "required": ["a"], "additionalProperties": false } } } ] }, "tests": [ { "description": "incorrect parent schema", "data": { "a": true }, "valid": false }, { "description": "incorrect extended schema", "data": { "elements": [ { "b": 1 } ] }, "valid": false }, { "description": "correct extended schema", "data": { "elements": [ { "a": 1 } ] }, "valid": true } ] }, { "description": "$ref and $dynamicAnchor are independent of order - $ref first", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/strict-extendible-allof-ref-first.json", "allOf": [ { "$defs": { "elements": { "$dynamicAnchor": "elements", "properties": { "a": true }, "required": ["a"], "additionalProperties": false } } }, { "$ref": "extendible-dynamic-ref.json" } ] }, "tests": [ { "description": "incorrect parent schema", "data": { "a": true }, "valid": false }, { "description": "incorrect extended schema", "data": { "elements": [ { "b": 1 } ] }, "valid": false }, { "description": "correct extended schema", "data": { "elements": [ { "a": 1 } ] }, "valid": true } ] }, { "description": "$ref to $dynamicRef finds detached $dynamicAnchor", "schema": { "$ref": "http://localhost:1234/draft2020-12/detached-dynamicref.json#/$defs/foo" }, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "non-number is invalid", "data": "a", "valid": false } ] }, { "description": "$dynamicRef points to a boolean schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "true": true, "false": false }, "properties": { "true": { "$dynamicRef": "#/$defs/true" }, "false": { "$dynamicRef": "#/$defs/false" } } }, "tests": [ { "description": "follow $dynamicRef to a true schema", "data": { "true": 1 }, "valid": true }, { "description": "follow $dynamicRef to a false schema", "data": { "false": 1 }, "valid": false } ] }, { "description": "$dynamicRef skips over intermediate resources - direct reference", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamic-ref-skips-intermediate-resource/main", "type": "object", "properties": { "bar-item": { "$ref": "item" } }, "$defs": { "bar": { "$id": "bar", "type": "array", "items": { "$ref": "item" }, "$defs": { "item": { "$id": "item", "type": "object", "properties": { "content": { "$dynamicRef": "#content" } }, "$defs": { "defaultContent": { "$dynamicAnchor": "content", "type": "integer" } } }, "content": { "$dynamicAnchor": "content", "type": "string" } } } } }, "tests": [ { "description": "integer property passes", "data": { "bar-item": { "content": 42 } }, "valid": true }, { "description": "string property fails", "data": { "bar-item": { "content": "value" } }, "valid": false } ] }, { "description": "$dynamicRef avoids the root of each schema, but scopes are still registered", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamic-ref-avoids-root-of-each-schema/base", "$ref": "first#/$defs/stuff", "$defs": { "first": { "$id": "first", "$defs": { "stuff": { "$ref": "second#/$defs/stuff" }, "length": { "$comment": "unused, because there is no $dynamicAnchor here", "maxLength": 1 } } }, "second": { "$id": "second", "$defs": { "stuff": { "$ref": "third#/$defs/stuff" }, "length": { "$dynamicAnchor": "length", "maxLength": 2 } } }, "third": { "$id": "third", "$defs": { "stuff": { "$dynamicRef": "#length" }, "length": { "$dynamicAnchor": "length", "maxLength": 3 } } } } }, "tests": [ { "description": "data is sufficient for schema at second#/$defs/length", "data": "hi", "valid": true }, { "description": "data is not sufficient for schema at second#/$defs/length", "data": "hey", "valid": false } ] } ] multipleOf.json100640000766000024 537015240201330 25204 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "by int", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "multipleOf": 2 }, "tests": [ { "description": "int by int", "data": 10, "valid": true }, { "description": "int by int fail", "data": 7, "valid": false }, { "description": "ignores non-numbers", "data": "foo", "valid": true } ] }, { "description": "by number", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "multipleOf": 1.5 }, "tests": [ { "description": "zero is multiple of anything", "data": 0, "valid": true }, { "description": "4.5 is multiple of 1.5", "data": 4.5, "valid": true }, { "description": "-4.5 is multiple of 1.5", "data": -4.5, "valid": true }, { "description": "35 is not multiple of 1.5", "data": 35, "valid": false } ] }, { "description": "by small number", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "multipleOf": 0.0001 }, "tests": [ { "description": "0.0075 is multiple of 0.0001", "data": 0.0075, "valid": true }, { "description": "0.00751 is not multiple of 0.0001", "data": 0.00751, "valid": false } ] }, { "description": "float division = inf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer", "multipleOf": 0.123456789 }, "tests": [ { "description": "always invalid, but naive implementations may raise an overflow error", "data": 1e308, "valid": false } ] }, { "description": "small multiple of large integer", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer", "multipleOf": 1e-8 }, "tests": [ { "description": "any integer is a multiple of 1e-8", "data": 12391239123, "valid": true } ] } ] properties.json100640000766000024 1706315240201330 25302 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "object properties validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {"type": "integer"}, "bar": {"type": "string"} } }, "tests": [ { "description": "both properties present and valid is valid", "data": {"foo": 1, "bar": "baz"}, "valid": true }, { "description": "one property invalid is invalid", "data": {"foo": 1, "bar": {}}, "valid": false }, { "description": "both properties invalid is invalid", "data": {"foo": [], "bar": {}}, "valid": false }, { "description": "doesn't invalidate other properties", "data": {"quux": []}, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "properties, patternProperties, additionalProperties interaction", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {"type": "array", "maxItems": 3}, "bar": {"type": "array"} }, "patternProperties": {"f.o": {"minItems": 2}}, "additionalProperties": {"type": "integer"} }, "tests": [ { "description": "property validates property", "data": {"foo": [1, 2]}, "valid": true }, { "description": "property invalidates property", "data": {"foo": [1, 2, 3, 4]}, "valid": false }, { "description": "patternProperty invalidates property", "data": {"foo": []}, "valid": false }, { "description": "patternProperty validates nonproperty", "data": {"fxo": [1, 2]}, "valid": true }, { "description": "patternProperty invalidates nonproperty", "data": {"fxo": []}, "valid": false }, { "description": "additionalProperty ignores property", "data": {"bar": []}, "valid": true }, { "description": "additionalProperty validates others", "data": {"quux": 3}, "valid": true }, { "description": "additionalProperty invalidates others", "data": {"quux": "foo"}, "valid": false } ] }, { "description": "properties with boolean schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": true, "bar": false } }, "tests": [ { "description": "no property present is valid", "data": {}, "valid": true }, { "description": "only 'true' property present is valid", "data": {"foo": 1}, "valid": true }, { "description": "only 'false' property present is invalid", "data": {"bar": 2}, "valid": false }, { "description": "both properties present is invalid", "data": {"foo": 1, "bar": 2}, "valid": false } ] }, { "description": "properties with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo\nbar": {"type": "number"}, "foo\"bar": {"type": "number"}, "foo\\bar": {"type": "number"}, "foo\rbar": {"type": "number"}, "foo\tbar": {"type": "number"}, "foo\fbar": {"type": "number"} } }, "tests": [ { "description": "object with all numbers is valid", "data": { "foo\nbar": 1, "foo\"bar": 1, "foo\\bar": 1, "foo\rbar": 1, "foo\tbar": 1, "foo\fbar": 1 }, "valid": true }, { "description": "object with strings is invalid", "data": { "foo\nbar": "1", "foo\"bar": "1", "foo\\bar": "1", "foo\rbar": "1", "foo\tbar": "1", "foo\fbar": "1" }, "valid": false } ] }, { "description": "properties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] }, { "description": "properties whose names are Javascript object property names", "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "__proto__": {"type": "number"}, "toString": { "properties": { "length": { "type": "string" } } }, "constructor": {"type": "number"} } }, "tests": [ { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "none of the properties mentioned", "data": {}, "valid": true }, { "description": "__proto__ not valid", "data": { "__proto__": "foo" }, "valid": false }, { "description": "toString not valid", "data": { "toString": { "length": 37 } }, "valid": false }, { "description": "constructor not valid", "data": { "constructor": { "length": 37 } }, "valid": false }, { "description": "all present and valid", "data": { "__proto__": 12, "toString": { "length": "foo" }, "constructor": 37 }, "valid": true } ] } ] vocabulary.json100640000766000024 325215240201330 25230 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "schema that uses custom metaschema with with no validation vocabulary", "schema": { "$id": "https://schema/using/no/validation", "$schema": "http://localhost:1234/draft2020-12/metaschema-no-validation.json", "properties": { "badProperty": false, "numberProperty": { "minimum": 10 } } }, "tests": [ { "description": "applicator vocabulary still works", "data": { "badProperty": "this property should not exist" }, "valid": false }, { "description": "no validation: valid number", "data": { "numberProperty": 20 }, "valid": true }, { "description": "no validation: invalid number, but it still validates", "data": { "numberProperty": 1 }, "valid": true } ] }, { "description": "ignore unrecognized optional vocabulary", "schema": { "$schema": "http://localhost:1234/draft2020-12/metaschema-optional-vocabulary.json", "type": "number" }, "tests": [ { "description": "string value", "data": "foobar", "valid": false }, { "description": "number value", "data": 20, "valid": true } ] } ] exclusiveMaximum.json100640000766000024 140715240201330 25770 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "exclusiveMaximum validation", "schema": { "exclusiveMaximum": 3.0 }, "tests": [ { "description": "below the exclusiveMaximum is valid", "data": 2.2, "valid": true }, { "description": "boundary point is invalid", "data": 3.0, "valid": false }, { "description": "above the exclusiveMaximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] exclusiveMinimum.json100640000766000024 140715240201330 25766 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "exclusiveMinimum validation", "schema": { "exclusiveMinimum": 1.1 }, "tests": [ { "description": "above the exclusiveMinimum is valid", "data": 1.2, "valid": true }, { "description": "boundary point is invalid", "data": 1.1, "valid": false }, { "description": "below the exclusiveMinimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] exclusiveMaximum.json100640000766000024 140715240201330 25771 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "exclusiveMaximum validation", "schema": { "exclusiveMaximum": 3.0 }, "tests": [ { "description": "below the exclusiveMaximum is valid", "data": 2.2, "valid": true }, { "description": "boundary point is invalid", "data": 3.0, "valid": false }, { "description": "above the exclusiveMaximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] exclusiveMinimum.json100640000766000024 140715240201330 25767 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "exclusiveMinimum validation", "schema": { "exclusiveMinimum": 1.1 }, "tests": [ { "description": "above the exclusiveMinimum is valid", "data": 1.2, "valid": true }, { "description": "boundary point is invalid", "data": 1.1, "valid": false }, { "description": "below the exclusiveMinimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] content.json100640000766000024 427415240201330 25730 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional[ { "description": "validation of string-encoded content based on media type", "schema": { "contentMediaType": "application/json" }, "tests": [ { "description": "a valid JSON document", "data": "{\"foo\": \"bar\"}", "valid": true }, { "description": "an invalid JSON document", "data": "{:}", "valid": false }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary string-encoding", "schema": { "contentEncoding": "base64" }, "tests": [ { "description": "a valid base64 string", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "an invalid base64 string (% is not a valid character)", "data": "eyJmb28iOi%iYmFyIn0K", "valid": false }, { "description": "ignores non-strings", "data": 100, "valid": true } ] }, { "description": "validation of binary-encoded media type documents", "schema": { "contentMediaType": "application/json", "contentEncoding": "base64" }, "tests": [ { "description": "a valid base64-encoded JSON document", "data": "eyJmb28iOiAiYmFyIn0K", "valid": true }, { "description": "a validly-encoded invalid JSON document", "data": "ezp9Cg==", "valid": false }, { "description": "an invalid base64 string that is valid JSON", "data": "{}", "valid": false }, { "description": "ignores non-strings", "data": 100, "valid": true } ] } ] additionalProperties.json100640000766000024 1467415240201330 26002 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "additionalProperties being false does not allow other properties", "schema": { "$schema": "https://json-schema.org/v1", "properties": {"foo": {}, "bar": {}}, "patternProperties": { "^v": {} }, "additionalProperties": false }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : "boom"}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobarbaz", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "patternProperties are not additional properties", "data": {"foo":1, "vroom": 2}, "valid": true } ] }, { "description": "non-ASCII pattern with additionalProperties", "schema": { "$schema": "https://json-schema.org/v1", "patternProperties": {"^á": {}}, "additionalProperties": false }, "tests": [ { "description": "matching the pattern is valid", "data": {"ármányos": 2}, "valid": true }, { "description": "not matching the pattern is invalid", "data": {"élmény": 2}, "valid": false } ] }, { "description": "additionalProperties with schema", "schema": { "$schema": "https://json-schema.org/v1", "properties": {"foo": {}, "bar": {}}, "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional valid property is valid", "data": {"foo" : 1, "bar" : 2, "quux" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : 12}, "valid": false } ] }, { "description": "additionalProperties can exist by itself", "schema": { "$schema": "https://json-schema.org/v1", "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "an additional valid property is valid", "data": {"foo" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1}, "valid": false } ] }, { "description": "additionalProperties are allowed by default", "schema": { "$schema": "https://json-schema.org/v1", "properties": {"foo": {}, "bar": {}} }, "tests": [ { "description": "additional properties are allowed", "data": {"foo": 1, "bar": 2, "quux": true}, "valid": true } ] }, { "description": "additionalProperties does not look in applicators", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ {"properties": {"foo": {}}} ], "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "properties defined in allOf are not examined", "data": {"foo": 1, "bar": true}, "valid": false } ] }, { "description": "additionalProperties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/v1", "additionalProperties": { "type": "null" } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] }, { "description": "additionalProperties with propertyNames", "schema": { "$schema": "https://json-schema.org/v1", "propertyNames": { "maxLength": 5 }, "additionalProperties": { "type": "number" } }, "tests": [ { "description": "Valid against both keywords", "data": { "apple": 4 }, "valid": true }, { "description": "Valid against propertyNames, but not additionalProperties", "data": { "fig": 2, "pear": "available" }, "valid": false } ] }, { "description": "dependentSchemas with additionalProperties", "schema": { "$schema": "https://json-schema.org/v1", "properties": {"foo2": {}}, "dependentSchemas": { "foo": {}, "foo2": { "properties": { "bar": {} } } }, "additionalProperties": false }, "tests": [ { "description": "additionalProperties doesn't consider dependentSchemas", "data": {"foo": ""}, "valid": false }, { "description": "additionalProperties can't see bar", "data": {"bar": ""}, "valid": false }, { "description": "additionalProperties can't see bar even when foo2 is present", "data": {"foo2": "", "bar": ""}, "valid": false } ] } ] iri-reference.json100640000766000024 442315240201330 25573 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of IRI References", "schema": { "$schema": "https://json-schema.org/v1", "format": "iri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IRI", "data": "http://ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid protocol-relative IRI Reference", "data": "//ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid relative IRI Reference", "data": "/âππ", "valid": true }, { "description": "an invalid IRI Reference", "data": "\\\\WINDOWS\\filëßåré", "valid": false }, { "description": "a valid IRI Reference", "data": "âππ", "valid": true }, { "description": "a valid IRI fragment", "data": "#ƒrägmênt", "valid": true }, { "description": "an invalid IRI fragment", "data": "#ƒräg\\mênt", "valid": false } ] } ] uri-reference.json100640000766000024 1557515240201330 25641 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of URI References", "schema": { "$schema": "https://json-schema.org/v1", "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URI", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid relative URI Reference", "data": "/abc", "valid": true }, { "description": "an invalid URI Reference", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "a valid URI Reference", "data": "abc", "valid": true }, { "description": "a valid URI fragment", "data": "#fragment", "valid": true }, { "description": "an invalid URI fragment", "data": "#frag\\ment", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "an empty URI reference", "comment": "RFC 3986, Section 4.2: relative-part includes path-empty, which is zero characters.", "data": "", "valid": true }, { "description": "a query-only reference", "comment": "RFC 3986, Section 4.2: relative-ref = relative-part [ \"?\" query ] [ \"#\" fragment ], so a query with an empty path is a reference.", "data": "?query=1", "valid": true }, { "description": "a network-path reference with an empty authority", "comment": "RFC 3986, Section 3.2.2: host = IP-literal / IPv4address / reg-name, and reg-name may be empty.", "data": "//", "valid": true }, { "description": "an incomplete percent-encoding", "comment": "RFC 3986, Section 2.1: pct-encoded = \"%\" HEXDIG HEXDIG.", "data": "/%zz", "valid": false }, { "description": "a double quote in a path", "comment": "RFC 3986, Appendix A: pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\", and the double quote is in none of them.", "data": "/a\"b", "valid": false }, { "description": "square brackets outside an authority", "comment": "RFC 3986, Section 3.2.2: square brackets are reserved for an IP-literal inside the authority. path-absolute is built from pchar, which excludes them.", "data": "/[::1]", "valid": false }, { "description": "a non-numeric port in a network-path reference", "comment": "RFC 3986, Section 3.2.3: port = *DIGIT. reg-name admits no colon, so the text after the colon can only be a port.", "data": "//example.com:abc/p", "valid": false }, { "description": "more than one at-sign in the authority", "comment": "RFC 3986, Section 3.2: authority = [ userinfo \"@\" ] host [ \":\" port ]. Neither userinfo nor host admits a literal at-sign.", "data": "//a@b@example.com/", "valid": false }, { "description": "a leading zero in the IPv4 part of an IPv6 literal", "comment": "RFC 3986, Section 3.2.2: inside an IP-literal the dotted quad must be an IPv4address, and dec-octet has no leading-zero alternative. There is no reg-name fallback inside brackets.", "data": "//[::ffff:192.168.0.01]/p", "valid": false }, { "description": "a colon in the first segment of a relative-path reference", "comment": "RFC 3986, Section 4.2: relative-part uses path-noscheme, whose first segment is segment-nz-nc - a non-zero-length segment without any colon. A scheme must start with ALPHA, so 1:b cannot be read as a URI either.", "data": "1:b", "valid": false }, { "description": "a colon in the first segment preceded by a dot-segment", "comment": "RFC 3986, Section 4.2: \"Such a segment must be preceded by a dot-segment (e.g., \\\"./this:that\\\") to make a relative-path reference.\"", "data": "./this:that", "valid": true } ] } ] unicode.json100644000766000024 215240201330 25606 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional[]unicode.json100644000766000024 215240201330 25610 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional[]unicode.json100644000766000024 215240201330 25611 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional[]propertyDependencies.json100644000766000024 215240201330 25670 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[]beta000755000766000024 015240201330 23711 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/skip_dir/optionaltest.json100640000766000024 34615240201330 25702 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/skip_dir/optional/beta[ { "description": "test group", "schema": true, "tests": [ { "description": "test", "data": 1, "valid": true } ] } ] name-defs.json100640000766000024 47515240201330 25236 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "orNull": { "anyOf": [ { "type": "null" }, { "$ref": "#" } ] } }, "type": "string" } name-defs.json100640000766000024 47515240201330 25220 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "orNull": { "anyOf": [ { "type": "null" }, { "$ref": "#" } ] } }, "type": "string" } detached-dynamicref.json100640000766000024 40715240201330 25736 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$id": "http://localhost:1234/v1/detached-dynamicref.json", "$schema": "https://json-schema.org/v1", "$defs": { "foo": { "$dynamicRef": "#detached" }, "detached": { "$dynamicAnchor": "detached", "type": "integer" } } } maxContains.json100640000766000024 705215240201330 25365 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "maxContains without contains is ignored", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maxContains": 1 }, "tests": [ { "description": "one item valid against lone maxContains", "data": [ 1 ], "valid": true }, { "description": "two items still valid against lone maxContains", "data": [ 1, 2 ], "valid": true } ] }, { "description": "maxContains with contains", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "maxContains": 1 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "all elements match, valid maxContains", "data": [ 1 ], "valid": true }, { "description": "all elements match, invalid maxContains", "data": [ 1, 1 ], "valid": false }, { "description": "some elements match, valid maxContains", "data": [ 1, 2 ], "valid": true }, { "description": "some elements match, invalid maxContains", "data": [ 1, 2, 1 ], "valid": false } ] }, { "description": "maxContains with contains, value with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "maxContains": 1.0 }, "tests": [ { "description": "one element matches, valid maxContains", "data": [ 1 ], "valid": true }, { "description": "too many elements match, invalid maxContains", "data": [ 1, 1 ], "valid": false } ] }, { "description": "minContains < maxContains", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "minContains": 1, "maxContains": 3 }, "tests": [ { "description": "actual < minContains < maxContains", "data": [ ], "valid": false }, { "description": "minContains < actual < maxContains", "data": [ 1, 1 ], "valid": true }, { "description": "minContains < maxContains < actual", "data": [ 1, 1, 1, 1 ], "valid": false } ] }, { "description": "maxContains = 0 with minContains = 0", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "minContains": 0, "maxContains": 0 }, "tests": [ { "description": "empty array", "data": [ ], "valid": true }, { "description": "one matching item", "data": [ 1 ], "valid": false } ] } ] minContains.json100640000766000024 1474015240201330 25405 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "minContains without contains is ignored", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minContains": 1 }, "tests": [ { "description": "one item valid against lone minContains", "data": [ 1 ], "valid": true }, { "description": "zero items still valid against lone minContains", "data": [], "valid": true } ] }, { "description": "minContains=1 with contains", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "minContains": 1 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "no elements match", "data": [ 2 ], "valid": false }, { "description": "single element matches, valid minContains", "data": [ 1 ], "valid": true }, { "description": "some elements match, valid minContains", "data": [ 1, 2 ], "valid": true }, { "description": "all elements match, valid minContains", "data": [ 1, 1 ], "valid": true } ] }, { "description": "minContains=2 with contains", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "minContains": 2 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "all elements match, invalid minContains", "data": [ 1 ], "valid": false }, { "description": "some elements match, invalid minContains", "data": [ 1, 2 ], "valid": false }, { "description": "all elements match, valid minContains (exactly as needed)", "data": [ 1, 1 ], "valid": true }, { "description": "all elements match, valid minContains (more than needed)", "data": [ 1, 1, 1 ], "valid": true }, { "description": "some elements match, valid minContains", "data": [ 1, 2, 1 ], "valid": true } ] }, { "description": "minContains=2 with contains with a decimal value", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "minContains": 2.0 }, "tests": [ { "description": "one element matches, invalid minContains", "data": [ 1 ], "valid": false }, { "description": "both elements match, valid minContains", "data": [ 1, 1 ], "valid": true } ] }, { "description": "maxContains = minContains", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "maxContains": 2, "minContains": 2 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "all elements match, invalid minContains", "data": [ 1 ], "valid": false }, { "description": "all elements match, invalid maxContains", "data": [ 1, 1, 1 ], "valid": false }, { "description": "all elements match, valid maxContains and minContains", "data": [ 1, 1 ], "valid": true } ] }, { "description": "maxContains < minContains", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "maxContains": 1, "minContains": 3 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "invalid minContains", "data": [ 1 ], "valid": false }, { "description": "invalid maxContains", "data": [ 1, 1, 1 ], "valid": false }, { "description": "invalid maxContains and minContains", "data": [ 1, 1 ], "valid": false } ] }, { "description": "minContains = 0 with no maxContains", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "minContains": 0 }, "tests": [ { "description": "empty data", "data": [ ], "valid": true }, { "description": "minContains = 0 makes contains always pass", "data": [ 2 ], "valid": true } ] }, { "description": "minContains = 0 with maxContains", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "contains": {"const": 1}, "minContains": 0, "maxContains": 1 }, "tests": [ { "description": "empty data", "data": [ ], "valid": true }, { "description": "not more than maxContains", "data": [ 1 ], "valid": true }, { "description": "too many", "data": [ 1, 1 ], "valid": false } ] } ] optional000755000766000024 015240201330 23673 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09id.json100640000766000024 350315240201330 25317 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "$id inside an enum is not a real identifier", "comment": "the implementation must not be confused by an $id buried in the enum", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "id_in_enum": { "enum": [ { "$id": "https://localhost:1234/draft2019-09/id/my_identifier.json", "type": "null" } ] }, "real_id_in_schema": { "$id": "https://localhost:1234/draft2019-09/id/my_identifier.json", "type": "string" }, "zzz_id_in_const": { "const": { "$id": "https://localhost:1234/draft2019-09/id/my_identifier.json", "type": "null" } } }, "anyOf": [ { "$ref": "#/$defs/id_in_enum" }, { "$ref": "https://localhost:1234/draft2019-09/id/my_identifier.json" } ] }, "tests": [ { "description": "exact match to enum, and type matches", "data": { "$id": "https://localhost:1234/draft2019-09/id/my_identifier.json", "type": "null" }, "valid": true }, { "description": "match $ref to $id", "data": "a string to match #/$defs/id_in_enum", "valid": true }, { "description": "no match on enum or $ref to $id", "data": 1, "valid": false } ] } ] uniqueItems.json100640000766000024 3422615240201330 25434 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "uniqueItems validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "uniqueItems": true }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is invalid", "data": [1, 1], "valid": false }, { "description": "non-unique array of more than two integers is invalid", "data": [1, 2, 1], "valid": false }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": false }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of strings is valid", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "non-unique array of strings is invalid", "data": ["foo", "bar", "foo"], "valid": false }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is invalid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": false }, { "description": "property order of array of objects is ignored", "data": [{"foo": "bar", "bar": "foo"}, {"bar": "foo", "foo": "bar"}], "valid": false }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is invalid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": false }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is invalid", "data": [["foo"], ["foo"]], "valid": false }, { "description": "non-unique array of more than two arrays is invalid", "data": [["foo"], ["bar"], ["foo"]], "valid": false }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "[1] and [true] are unique", "data": [[1], [true]], "valid": true }, { "description": "[0] and [false] are unique", "data": [[0], [false]], "valid": true }, { "description": "nested [1] and [true] are unique", "data": [[[1], "foo"], [[true], "foo"]], "valid": true }, { "description": "nested [0] and [false] are unique", "data": [[[0], "foo"], [[false], "foo"]], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1, "{}"], "valid": true }, { "description": "non-unique heterogeneous types are invalid", "data": [{}, [1], true, null, {}, 1], "valid": false }, { "description": "different objects are unique", "data": [{"a": 1, "b": 2}, {"a": 2, "b": 1}], "valid": true }, { "description": "objects are non-unique despite key order", "data": [{"a": 1, "b": 2}, {"b": 2, "a": 1}], "valid": false }, { "description": "{\"a\": false} and {\"a\": 0} are unique", "data": [{"a": false}, {"a": 0}], "valid": true }, { "description": "{\"a\": true} and {\"a\": 1} are unique", "data": [{"a": true}, {"a": 1}], "valid": true } ] }, { "description": "uniqueItems with an array of items", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is not valid", "data": [false, true, "foo", "foo"], "valid": false }, { "description": "non-unique array extended from [true, false] is not valid", "data": [true, false, "foo", "foo"], "valid": false } ] }, { "description": "uniqueItems with an array of items and additionalItems=false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] }, { "description": "uniqueItems=false validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "uniqueItems": false }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is valid", "data": [1, 1], "valid": true }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": true }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": true }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": true }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is valid", "data": [["foo"], ["foo"]], "valid": true }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1], "valid": true }, { "description": "non-unique heterogeneous types are valid", "data": [{}, [1], true, null, {}, 1], "valid": true } ] }, { "description": "uniqueItems=false with an array of items", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is valid", "data": [false, true, "foo", "foo"], "valid": true }, { "description": "non-unique array extended from [true, false] is valid", "data": [true, false, "foo", "foo"], "valid": true } ] }, { "description": "uniqueItems=false with an array of items and additionalItems=false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false, "additionalItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] } ] maxContains.json100640000766000024 705215240201330 25347 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "maxContains without contains is ignored", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxContains": 1 }, "tests": [ { "description": "one item valid against lone maxContains", "data": [ 1 ], "valid": true }, { "description": "two items still valid against lone maxContains", "data": [ 1, 2 ], "valid": true } ] }, { "description": "maxContains with contains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "maxContains": 1 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "all elements match, valid maxContains", "data": [ 1 ], "valid": true }, { "description": "all elements match, invalid maxContains", "data": [ 1, 1 ], "valid": false }, { "description": "some elements match, valid maxContains", "data": [ 1, 2 ], "valid": true }, { "description": "some elements match, invalid maxContains", "data": [ 1, 2, 1 ], "valid": false } ] }, { "description": "maxContains with contains, value with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "maxContains": 1.0 }, "tests": [ { "description": "one element matches, valid maxContains", "data": [ 1 ], "valid": true }, { "description": "too many elements match, invalid maxContains", "data": [ 1, 1 ], "valid": false } ] }, { "description": "minContains < maxContains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "minContains": 1, "maxContains": 3 }, "tests": [ { "description": "actual < minContains < maxContains", "data": [ ], "valid": false }, { "description": "minContains < actual < maxContains", "data": [ 1, 1 ], "valid": true }, { "description": "minContains < maxContains < actual", "data": [ 1, 1, 1, 1 ], "valid": false } ] }, { "description": "maxContains = 0 with minContains = 0", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "minContains": 0, "maxContains": 0 }, "tests": [ { "description": "empty array", "data": [ ], "valid": true }, { "description": "one matching item", "data": [ 1 ], "valid": false } ] } ] minContains.json100640000766000024 1471415240201330 25370 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "minContains without contains is ignored", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minContains": 1 }, "tests": [ { "description": "one item valid against lone minContains", "data": [ 1 ], "valid": true }, { "description": "zero items still valid against lone minContains", "data": [], "valid": true } ] }, { "description": "minContains=1 with contains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "minContains": 1 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "no elements match", "data": [ 2 ], "valid": false }, { "description": "single element matches, valid minContains", "data": [ 1 ], "valid": true }, { "description": "some elements match, valid minContains", "data": [ 1, 2 ], "valid": true }, { "description": "all elements match, valid minContains", "data": [ 1, 1 ], "valid": true } ] }, { "description": "minContains=2 with contains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "minContains": 2 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "all elements match, invalid minContains", "data": [ 1 ], "valid": false }, { "description": "some elements match, invalid minContains", "data": [ 1, 2 ], "valid": false }, { "description": "all elements match, valid minContains (exactly as needed)", "data": [ 1, 1 ], "valid": true }, { "description": "all elements match, valid minContains (more than needed)", "data": [ 1, 1, 1 ], "valid": true }, { "description": "some elements match, valid minContains", "data": [ 1, 2, 1 ], "valid": true } ] }, { "description": "minContains=2 with contains with a decimal value", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "minContains": 2.0 }, "tests": [ { "description": "one element matches, invalid minContains", "data": [ 1 ], "valid": false }, { "description": "both elements match, valid minContains", "data": [ 1, 1 ], "valid": true } ] }, { "description": "maxContains = minContains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "maxContains": 2, "minContains": 2 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "all elements match, invalid minContains", "data": [ 1 ], "valid": false }, { "description": "all elements match, invalid maxContains", "data": [ 1, 1, 1 ], "valid": false }, { "description": "all elements match, valid maxContains and minContains", "data": [ 1, 1 ], "valid": true } ] }, { "description": "maxContains < minContains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "maxContains": 1, "minContains": 3 }, "tests": [ { "description": "empty data", "data": [ ], "valid": false }, { "description": "invalid minContains", "data": [ 1 ], "valid": false }, { "description": "invalid maxContains", "data": [ 1, 1, 1 ], "valid": false }, { "description": "invalid maxContains and minContains", "data": [ 1, 1 ], "valid": false } ] }, { "description": "minContains = 0", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "minContains": 0 }, "tests": [ { "description": "empty data", "data": [ ], "valid": true }, { "description": "minContains = 0 makes contains always pass", "data": [ 2 ], "valid": true } ] }, { "description": "minContains = 0 with maxContains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"const": 1}, "minContains": 0, "maxContains": 1 }, "tests": [ { "description": "empty data", "data": [ ], "valid": true }, { "description": "not more than maxContains", "data": [ 1 ], "valid": true }, { "description": "too many", "data": [ 1, 1 ], "valid": false } ] } ] optional000755000766000024 015240201330 23655 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12id.json100640000766000024 350315240201330 25301 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "$id inside an enum is not a real identifier", "comment": "the implementation must not be confused by an $id buried in the enum", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "id_in_enum": { "enum": [ { "$id": "https://localhost:1234/draft2020-12/id/my_identifier.json", "type": "null" } ] }, "real_id_in_schema": { "$id": "https://localhost:1234/draft2020-12/id/my_identifier.json", "type": "string" }, "zzz_id_in_const": { "const": { "$id": "https://localhost:1234/draft2020-12/id/my_identifier.json", "type": "null" } } }, "anyOf": [ { "$ref": "#/$defs/id_in_enum" }, { "$ref": "https://localhost:1234/draft2020-12/id/my_identifier.json" } ] }, "tests": [ { "description": "exact match to enum, and type matches", "data": { "$id": "https://localhost:1234/draft2020-12/id/my_identifier.json", "type": "null" }, "valid": true }, { "description": "match $ref to $id", "data": "a string to match #/$defs/id_in_enum", "valid": true }, { "description": "no match on enum or $ref to $id", "data": 1, "valid": false } ] } ] prefixItems.json100640000766000024 556115240201330 25365 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "a schema given for prefixItems", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ {"type": "integer"}, {"type": "string"} ] }, "tests": [ { "description": "correct types", "data": [ 1, "foo" ], "valid": true }, { "description": "wrong types", "data": [ "foo", 1 ], "valid": false }, { "description": "incomplete array of items", "data": [ 1 ], "valid": true }, { "description": "array with additional items", "data": [ 1, "foo", true ], "valid": true }, { "description": "empty array", "data": [ ], "valid": true }, { "description": "JavaScript pseudo-array is valid", "data": { "0": "invalid", "1": "valid", "length": 2 }, "valid": true } ] }, { "description": "prefixItems with boolean schemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [true, false] }, "tests": [ { "description": "array with one item is valid", "data": [ 1 ], "valid": true }, { "description": "array with two items is invalid", "data": [ 1, "foo" ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "additional items are allowed by default", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [{"type": "integer"}] }, "tests": [ { "description": "only the first item is validated", "data": [1, "foo", false], "valid": true } ] }, { "description": "prefixItems with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "type": "null" } ] }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] uniqueItems.json100640000766000024 3423215240201330 25413 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "uniqueItems validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "uniqueItems": true }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is invalid", "data": [1, 1], "valid": false }, { "description": "non-unique array of more than two integers is invalid", "data": [1, 2, 1], "valid": false }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": false }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of strings is valid", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "non-unique array of strings is invalid", "data": ["foo", "bar", "foo"], "valid": false }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is invalid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": false }, { "description": "property order of array of objects is ignored", "data": [{"foo": "bar", "bar": "foo"}, {"bar": "foo", "foo": "bar"}], "valid": false }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is invalid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": false }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is invalid", "data": [["foo"], ["foo"]], "valid": false }, { "description": "non-unique array of more than two arrays is invalid", "data": [["foo"], ["bar"], ["foo"]], "valid": false }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "[1] and [true] are unique", "data": [[1], [true]], "valid": true }, { "description": "[0] and [false] are unique", "data": [[0], [false]], "valid": true }, { "description": "nested [1] and [true] are unique", "data": [[[1], "foo"], [[true], "foo"]], "valid": true }, { "description": "nested [0] and [false] are unique", "data": [[[0], "foo"], [[false], "foo"]], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1, "{}"], "valid": true }, { "description": "non-unique heterogeneous types are invalid", "data": [{}, [1], true, null, {}, 1], "valid": false }, { "description": "different objects are unique", "data": [{"a": 1, "b": 2}, {"a": 2, "b": 1}], "valid": true }, { "description": "objects are non-unique despite key order", "data": [{"a": 1, "b": 2}, {"b": 2, "a": 1}], "valid": false }, { "description": "{\"a\": false} and {\"a\": 0} are unique", "data": [{"a": false}, {"a": 0}], "valid": true }, { "description": "{\"a\": true} and {\"a\": 1} are unique", "data": [{"a": true}, {"a": 1}], "valid": true } ] }, { "description": "uniqueItems with an array of items", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is not valid", "data": [false, true, "foo", "foo"], "valid": false }, { "description": "non-unique array extended from [true, false] is not valid", "data": [true, false, "foo", "foo"], "valid": false } ] }, { "description": "uniqueItems with an array of items and additionalItems=false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": true, "items": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is not valid", "data": [false, false], "valid": false }, { "description": "[true, true] from items array is not valid", "data": [true, true], "valid": false }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] }, { "description": "uniqueItems=false validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "uniqueItems": false }, "tests": [ { "description": "unique array of integers is valid", "data": [1, 2], "valid": true }, { "description": "non-unique array of integers is valid", "data": [1, 1], "valid": true }, { "description": "numbers are unique if mathematically unequal", "data": [1.0, 1.00, 1], "valid": true }, { "description": "false is not equal to zero", "data": [0, false], "valid": true }, { "description": "true is not equal to one", "data": [1, true], "valid": true }, { "description": "unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "baz"}], "valid": true }, { "description": "non-unique array of objects is valid", "data": [{"foo": "bar"}, {"foo": "bar"}], "valid": true }, { "description": "unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}} ], "valid": true }, { "description": "non-unique array of nested objects is valid", "data": [ {"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}} ], "valid": true }, { "description": "unique array of arrays is valid", "data": [["foo"], ["bar"]], "valid": true }, { "description": "non-unique array of arrays is valid", "data": [["foo"], ["foo"]], "valid": true }, { "description": "1 and true are unique", "data": [1, true], "valid": true }, { "description": "0 and false are unique", "data": [0, false], "valid": true }, { "description": "unique heterogeneous types are valid", "data": [{}, [1], true, null, 1], "valid": true }, { "description": "non-unique heterogeneous types are valid", "data": [{}, [1], true, null, {}, 1], "valid": true } ] }, { "description": "uniqueItems=false with an array of items", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "unique array extended from [false, true] is valid", "data": [false, true, "foo", "bar"], "valid": true }, { "description": "unique array extended from [true, false] is valid", "data": [true, false, "foo", "bar"], "valid": true }, { "description": "non-unique array extended from [false, true] is valid", "data": [false, true, "foo", "foo"], "valid": true }, { "description": "non-unique array extended from [true, false] is valid", "data": [true, false, "foo", "foo"], "valid": true } ] }, { "description": "uniqueItems=false with an array of items and additionalItems=false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [{"type": "boolean"}, {"type": "boolean"}], "uniqueItems": false, "items": false }, "tests": [ { "description": "[false, true] from items array is valid", "data": [false, true], "valid": true }, { "description": "[true, false] from items array is valid", "data": [true, false], "valid": true }, { "description": "[false, false] from items array is valid", "data": [false, false], "valid": true }, { "description": "[true, true] from items array is valid", "data": [true, true], "valid": true }, { "description": "extra items are invalid even if unique", "data": [false, true, null], "valid": false } ] } ] patternProperties.json100640000766000024 750315240201330 26155 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "patternProperties validates properties matching a regex", "schema": { "patternProperties": { "f.*o": {"type": "integer"} } }, "tests": [ { "description": "a single valid match is valid", "data": {"foo": 1}, "valid": true }, { "description": "multiple valid matches is valid", "data": {"foo": 1, "foooooo" : 2}, "valid": true }, { "description": "a single invalid match is invalid", "data": {"foo": "bar", "fooooo": 2}, "valid": false }, { "description": "multiple invalid matches is invalid", "data": {"foo": "bar", "foooooo" : "baz"}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "multiple simultaneous patternProperties are validated", "schema": { "patternProperties": { "a*": {"type": "integer"}, "aaa*": {"maximum": 20} } }, "tests": [ { "description": "a single valid match is valid", "data": {"a": 21}, "valid": true }, { "description": "a simultaneous match is valid", "data": {"aaaa": 18}, "valid": true }, { "description": "multiple matches is valid", "data": {"a": 21, "aaaa": 18}, "valid": true }, { "description": "an invalid due to one is invalid", "data": {"a": "bar"}, "valid": false }, { "description": "an invalid due to the other is invalid", "data": {"aaaa": 31}, "valid": false }, { "description": "an invalid due to both is invalid", "data": {"aaa": "foo", "aaaa": 31}, "valid": false } ] }, { "description": "regexes are not anchored by default and are case sensitive", "schema": { "patternProperties": { "[0-9]{2,}": { "type": "boolean" }, "X_": { "type": "string" } } }, "tests": [ { "description": "non recognized members are ignored", "data": { "answer 1": "42" }, "valid": true }, { "description": "recognized members are accounted for", "data": { "a31b": null }, "valid": false }, { "description": "regexes are case sensitive", "data": { "a_x_3": 3 }, "valid": true }, { "description": "regexes are case sensitive, 2", "data": { "a_X_3": 3 }, "valid": false } ] }, { "description": "patternProperties with null valued instance properties", "schema": { "patternProperties": { "^.*bar$": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foobar": null}, "valid": true } ] } ] patternProperties.json100640000766000024 771415240201330 26162 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "patternProperties validates properties matching a regex", "schema": { "patternProperties": { "f.*o": {"type": "integer"} } }, "tests": [ { "description": "a single valid match is valid", "data": {"foo": 1}, "valid": true }, { "description": "multiple valid matches is valid", "data": {"foo": 1, "foooooo" : 2}, "valid": true }, { "description": "a single invalid match is invalid", "data": {"foo": "bar", "fooooo": 2}, "valid": false }, { "description": "multiple invalid matches is invalid", "data": {"foo": "bar", "foooooo" : "baz"}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "multiple simultaneous patternProperties are validated", "schema": { "patternProperties": { "a*": {"type": "integer"}, "aaa*": {"maximum": 20} } }, "tests": [ { "description": "a single valid match is valid", "data": {"a": 21}, "valid": true }, { "description": "a simultaneous match is valid", "data": {"aaaa": 18}, "valid": true }, { "description": "multiple matches is valid", "data": {"a": 21, "aaaa": 18}, "valid": true }, { "description": "an invalid due to one is invalid", "data": {"a": "bar"}, "valid": false }, { "description": "an invalid due to the other is invalid", "data": {"aaaa": 31}, "valid": false }, { "description": "an invalid due to both is invalid", "data": {"aaa": "foo", "aaaa": 31}, "valid": false } ] }, { "description": "regexes are not anchored by default and are case sensitive", "schema": { "patternProperties": { "[0-9]{2,}": { "type": "boolean" }, "X_": { "type": "string" } } }, "tests": [ { "description": "non recognized members are ignored", "data": { "answer 1": "42" }, "valid": true }, { "description": "recognized members are accounted for", "data": { "a31b": null }, "valid": false }, { "description": "regexes are case sensitive", "data": { "a_x_3": 3 }, "valid": true }, { "description": "regexes are case sensitive, 2", "data": { "a_X_3": 3 }, "valid": false } ] }, { "description": "patternProperties with null valued instance properties", "schema": { "patternProperties": { "^.*bar$": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foobar": null}, "valid": true } ] } ] patternProperties.json100640000766000024 1207115240201330 26174 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "patternProperties validates properties matching a regex", "schema": { "patternProperties": { "f.*o": {"type": "integer"} } }, "tests": [ { "description": "a single valid match is valid", "data": {"foo": 1}, "valid": true }, { "description": "multiple valid matches is valid", "data": {"foo": 1, "foooooo" : 2}, "valid": true }, { "description": "a single invalid match is invalid", "data": {"foo": "bar", "fooooo": 2}, "valid": false }, { "description": "multiple invalid matches is invalid", "data": {"foo": "bar", "foooooo" : "baz"}, "valid": false }, { "description": "ignores arrays", "data": ["foo"], "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "multiple simultaneous patternProperties are validated", "schema": { "patternProperties": { "a*": {"type": "integer"}, "aaa*": {"maximum": 20} } }, "tests": [ { "description": "a single valid match is valid", "data": {"a": 21}, "valid": true }, { "description": "a simultaneous match is valid", "data": {"aaaa": 18}, "valid": true }, { "description": "multiple matches is valid", "data": {"a": 21, "aaaa": 18}, "valid": true }, { "description": "an invalid due to one is invalid", "data": {"a": "bar"}, "valid": false }, { "description": "an invalid due to the other is invalid", "data": {"aaaa": 31}, "valid": false }, { "description": "an invalid due to both is invalid", "data": {"aaa": "foo", "aaaa": 31}, "valid": false } ] }, { "description": "regexes are not anchored by default and are case sensitive", "schema": { "patternProperties": { "[0-9]{2,}": { "type": "boolean" }, "X_": { "type": "string" } } }, "tests": [ { "description": "non recognized members are ignored", "data": { "answer 1": "42" }, "valid": true }, { "description": "recognized members are accounted for", "data": { "a31b": null }, "valid": false }, { "description": "regexes are case sensitive", "data": { "a_x_3": 3 }, "valid": true }, { "description": "regexes are case sensitive, 2", "data": { "a_X_3": 3 }, "valid": false } ] }, { "description": "patternProperties with boolean schemas", "schema": { "patternProperties": { "f.*": true, "b.*": false } }, "tests": [ { "description": "object with property matching schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property matching schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "object with a property matching both true and false is invalid", "data": {"foobar":1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "patternProperties with null valued instance properties", "schema": { "patternProperties": { "^.*bar$": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foobar": null}, "valid": true } ] } ] patternProperties.json100640000766000024 1207115240201330 26175 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "patternProperties validates properties matching a regex", "schema": { "patternProperties": { "f.*o": {"type": "integer"} } }, "tests": [ { "description": "a single valid match is valid", "data": {"foo": 1}, "valid": true }, { "description": "multiple valid matches is valid", "data": {"foo": 1, "foooooo" : 2}, "valid": true }, { "description": "a single invalid match is invalid", "data": {"foo": "bar", "fooooo": 2}, "valid": false }, { "description": "multiple invalid matches is invalid", "data": {"foo": "bar", "foooooo" : "baz"}, "valid": false }, { "description": "ignores arrays", "data": ["foo"], "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "multiple simultaneous patternProperties are validated", "schema": { "patternProperties": { "a*": {"type": "integer"}, "aaa*": {"maximum": 20} } }, "tests": [ { "description": "a single valid match is valid", "data": {"a": 21}, "valid": true }, { "description": "a simultaneous match is valid", "data": {"aaaa": 18}, "valid": true }, { "description": "multiple matches is valid", "data": {"a": 21, "aaaa": 18}, "valid": true }, { "description": "an invalid due to one is invalid", "data": {"a": "bar"}, "valid": false }, { "description": "an invalid due to the other is invalid", "data": {"aaaa": 31}, "valid": false }, { "description": "an invalid due to both is invalid", "data": {"aaa": "foo", "aaaa": 31}, "valid": false } ] }, { "description": "regexes are not anchored by default and are case sensitive", "schema": { "patternProperties": { "[0-9]{2,}": { "type": "boolean" }, "X_": { "type": "string" } } }, "tests": [ { "description": "non recognized members are ignored", "data": { "answer 1": "42" }, "valid": true }, { "description": "recognized members are accounted for", "data": { "a31b": null }, "valid": false }, { "description": "regexes are case sensitive", "data": { "a_x_3": 3 }, "valid": true }, { "description": "regexes are case sensitive, 2", "data": { "a_X_3": 3 }, "valid": false } ] }, { "description": "patternProperties with boolean schemas", "schema": { "patternProperties": { "f.*": true, "b.*": false } }, "tests": [ { "description": "object with property matching schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property matching schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "object with a property matching both true and false is invalid", "data": {"foobar":1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "patternProperties with null valued instance properties", "schema": { "patternProperties": { "^.*bar$": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foobar": null}, "valid": true } ] } ] unevaluatedProperties.json100640000766000024 14220615240201330 26220 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "unevaluatedProperties true", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "unevaluatedProperties": true }, "tests": [ { "description": "with no unevaluated properties", "data": {}, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo" }, "valid": true } ] }, { "description": "unevaluatedProperties schema", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "unevaluatedProperties": { "type": "string", "minLength": 3 } }, "tests": [ { "description": "with no unevaluated properties", "data": {}, "valid": true }, { "description": "with valid unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with invalid unevaluated properties", "data": { "foo": "fo" }, "valid": false } ] }, { "description": "unevaluatedProperties false", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": {}, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo" }, "valid": false } ] }, { "description": "unevaluatedProperties with adjacent properties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with adjacent patternProperties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "patternProperties": { "^foo": { "type": "string" } }, "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with adjacent bool additionalProperties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "additionalProperties": true, "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with adjacent non-bool additionalProperties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "additionalProperties": {"type": "string"}, "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with nested properties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "properties": { "bar": { "type": "string" } } } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with nested patternProperties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "patternProperties": { "^bar": { "type": "string" } } } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with nested additionalProperties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "additionalProperties": true } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with nested unevaluatedProperties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "unevaluatedProperties": true } ], "unevaluatedProperties": { "type": "string", "maxLength": 2 } }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with anyOf", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "anyOf": [ { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] }, { "properties": { "baz": { "const": "baz" } }, "required": ["baz"] }, { "properties": { "quux": { "const": "quux" } }, "required": ["quux"] } ], "unevaluatedProperties": false }, "tests": [ { "description": "when one matches and has no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "when one matches and has unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "not-baz" }, "valid": false }, { "description": "when two match and has no unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": true }, { "description": "when two match and has unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz", "quux": "not-quux" }, "valid": false } ] }, { "description": "unevaluatedProperties with oneOf", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "oneOf": [ { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] }, { "properties": { "baz": { "const": "baz" } }, "required": ["baz"] } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "quux": "quux" }, "valid": false } ] }, { "description": "unevaluatedProperties with not", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "not": { "not": { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] } }, "unevaluatedProperties": false }, "tests": [ { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with if/then/else", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "if": { "properties": { "foo": { "const": "then" } }, "required": ["foo"] }, "then": { "properties": { "bar": { "type": "string" } }, "required": ["bar"] }, "else": { "properties": { "baz": { "type": "string" } }, "required": ["baz"] }, "unevaluatedProperties": false }, "tests": [ { "description": "when if is true and has no unevaluated properties", "data": { "foo": "then", "bar": "bar" }, "valid": true }, { "description": "when if is true and has unevaluated properties", "data": { "foo": "then", "bar": "bar", "baz": "baz" }, "valid": false }, { "description": "when if is false and has no unevaluated properties", "data": { "baz": "baz" }, "valid": true }, { "description": "when if is false and has unevaluated properties", "data": { "foo": "else", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with if/then/else, then not defined", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "if": { "properties": { "foo": { "const": "then" } }, "required": ["foo"] }, "else": { "properties": { "baz": { "type": "string" } }, "required": ["baz"] }, "unevaluatedProperties": false }, "tests": [ { "description": "when if is true and has no unevaluated properties", "data": { "foo": "then" }, "valid": true }, { "description": "when if is true and has unevaluated properties", "data": { "foo": "then", "bar": "bar" }, "valid": false }, { "description": "when if is false and has no unevaluated properties", "data": { "baz": "baz" }, "valid": true }, { "description": "when if is false and has unevaluated properties", "data": { "foo": "else", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with if/then/else, else not defined", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "if": { "properties": { "foo": { "const": "then" } }, "required": ["foo"] }, "then": { "properties": { "bar": { "type": "string" } }, "required": ["bar"] }, "unevaluatedProperties": false }, "tests": [ { "description": "when if is true and has no unevaluated properties", "data": { "foo": "then", "bar": "bar" }, "valid": true }, { "description": "when if is true and has unevaluated properties", "data": { "foo": "then", "bar": "bar", "baz": "baz" }, "valid": false }, { "description": "when if is false and has no unevaluated properties", "data": { "baz": "baz" }, "valid": false }, { "description": "when if is false and has unevaluated properties", "data": { "foo": "else", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with dependentSchemas", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "dependentSchemas": { "foo": { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] } }, "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with boolean schemas", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [true], "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with unevaluated properties", "data": { "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with $ref", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "$ref": "#/$defs/bar", "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false, "$defs": { "bar": { "properties": { "bar": { "type": "string" } } } } }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties before $ref", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "unevaluatedProperties": false, "properties": { "foo": { "type": "string" } }, "$ref": "#/$defs/bar", "$defs": { "bar": { "properties": { "bar": { "type": "string" } } } } }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with $dynamicRef", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://example.com/unevaluated-properties-with-dynamic-ref/derived", "$ref": "./baseSchema", "$defs": { "derived": { "$dynamicAnchor": "addons", "properties": { "bar": { "type": "string" } } }, "baseSchema": { "$id": "./baseSchema", "$comment": "unevaluatedProperties comes first so it's more likely to catch bugs with implementations that are sensitive to keyword ordering", "unevaluatedProperties": false, "type": "object", "properties": { "foo": { "type": "string" } }, "$dynamicRef": "#addons" } } }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties can't see inside cousins", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "properties": { "foo": true } }, { "unevaluatedProperties": false } ] }, "tests": [ { "description": "always fails", "data": { "foo": 1 }, "valid": false } ] }, { "description": "unevaluatedProperties can't see inside cousins (reverse order)", "schema": { "$schema": "https://json-schema.org/v1", "allOf": [ { "unevaluatedProperties": false }, { "properties": { "foo": true } } ] }, "tests": [ { "description": "always fails", "data": { "foo": 1 }, "valid": false } ] }, { "description": "nested unevaluatedProperties, outer false, inner true, properties outside", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "unevaluatedProperties": true } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "nested unevaluatedProperties, outer false, inner true, properties inside", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "allOf": [ { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": true } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "nested unevaluatedProperties, outer true, inner false, properties outside", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "unevaluatedProperties": false } ], "unevaluatedProperties": true }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": false }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "nested unevaluatedProperties, outer true, inner false, properties inside", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "allOf": [ { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false } ], "unevaluatedProperties": true }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "cousin unevaluatedProperties, true and false, true with properties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "allOf": [ { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": true }, { "unevaluatedProperties": false } ] }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": false }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "cousin unevaluatedProperties, true and false, false with properties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "allOf": [ { "unevaluatedProperties": true }, { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false } ] }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "property is evaluated in an uncle schema to unevaluatedProperties", "comment": "see https://stackoverflow.com/questions/66936884/deeply-nested-unevaluatedproperties-and-their-expectations", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": { "type": "object", "properties": { "bar": { "type": "string" } }, "unevaluatedProperties": false } }, "anyOf": [ { "properties": { "foo": { "properties": { "faz": { "type": "string" } } } } } ] }, "tests": [ { "description": "no extra properties", "data": { "foo": { "bar": "test" } }, "valid": true }, { "description": "uncle keyword evaluation is not significant", "data": { "foo": { "bar": "test", "faz": "test" } }, "valid": false } ] }, { "description": "in-place applicator siblings, allOf has unevaluated", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "allOf": [ { "properties": { "foo": true }, "unevaluatedProperties": false } ], "anyOf": [ { "properties": { "bar": true } } ] }, "tests": [ { "description": "base case: both properties present", "data": { "foo": 1, "bar": 1 }, "valid": false }, { "description": "in place applicator siblings, bar is missing", "data": { "foo": 1 }, "valid": true }, { "description": "in place applicator siblings, foo is missing", "data": { "bar": 1 }, "valid": false } ] }, { "description": "in-place applicator siblings, anyOf has unevaluated", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "allOf": [ { "properties": { "foo": true } } ], "anyOf": [ { "properties": { "bar": true }, "unevaluatedProperties": false } ] }, "tests": [ { "description": "base case: both properties present", "data": { "foo": 1, "bar": 1 }, "valid": false }, { "description": "in place applicator siblings, bar is missing", "data": { "foo": 1 }, "valid": false }, { "description": "in place applicator siblings, foo is missing", "data": { "bar": 1 }, "valid": true } ] }, { "description": "unevaluatedProperties + single cyclic ref", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "x": { "$ref": "#" } }, "unevaluatedProperties": false }, "tests": [ { "description": "Empty is valid", "data": {}, "valid": true }, { "description": "Single is valid", "data": { "x": {} }, "valid": true }, { "description": "Unevaluated on 1st level is invalid", "data": { "x": {}, "y": {} }, "valid": false }, { "description": "Nested is valid", "data": { "x": { "x": {} } }, "valid": true }, { "description": "Unevaluated on 2nd level is invalid", "data": { "x": { "x": {}, "y": {} } }, "valid": false }, { "description": "Deep nested is valid", "data": { "x": { "x": { "x": {} } } }, "valid": true }, { "description": "Unevaluated on 3rd level is invalid", "data": { "x": { "x": { "x": {}, "y": {} } } }, "valid": false } ] }, { "description": "unevaluatedProperties + ref inside allOf / oneOf", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "one": { "properties": { "a": true } }, "two": { "required": ["x"], "properties": { "x": true } } }, "allOf": [ { "$ref": "#/$defs/one" }, { "properties": { "b": true } }, { "oneOf": [ { "$ref": "#/$defs/two" }, { "required": ["y"], "properties": { "y": true } } ] } ], "unevaluatedProperties": false }, "tests": [ { "description": "Empty is invalid (no x or y)", "data": {}, "valid": false }, { "description": "a and b are invalid (no x or y)", "data": { "a": 1, "b": 1 }, "valid": false }, { "description": "x and y are invalid", "data": { "x": 1, "y": 1 }, "valid": false }, { "description": "a and x are valid", "data": { "a": 1, "x": 1 }, "valid": true }, { "description": "a and y are valid", "data": { "a": 1, "y": 1 }, "valid": true }, { "description": "a and b and x are valid", "data": { "a": 1, "b": 1, "x": 1 }, "valid": true }, { "description": "a and b and y are valid", "data": { "a": 1, "b": 1, "y": 1 }, "valid": true }, { "description": "a and b and x and y are invalid", "data": { "a": 1, "b": 1, "x": 1, "y": 1 }, "valid": false } ] }, { "description": "dynamic evaluation inside nested refs", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "one": { "oneOf": [ { "$ref": "#/$defs/two" }, { "required": ["b"], "properties": { "b": true } }, { "required": ["xx"], "patternProperties": { "x": true } }, { "required": ["all"], "unevaluatedProperties": true } ] }, "two": { "oneOf": [ { "required": ["c"], "properties": { "c": true } }, { "required": ["d"], "properties": { "d": true } } ] } }, "oneOf": [ { "$ref": "#/$defs/one" }, { "required": ["a"], "properties": { "a": true } } ], "unevaluatedProperties": false }, "tests": [ { "description": "Empty is invalid", "data": {}, "valid": false }, { "description": "a is valid", "data": { "a": 1 }, "valid": true }, { "description": "b is valid", "data": { "b": 1 }, "valid": true }, { "description": "c is valid", "data": { "c": 1 }, "valid": true }, { "description": "d is valid", "data": { "d": 1 }, "valid": true }, { "description": "a + b is invalid", "data": { "a": 1, "b": 1 }, "valid": false }, { "description": "a + c is invalid", "data": { "a": 1, "c": 1 }, "valid": false }, { "description": "a + d is invalid", "data": { "a": 1, "d": 1 }, "valid": false }, { "description": "b + c is invalid", "data": { "b": 1, "c": 1 }, "valid": false }, { "description": "b + d is invalid", "data": { "b": 1, "d": 1 }, "valid": false }, { "description": "c + d is invalid", "data": { "c": 1, "d": 1 }, "valid": false }, { "description": "xx is valid", "data": { "xx": 1 }, "valid": true }, { "description": "xx + foox is valid", "data": { "xx": 1, "foox": 1 }, "valid": true }, { "description": "xx + foo is invalid", "data": { "xx": 1, "foo": 1 }, "valid": false }, { "description": "xx + a is invalid", "data": { "xx": 1, "a": 1 }, "valid": false }, { "description": "xx + b is invalid", "data": { "xx": 1, "b": 1 }, "valid": false }, { "description": "xx + c is invalid", "data": { "xx": 1, "c": 1 }, "valid": false }, { "description": "xx + d is invalid", "data": { "xx": 1, "d": 1 }, "valid": false }, { "description": "all is valid", "data": { "all": 1 }, "valid": true }, { "description": "all + foo is valid", "data": { "all": 1, "foo": 1 }, "valid": true }, { "description": "all + a is invalid", "data": { "all": 1, "a": 1 }, "valid": false } ] }, { "description": "non-object instances are valid", "schema": { "$schema": "https://json-schema.org/v1", "unevaluatedProperties": false }, "tests": [ { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "unevaluatedProperties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/v1", "unevaluatedProperties": { "type": "null" } }, "tests": [ { "description": "allows null valued properties", "data": {"foo": null}, "valid": true } ] }, { "description": "unevaluatedProperties not affected by propertyNames", "schema": { "$schema": "https://json-schema.org/v1", "propertyNames": {"maxLength": 1}, "unevaluatedProperties": { "type": "number" } }, "tests": [ { "description": "allows only number properties", "data": {"a": 1}, "valid": true }, { "description": "string property is invalid", "data": {"a": "b"}, "valid": false } ] }, { "description": "unevaluatedProperties can see annotations from if without then and else", "schema": { "$schema": "https://json-schema.org/v1", "if": { "patternProperties": { "foo": { "type": "string" } } }, "unevaluatedProperties": false }, "tests": [ { "description": "valid in case if is evaluated", "data": { "foo": "a" }, "valid": true }, { "description": "invalid in case if is evaluated", "data": { "bar": "a" }, "valid": false } ] }, { "description": "dependentSchemas with unevaluatedProperties", "schema": { "$schema": "https://json-schema.org/v1", "properties": {"foo2": {}}, "dependentSchemas": { "foo" : {}, "foo2": { "properties": { "bar":{} } } }, "unevaluatedProperties": false }, "tests": [ { "description": "unevaluatedProperties doesn't consider dependentSchemas", "data": {"foo": ""}, "valid": false }, { "description": "unevaluatedProperties doesn't see bar when foo2 is absent", "data": {"bar": ""}, "valid": false }, { "description": "unevaluatedProperties sees bar when foo2 is present", "data": {"foo2": "", "bar": ""}, "valid": true } ] }, { "description": "Evaluated properties collection needs to consider instance location", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": { "properties": { "bar": { "type": "string" } } } }, "unevaluatedProperties": false }, "tests": [ { "description": "with an unevaluated property that exists at another location", "data": { "foo": { "bar": "foo" }, "bar": "bar" }, "valid": false } ] }, { "description": "Evaluated properties collection needs to consider instance location with patternProperties", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": { "patternProperties": { "^bar$": { "type": "string" } } } }, "unevaluatedProperties": false }, "tests": [ { "description": "with only the nested evaluated property", "data": { "foo": { "bar": "foo" } }, "valid": true }, { "description": "with an unevaluated property that exists at another location", "data": { "foo": { "bar": "foo" }, "bar": "bar" }, "valid": false } ] }, { "description": "Evaluated properties collection needs to consider instance location with additionalProperties", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": { "additionalProperties": { "type": "string" } } }, "unevaluatedProperties": false }, "tests": [ { "description": "with only the nested evaluated property", "data": { "foo": { "bar": "foo" } }, "valid": true }, { "description": "with an unevaluated property that exists at another location", "data": { "foo": { "bar": "foo" }, "bar": "bar" }, "valid": false } ] } ] extendible-dynamic-ref.json100644000766000024 215240201330 26002 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}remotes000755000766000024 015240201330 23462 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resourceremote1.json100644000766000024 5315240201330 26027 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource/remotes{ "$defs": { "foo": true } } alpha000755000766000024 015240201330 24063 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/skip_dir/optionaltest.json100640000766000024 34615240201330 26054 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/skip_dir/optional/alpha[ { "description": "test group", "schema": true, "tests": [ { "description": "test", "data": 1, "valid": true } ] } ] gamma000755000766000024 015240201330 24060 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/skip_dir/optionaltest.json100640000766000024 34615240201330 26051 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/skip_dir/optional/gamma[ { "description": "test group", "schema": true, "tests": [ { "description": "test", "data": 1, "valid": true } ] } ] general.json100640000766000024 352315240201330 26211 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/v1/content[ { "description": "failed validation produces no annotations", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://json-schema.org/tests/content/v1/general/0", "type": "string", "readOnly": true }, "tests": [ { "description": "dropped annotations MAY appear in droppedAnnotations", "data": 1, "output": { "list": { "$id": "https://json-schema.org/tests/content/v1/general/0/tests/0/basic", "$ref": "/v1/output/schema", "properties": { "details": { "contains": { "properties": { "evaluationPath": {"const": ""}, "schemaLocation": {"const": "https://json-schema.org/tests/content/v1/general/0#"}, "instanceLocation": {"const": ""}, "annotations": false, "droppedAnnotations": { "properties": { "readOnly": {"const": true} }, "required": ["readOnly"] } }, "required": ["evaluationPath", "schemaLocation", "instanceLocation"] } } }, "required": ["details"] } } } ] } ] subSchemas.json100640000766000024 34015240201330 25463 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "integer": { "type": "integer" }, "refToInteger": { "$ref": "#/$defs/integer" } } } subSchemas.json100640000766000024 34015240201330 25445 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "integer": { "type": "integer" }, "refToInteger": { "$ref": "#/$defs/integer" } } } if-then-else.json100640000766000024 2066615240201330 25407 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "ignore if without then or else", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "if": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone if", "data": 0, "valid": true }, { "description": "valid when invalid against lone if", "data": "hello", "valid": true } ] }, { "description": "ignore then without if", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "then": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone then", "data": 0, "valid": true }, { "description": "valid when invalid against lone then", "data": "hello", "valid": true } ] }, { "description": "ignore else without if", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "else": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone else", "data": 0, "valid": true }, { "description": "valid when invalid against lone else", "data": "hello", "valid": true } ] }, { "description": "if and then without else", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "if": { "exclusiveMaximum": 0 }, "then": { "minimum": -10 } }, "tests": [ { "description": "valid through then", "data": -1, "valid": true }, { "description": "invalid through then", "data": -100, "valid": false }, { "description": "valid when if test fails", "data": 3, "valid": true } ] }, { "description": "if and else without then", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "if": { "exclusiveMaximum": 0 }, "else": { "multipleOf": 2 } }, "tests": [ { "description": "valid when if test passes", "data": -1, "valid": true }, { "description": "valid through else", "data": 4, "valid": true }, { "description": "invalid through else", "data": 3, "valid": false } ] }, { "description": "validate against correct branch, then vs else", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "if": { "exclusiveMaximum": 0 }, "then": { "minimum": -10 }, "else": { "multipleOf": 2 } }, "tests": [ { "description": "valid through then", "data": -1, "valid": true }, { "description": "invalid through then", "data": -100, "valid": false }, { "description": "valid through else", "data": 4, "valid": true }, { "description": "invalid through else", "data": 3, "valid": false } ] }, { "description": "non-interference across combined schemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "if": { "exclusiveMaximum": 0 } }, { "then": { "minimum": -10 } }, { "else": { "multipleOf": 2 } } ] }, "tests": [ { "description": "valid, but would have been invalid through then", "data": -100, "valid": true }, { "description": "valid, but would have been invalid through else", "data": 3, "valid": true } ] }, { "description": "if with boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "if": true, "then": { "const": "then" }, "else": { "const": "else" } }, "tests": [ { "description": "boolean schema true in if always chooses the then path (valid)", "data": "then", "valid": true }, { "description": "boolean schema true in if always chooses the then path (invalid)", "data": "else", "valid": false } ] }, { "description": "if with boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "if": false, "then": { "const": "then" }, "else": { "const": "else" } }, "tests": [ { "description": "boolean schema false in if always chooses the else path (invalid)", "data": "then", "valid": false }, { "description": "boolean schema false in if always chooses the else path (valid)", "data": "else", "valid": true } ] }, { "description": "if appears at the end when serialized (keyword processing sequence)", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "then": { "const": "yes" }, "else": { "const": "other" }, "if": { "maxLength": 4 } }, "tests": [ { "description": "yes redirects to then and passes", "data": "yes", "valid": true }, { "description": "other redirects to else and passes", "data": "other", "valid": true }, { "description": "no redirects to then and fails", "data": "no", "valid": false }, { "description": "invalid redirects to else and fails", "data": "invalid", "valid": false } ] }, { "description": "then: false fails when condition matches", "schema": { "if": { "const": 1 }, "then": false }, "tests": [ { "description": "matches if → then=false → invalid", "data": 1, "valid": false }, { "description": "does not match if → then ignored → valid", "data": 2, "valid": true } ] }, { "description": "else: false fails when condition does not match", "schema": { "if": { "const": 1 }, "else": false }, "tests": [ { "description": "matches if → else ignored → valid", "data": 1, "valid": true }, { "description": "does not match if → else executes → invalid", "data": 2, "valid": false } ] } ] recursiveRef.json100640000766000024 3343415240201330 25570 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "$recursiveRef without $recursiveAnchor works like $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": { "$recursiveRef": "#" } }, "additionalProperties": false }, "tests": [ { "description": "match", "data": {"foo": false}, "valid": true }, { "description": "recursive match", "data": { "foo": { "foo": false } }, "valid": true }, { "description": "mismatch", "data": { "bar": false }, "valid": false }, { "description": "recursive mismatch", "data": { "foo": { "bar": false } }, "valid": false } ] }, { "description": "$recursiveRef without using nesting", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:4242/draft2019-09/recursiveRef2/schema.json", "$defs": { "myobject": { "$id": "myobject.json", "$recursiveAnchor": true, "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": { "$recursiveRef": "#" } } ] } }, "anyOf": [ { "type": "integer" }, { "$ref": "#/$defs/myobject" } ] }, "tests": [ { "description": "integer matches at the outer level", "data": 1, "valid": true }, { "description": "single level match", "data": { "foo": "hi" }, "valid": true }, { "description": "integer does not match as a property value", "data": { "foo": 1 }, "valid": false }, { "description": "two levels, properties match with inner definition", "data": { "foo": { "bar": "hi" } }, "valid": true }, { "description": "two levels, no match", "data": { "foo": { "bar": 1 } }, "valid": false } ] }, { "description": "$recursiveRef with nesting", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:4242/draft2019-09/recursiveRef3/schema.json", "$recursiveAnchor": true, "$defs": { "myobject": { "$id": "myobject.json", "$recursiveAnchor": true, "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": { "$recursiveRef": "#" } } ] } }, "anyOf": [ { "type": "integer" }, { "$ref": "#/$defs/myobject" } ] }, "tests": [ { "description": "integer matches at the outer level", "data": 1, "valid": true }, { "description": "single level match", "data": { "foo": "hi" }, "valid": true }, { "description": "integer now matches as a property value", "data": { "foo": 1 }, "valid": true }, { "description": "two levels, properties match with inner definition", "data": { "foo": { "bar": "hi" } }, "valid": true }, { "description": "two levels, properties match with $recursiveRef", "data": { "foo": { "bar": 1 } }, "valid": true } ] }, { "description": "$recursiveRef with $recursiveAnchor: false works like $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:4242/draft2019-09/recursiveRef4/schema.json", "$recursiveAnchor": false, "$defs": { "myobject": { "$id": "myobject.json", "$recursiveAnchor": false, "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": { "$recursiveRef": "#" } } ] } }, "anyOf": [ { "type": "integer" }, { "$ref": "#/$defs/myobject" } ] }, "tests": [ { "description": "integer matches at the outer level", "data": 1, "valid": true }, { "description": "single level match", "data": { "foo": "hi" }, "valid": true }, { "description": "integer does not match as a property value", "data": { "foo": 1 }, "valid": false }, { "description": "two levels, properties match with inner definition", "data": { "foo": { "bar": "hi" } }, "valid": true }, { "description": "two levels, integer does not match as a property value", "data": { "foo": { "bar": 1 } }, "valid": false } ] }, { "description": "$recursiveRef with no $recursiveAnchor works like $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:4242/draft2019-09/recursiveRef5/schema.json", "$defs": { "myobject": { "$id": "myobject.json", "$recursiveAnchor": false, "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": { "$recursiveRef": "#" } } ] } }, "anyOf": [ { "type": "integer" }, { "$ref": "#/$defs/myobject" } ] }, "tests": [ { "description": "integer matches at the outer level", "data": 1, "valid": true }, { "description": "single level match", "data": { "foo": "hi" }, "valid": true }, { "description": "integer does not match as a property value", "data": { "foo": 1 }, "valid": false }, { "description": "two levels, properties match with inner definition", "data": { "foo": { "bar": "hi" } }, "valid": true }, { "description": "two levels, integer does not match as a property value", "data": { "foo": { "bar": 1 } }, "valid": false } ] }, { "description": "$recursiveRef with no $recursiveAnchor in the initial target schema resource", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:4242/draft2019-09/recursiveRef6/base.json", "$recursiveAnchor": true, "anyOf": [ { "type": "boolean" }, { "type": "object", "additionalProperties": { "$id": "http://localhost:4242/draft2019-09/recursiveRef6/inner.json", "$comment": "there is no $recursiveAnchor: true here, so we do NOT recurse to the base", "anyOf": [ { "type": "integer" }, { "type": "object", "additionalProperties": { "$recursiveRef": "#" } } ] } } ] }, "tests": [ { "description": "leaf node does not match; no recursion", "data": { "foo": true }, "valid": false }, { "description": "leaf node matches: recursion uses the inner schema", "data": { "foo": { "bar": 1 } }, "valid": true }, { "description": "leaf node does not match: recursion uses the inner schema", "data": { "foo": { "bar": true } }, "valid": false } ] }, { "description": "$recursiveRef with no $recursiveAnchor in the outer schema resource", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:4242/draft2019-09/recursiveRef7/base.json", "anyOf": [ { "type": "boolean" }, { "type": "object", "additionalProperties": { "$id": "http://localhost:4242/draft2019-09/recursiveRef7/inner.json", "$recursiveAnchor": true, "anyOf": [ { "type": "integer" }, { "type": "object", "additionalProperties": { "$recursiveRef": "#" } } ] } } ] }, "tests": [ { "description": "leaf node does not match; no recursion", "data": { "foo": true }, "valid": false }, { "description": "leaf node matches: recursion only uses inner schema", "data": { "foo": { "bar": 1 } }, "valid": true }, { "description": "leaf node does not match: recursion only uses inner schema", "data": { "foo": { "bar": true } }, "valid": false } ] }, { "description": "multiple dynamic paths to the $recursiveRef keyword", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://example.com/recursiveRef8_main.json", "$defs": { "inner": { "$id": "recursiveRef8_inner.json", "$recursiveAnchor": true, "title": "inner", "additionalProperties": { "$recursiveRef": "#" } } }, "if": { "propertyNames": { "pattern": "^[a-m]" } }, "then": { "title": "any type of node", "$id": "recursiveRef8_anyLeafNode.json", "$recursiveAnchor": true, "$ref": "recursiveRef8_inner.json" }, "else": { "title": "integer node", "$id": "recursiveRef8_integerNode.json", "$recursiveAnchor": true, "type": [ "object", "integer" ], "$ref": "recursiveRef8_inner.json" } }, "tests": [ { "description": "recurse to anyLeafNode - floats are allowed", "data": { "alpha": 1.1 }, "valid": true }, { "description": "recurse to integerNode - floats are not allowed", "data": { "november": 1.1 }, "valid": false } ] }, { "description": "dynamic $recursiveRef destination (not predictable at schema compile time)", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://example.com/main.json", "$defs": { "inner": { "$id": "inner.json", "$recursiveAnchor": true, "title": "inner", "additionalProperties": { "$recursiveRef": "#" } } }, "if": { "propertyNames": { "pattern": "^[a-m]" } }, "then": { "title": "any type of node", "$id": "anyLeafNode.json", "$recursiveAnchor": true, "$ref": "main.json#/$defs/inner" }, "else": { "title": "integer node", "$id": "integerNode.json", "$recursiveAnchor": true, "type": [ "object", "integer" ], "$ref": "main.json#/$defs/inner" } }, "tests": [ { "description": "numeric node", "data": { "alpha": 1.1 }, "valid": true }, { "description": "integer node", "data": { "november": 1.1 }, "valid": false } ] } ] if-then-else.json100640000766000024 2066515240201330 25370 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "ignore if without then or else", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone if", "data": 0, "valid": true }, { "description": "valid when invalid against lone if", "data": "hello", "valid": true } ] }, { "description": "ignore then without if", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "then": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone then", "data": 0, "valid": true }, { "description": "valid when invalid against lone then", "data": "hello", "valid": true } ] }, { "description": "ignore else without if", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "else": { "const": 0 } }, "tests": [ { "description": "valid when valid against lone else", "data": 0, "valid": true }, { "description": "valid when invalid against lone else", "data": "hello", "valid": true } ] }, { "description": "if and then without else", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "exclusiveMaximum": 0 }, "then": { "minimum": -10 } }, "tests": [ { "description": "valid through then", "data": -1, "valid": true }, { "description": "invalid through then", "data": -100, "valid": false }, { "description": "valid when if test fails", "data": 3, "valid": true } ] }, { "description": "if and else without then", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "exclusiveMaximum": 0 }, "else": { "multipleOf": 2 } }, "tests": [ { "description": "valid when if test passes", "data": -1, "valid": true }, { "description": "valid through else", "data": 4, "valid": true }, { "description": "invalid through else", "data": 3, "valid": false } ] }, { "description": "validate against correct branch, then vs else", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "exclusiveMaximum": 0 }, "then": { "minimum": -10 }, "else": { "multipleOf": 2 } }, "tests": [ { "description": "valid through then", "data": -1, "valid": true }, { "description": "invalid through then", "data": -100, "valid": false }, { "description": "valid through else", "data": 4, "valid": true }, { "description": "invalid through else", "data": 3, "valid": false } ] }, { "description": "non-interference across combined schemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "if": { "exclusiveMaximum": 0 } }, { "then": { "minimum": -10 } }, { "else": { "multipleOf": 2 } } ] }, "tests": [ { "description": "valid, but would have been invalid through then", "data": -100, "valid": true }, { "description": "valid, but would have been invalid through else", "data": 3, "valid": true } ] }, { "description": "if with boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": true, "then": { "const": "then" }, "else": { "const": "else" } }, "tests": [ { "description": "boolean schema true in if always chooses the then path (valid)", "data": "then", "valid": true }, { "description": "boolean schema true in if always chooses the then path (invalid)", "data": "else", "valid": false } ] }, { "description": "if with boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": false, "then": { "const": "then" }, "else": { "const": "else" } }, "tests": [ { "description": "boolean schema false in if always chooses the else path (invalid)", "data": "then", "valid": false }, { "description": "boolean schema false in if always chooses the else path (valid)", "data": "else", "valid": true } ] }, { "description": "if appears at the end when serialized (keyword processing sequence)", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "then": { "const": "yes" }, "else": { "const": "other" }, "if": { "maxLength": 4 } }, "tests": [ { "description": "yes redirects to then and passes", "data": "yes", "valid": true }, { "description": "other redirects to else and passes", "data": "other", "valid": true }, { "description": "no redirects to then and fails", "data": "no", "valid": false }, { "description": "invalid redirects to else and fails", "data": "invalid", "valid": false } ] }, { "description": "then: false fails when condition matches", "schema": { "if": { "const": 1 }, "then": false }, "tests": [ { "description": "matches if → then=false → invalid", "data": 1, "valid": false }, { "description": "does not match if → then ignored → valid", "data": 2, "valid": true } ] }, { "description": "else: false fails when condition does not match", "schema": { "if": { "const": 1 }, "else": false }, "tests": [ { "description": "matches if → else ignored → valid", "data": 1, "valid": true }, { "description": "does not match if → else executes → invalid", "data": 2, "valid": false } ] } ] non-bmp-regex.json100640000766000024 473415240201330 26074 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "Proper UTF-16 surrogate pair handling: pattern", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "$schema": "https://json-schema.org/v1", "pattern": "^🐲*$" }, "tests": [ { "description": "matches empty", "data": "", "valid": true }, { "description": "matches single", "data": "🐲", "valid": true }, { "description": "matches two", "data": "🐲🐲", "valid": true }, { "description": "doesn't match one", "data": "🐉", "valid": false }, { "description": "doesn't match two", "data": "🐉🐉", "valid": false }, { "description": "doesn't match one ASCII", "data": "D", "valid": false }, { "description": "doesn't match two ASCII", "data": "DD", "valid": false } ] }, { "description": "Proper UTF-16 surrogate pair handling: patternProperties", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "$schema": "https://json-schema.org/v1", "patternProperties": { "^🐲*$": { "type": "integer" } } }, "tests": [ { "description": "matches empty", "data": { "": 1 }, "valid": true }, { "description": "matches single", "data": { "🐲": 1 }, "valid": true }, { "description": "matches two", "data": { "🐲🐲": 1 }, "valid": true }, { "description": "doesn't match one", "data": { "🐲": "hello" }, "valid": false }, { "description": "doesn't match two", "data": { "🐲🐲": "hello" }, "valid": false } ] } ] different-id-ref-string.json100644000766000024 215240201330 26101 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}readOnly.json100640000766000024 334215240201330 26350 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/v1/content[ { "description": "readOnly generates its value as an annotation", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://json-schema.org/tests/content/v1/readOnly/0", "readOnly": true }, "tests": [ { "description": "readOnly is true", "data": 1, "output": { "list": { "$id": "https://json-schema.org/tests/content/v1/readOnly/0/tests/0/basic", "$ref": "/v1/output/schema", "properties": { "details": { "contains": { "properties": { "evaluationPath": {"const": ""}, "schemaLocation": {"const": "https://json-schema.org/tests/content/v1/readOnly/0#"}, "instanceLocation": {"const": ""}, "annotations": { "properties": { "readOnly": {"const": true} }, "required": ["readOnly"] } }, "required": ["evaluationPath", "schemaLocation", "instanceLocation", "annotations"] } } }, "required": ["details"] } } } ] } ] prefixItems.json100640000766000024 27315240201330 25654 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$id": "http://localhost:1234/draft2020-12/prefixItems.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ {"type": "string"} ] } foo-ref-string.json100640000766000024 21015240201330 26171 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1/nested{ "$schema": "https://json-schema.org/v1", "type": "object", "properties": { "foo": {"$ref": "string.json"} } } maxProperties.json100640000766000024 430015240201330 25734 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "maxProperties validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maxProperties": 2 }, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "maxProperties validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maxProperties": 2.0 }, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false } ] }, { "description": "maxProperties = 0 means the object is empty", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maxProperties": 0 }, "tests": [ { "description": "no properties is valid", "data": {}, "valid": true }, { "description": "one property is invalid", "data": { "foo": 1 }, "valid": false } ] } ] minProperties.json100640000766000024 357115240201330 25743 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "minProperties validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minProperties": 1 }, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "minProperties validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minProperties": 1.0 }, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false } ] } ] propertyNames.json100640000766000024 1206315240201330 25767 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "propertyNames validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "propertyNames": {"maxLength": 3} }, "tests": [ { "description": "all property names valid", "data": { "f": {}, "foo": {} }, "valid": true }, { "description": "some property names invalid", "data": { "foo": {}, "foobar": {} }, "valid": false }, { "description": "object without properties is valid", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [1, 2, 3, 4], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "propertyNames validation with pattern", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "propertyNames": { "pattern": "^a+$" } }, "tests": [ { "description": "matching property names valid", "data": { "a": {}, "aa": {}, "aaa": {} }, "valid": true }, { "description": "non-matching property name is invalid", "data": { "aaA": {} }, "valid": false }, { "description": "object without properties is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "propertyNames": true }, "tests": [ { "description": "object with any properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "propertyNames": false }, "tests": [ { "description": "object with any properties is invalid", "data": {"foo": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with const", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "propertyNames": {"const": "foo"} }, "tests": [ { "description": "object with property foo is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with any other property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with enum", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "propertyNames": {"enum": ["foo", "bar"]} }, "tests": [ { "description": "object with property foo is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property foo and bar is valid", "data": {"foo": 1, "bar": 1}, "valid": true }, { "description": "object with any other property is invalid", "data": {"baz": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] } ] maxProperties.json100640000766000024 477015240201330 25731 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "maxProperties validation", "specification": [ { "validation": "6.5.1" } ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxProperties": 2 }, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "maxProperties validation with a decimal", "specification": [ { "validation": "6.5.1" } ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxProperties": 2.0 }, "tests": [ { "description": "shorter is valid", "data": {"foo": 1}, "valid": true }, { "description": "too long is invalid", "data": {"foo": 1, "bar": 2, "baz": 3}, "valid": false } ] }, { "description": "maxProperties = 0 means the object is empty", "specification": [ { "validation": "6.5.1" } ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxProperties": 0 }, "tests": [ { "description": "no properties is valid", "data": {}, "valid": true }, { "description": "one property is invalid", "data": { "foo": 1 }, "valid": false } ] } ] minProperties.json100640000766000024 357115240201330 25725 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "minProperties validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minProperties": 1 }, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "exact length is valid", "data": {"foo": 1}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "minProperties validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minProperties": 1.0 }, "tests": [ { "description": "longer is valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "too short is invalid", "data": {}, "valid": false } ] } ] propertyNames.json100640000766000024 1206315240201330 25751 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "propertyNames validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "propertyNames": {"maxLength": 3} }, "tests": [ { "description": "all property names valid", "data": { "f": {}, "foo": {} }, "valid": true }, { "description": "some property names invalid", "data": { "foo": {}, "foobar": {} }, "valid": false }, { "description": "object without properties is valid", "data": {}, "valid": true }, { "description": "ignores arrays", "data": [1, 2, 3, 4], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "ignores null", "data": null, "valid": true }, { "description": "ignores booleans", "data": true, "valid": true } ] }, { "description": "propertyNames validation with pattern", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "propertyNames": { "pattern": "^a+$" } }, "tests": [ { "description": "matching property names valid", "data": { "a": {}, "aa": {}, "aaa": {} }, "valid": true }, { "description": "non-matching property name is invalid", "data": { "aaA": {} }, "valid": false }, { "description": "object without properties is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with boolean schema true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "propertyNames": true }, "tests": [ { "description": "object with any properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with boolean schema false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "propertyNames": false }, "tests": [ { "description": "object with any properties is invalid", "data": {"foo": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with const", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "propertyNames": {"const": "foo"} }, "tests": [ { "description": "object with property foo is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with any other property is invalid", "data": {"bar": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "propertyNames with enum", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "propertyNames": {"enum": ["foo", "bar"]} }, "tests": [ { "description": "object with property foo is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property foo and bar is valid", "data": {"foo": 1, "bar": 1}, "valid": true }, { "description": "object with any other property is invalid", "data": {"baz": 1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] } ] format000755000766000024 015240201330 24504 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optionaluri.json100640000766000024 144315240201330 26334 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of URIs", "schema": { "format": "uri" }, "tests": [ { "description": "a valid URI", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "an invalid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": false }, { "description": "an invalid URI", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "an invalid URI though valid URI reference", "data": "abc", "valid": false } ] } ] format000755000766000024 015240201330 24505 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optionaluri.json100640000766000024 2064715240201330 26364 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional/format[ { "description": "validation of URIs", "schema": { "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URL with anchor tag", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid URL with anchor tag and parentheses", "data": "http://foo.com/blah_(wikipedia)_blah#cite-1", "valid": true }, { "description": "a valid URL with URL-encoded stuff", "data": "http://foo.bar/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid puny-coded URL ", "data": "http://xn--nw2a.xn--j6w193g/", "valid": true }, { "description": "a valid URL with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid URL based on IPv4", "data": "http://223.255.255.254", "valid": true }, { "description": "a valid URL with ftp scheme", "data": "ftp://ftp.is.co.za/rfc/rfc1808.txt", "valid": true }, { "description": "a valid URL for a simple text file", "data": "http://www.ietf.org/rfc/rfc2396.txt", "valid": true }, { "description": "a valid URL", "data": "ldap://[2001:db8::7]/c=GB?objectClass?one", "valid": true }, { "description": "a valid mailto URI", "data": "mailto:John.Doe@example.com", "valid": true }, { "description": "a valid newsgroup URI", "data": "news:comp.infosystems.www.servers.unix", "valid": true }, { "description": "a valid tel URI", "data": "tel:+1-816-555-1212", "valid": true }, { "description": "a valid URN", "data": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2", "valid": true }, { "description": "an invalid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": false }, { "description": "an invalid relative URI Reference", "data": "/abc", "valid": false }, { "description": "an invalid URI", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "an invalid URI though valid URI reference", "data": "abc", "valid": false }, { "description": "an invalid URI with spaces", "data": "http:// shouldfail.com", "valid": false }, { "description": "an invalid URI with spaces and missing scheme", "data": ":// should fail", "valid": false }, { "description": "an invalid URI with comma in scheme", "data": "bar,baz:foo", "valid": false }, { "description": "invalid userinfo", "data": "https://[@example.org/test.txt", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "https://example.org/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "invalid \" character", "data": "https://example.org/foobar\".txt", "valid": false }, { "description": "invalid <> characters", "data": "https://example.org/foobar<>.txt", "valid": false }, { "description": "invalid {} characters", "data": "https://example.org/foobar{}.txt", "valid": false }, { "description": "invalid ^ character", "data": "https://example.org/foobar^.txt", "valid": false }, { "description": "invalid ` character", "data": "https://example.org/foobar`.txt", "valid": false }, { "description": "invalid SPACE character", "data": "https://example.org/foo bar.txt", "valid": false }, { "description": "invalid | character", "data": "https://example.org/foobar|.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "invalid percent-encoding with non-hex digits", "data": "http://example.com/%6G", "valid": false }, { "description": "incomplete percent-encoding triplet", "data": "http://example.com/%A", "valid": false }, { "description": "lone percent sign is invalid", "data": "http://example.com/%", "valid": false }, { "description": "scheme must start with a letter", "data": "1http://example.com", "valid": false }, { "description": "invalid character in scheme", "data": "ht_tp://example.com", "valid": false }, { "description": "non-numeric port is invalid", "data": "http://example.com:abc/path", "valid": false }, { "description": "leading zero in an embedded IPv4 address is invalid", "data": "http://[::ffff:01.2.3.4]", "valid": false }, { "description": "square brackets are not allowed in a path segment", "data": "http:/[::1]", "valid": false } ] } ] format000755000766000024 015240201330 24507 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optionaluri.json100640000766000024 2064715240201330 26366 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "validation of URIs", "schema": { "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URL with anchor tag", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid URL with anchor tag and parentheses", "data": "http://foo.com/blah_(wikipedia)_blah#cite-1", "valid": true }, { "description": "a valid URL with URL-encoded stuff", "data": "http://foo.bar/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid puny-coded URL ", "data": "http://xn--nw2a.xn--j6w193g/", "valid": true }, { "description": "a valid URL with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid URL based on IPv4", "data": "http://223.255.255.254", "valid": true }, { "description": "a valid URL with ftp scheme", "data": "ftp://ftp.is.co.za/rfc/rfc1808.txt", "valid": true }, { "description": "a valid URL for a simple text file", "data": "http://www.ietf.org/rfc/rfc2396.txt", "valid": true }, { "description": "a valid URL", "data": "ldap://[2001:db8::7]/c=GB?objectClass?one", "valid": true }, { "description": "a valid mailto URI", "data": "mailto:John.Doe@example.com", "valid": true }, { "description": "a valid newsgroup URI", "data": "news:comp.infosystems.www.servers.unix", "valid": true }, { "description": "a valid tel URI", "data": "tel:+1-816-555-1212", "valid": true }, { "description": "a valid URN", "data": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2", "valid": true }, { "description": "an invalid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": false }, { "description": "an invalid relative URI Reference", "data": "/abc", "valid": false }, { "description": "an invalid URI", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "an invalid URI though valid URI reference", "data": "abc", "valid": false }, { "description": "an invalid URI with spaces", "data": "http:// shouldfail.com", "valid": false }, { "description": "an invalid URI with spaces and missing scheme", "data": ":// should fail", "valid": false }, { "description": "an invalid URI with comma in scheme", "data": "bar,baz:foo", "valid": false }, { "description": "invalid userinfo", "data": "https://[@example.org/test.txt", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "https://example.org/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "invalid \" character", "data": "https://example.org/foobar\".txt", "valid": false }, { "description": "invalid <> characters", "data": "https://example.org/foobar<>.txt", "valid": false }, { "description": "invalid {} characters", "data": "https://example.org/foobar{}.txt", "valid": false }, { "description": "invalid ^ character", "data": "https://example.org/foobar^.txt", "valid": false }, { "description": "invalid ` character", "data": "https://example.org/foobar`.txt", "valid": false }, { "description": "invalid SPACE character", "data": "https://example.org/foo bar.txt", "valid": false }, { "description": "invalid | character", "data": "https://example.org/foobar|.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "invalid percent-encoding with non-hex digits", "data": "http://example.com/%6G", "valid": false }, { "description": "incomplete percent-encoding triplet", "data": "http://example.com/%A", "valid": false }, { "description": "lone percent sign is invalid", "data": "http://example.com/%", "valid": false }, { "description": "scheme must start with a letter", "data": "1http://example.com", "valid": false }, { "description": "invalid character in scheme", "data": "ht_tp://example.com", "valid": false }, { "description": "non-numeric port is invalid", "data": "http://example.com:abc/path", "valid": false }, { "description": "leading zero in an embedded IPv4 address is invalid", "data": "http://[::ffff:01.2.3.4]", "valid": false }, { "description": "square brackets are not allowed in a path segment", "data": "http:/[::1]", "valid": false } ] } ] format000755000766000024 015240201330 24510 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optionaliri.json100640000766000024 1070215240201330 26342 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of IRIs", "schema": { "format": "iri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IRI with anchor tag", "data": "http://ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid IRI with anchor tag and parentheses", "data": "http://ƒøø.com/blah_(wîkïpédiå)_blah#ßité-1", "valid": true }, { "description": "a valid IRI with URL-encoded stuff", "data": "http://ƒøø.ßår/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid IRI with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid IRI based on IPv6", "data": "http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]", "valid": true }, { "description": "an IPv6 address without enclosing brackets is invalid", "data": "http://2001:0db8:85a3:0000:0000:8a2e:0370:7334", "valid": false }, { "description": "an invalid relative IRI Reference", "data": "/abc", "valid": false }, { "description": "an invalid IRI", "data": "\\\\WINDOWS\\filëßåré", "valid": false }, { "description": "an invalid IRI though valid IRI reference", "data": "âππ", "valid": false }, { "description": "an IPv6 host whose embedded IPv4 has a leading zero is invalid", "data": "http://[::ffff:192.168.0.01]", "valid": false }, { "description": "a valid IRI with a compressed IPv6 host", "data": "http://[2001:db8::1]", "valid": true }, { "description": "a trailing newline after a valid IRI is invalid", "data": "http://ƒøø.ßår/\n", "valid": false }, { "description": "an IPvFuture host with an uppercase version letter is valid", "data": "http://[V1.fe]", "valid": true }, { "description": "a valid IRI with an IPv4 host", "data": "http://192.168.0.1/p", "valid": true }, { "description": "a valid IRI with no authority and a rootless path", "data": "urn:example:resource", "valid": true }, { "description": "a valid IRI with no authority and an absolute path", "data": "file:/etc/hosts", "valid": true }, { "description": "a valid IRI with a supplementary-plane character in the path", "data": "http://ƒøø.ßår/𐌀", "valid": true }, { "description": "a valid IRI with a supplementary-plane private-use char in query", "data": "http://ƒøø.ßår/?q=󰀀", "valid": true } ] } ] uri.json100640000766000024 2064715240201330 26367 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of URIs", "schema": { "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URL with anchor tag", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid URL with anchor tag and parentheses", "data": "http://foo.com/blah_(wikipedia)_blah#cite-1", "valid": true }, { "description": "a valid URL with URL-encoded stuff", "data": "http://foo.bar/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid puny-coded URL ", "data": "http://xn--nw2a.xn--j6w193g/", "valid": true }, { "description": "a valid URL with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid URL based on IPv4", "data": "http://223.255.255.254", "valid": true }, { "description": "a valid URL with ftp scheme", "data": "ftp://ftp.is.co.za/rfc/rfc1808.txt", "valid": true }, { "description": "a valid URL for a simple text file", "data": "http://www.ietf.org/rfc/rfc2396.txt", "valid": true }, { "description": "a valid URL", "data": "ldap://[2001:db8::7]/c=GB?objectClass?one", "valid": true }, { "description": "a valid mailto URI", "data": "mailto:John.Doe@example.com", "valid": true }, { "description": "a valid newsgroup URI", "data": "news:comp.infosystems.www.servers.unix", "valid": true }, { "description": "a valid tel URI", "data": "tel:+1-816-555-1212", "valid": true }, { "description": "a valid URN", "data": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2", "valid": true }, { "description": "an invalid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": false }, { "description": "an invalid relative URI Reference", "data": "/abc", "valid": false }, { "description": "an invalid URI", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "an invalid URI though valid URI reference", "data": "abc", "valid": false }, { "description": "an invalid URI with spaces", "data": "http:// shouldfail.com", "valid": false }, { "description": "an invalid URI with spaces and missing scheme", "data": ":// should fail", "valid": false }, { "description": "an invalid URI with comma in scheme", "data": "bar,baz:foo", "valid": false }, { "description": "invalid userinfo", "data": "https://[@example.org/test.txt", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "https://example.org/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "invalid \" character", "data": "https://example.org/foobar\".txt", "valid": false }, { "description": "invalid <> characters", "data": "https://example.org/foobar<>.txt", "valid": false }, { "description": "invalid {} characters", "data": "https://example.org/foobar{}.txt", "valid": false }, { "description": "invalid ^ character", "data": "https://example.org/foobar^.txt", "valid": false }, { "description": "invalid ` character", "data": "https://example.org/foobar`.txt", "valid": false }, { "description": "invalid SPACE character", "data": "https://example.org/foo bar.txt", "valid": false }, { "description": "invalid | character", "data": "https://example.org/foobar|.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "invalid percent-encoding with non-hex digits", "data": "http://example.com/%6G", "valid": false }, { "description": "incomplete percent-encoding triplet", "data": "http://example.com/%A", "valid": false }, { "description": "lone percent sign is invalid", "data": "http://example.com/%", "valid": false }, { "description": "scheme must start with a letter", "data": "1http://example.com", "valid": false }, { "description": "invalid character in scheme", "data": "ht_tp://example.com", "valid": false }, { "description": "non-numeric port is invalid", "data": "http://example.com:abc/path", "valid": false }, { "description": "leading zero in an embedded IPv4 address is invalid", "data": "http://[::ffff:01.2.3.4]", "valid": false }, { "description": "square brackets are not allowed in a path segment", "data": "http:/[::1]", "valid": false } ] } ] ecmascript-regex.json100640000766000024 533315240201330 26317 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "\\a is not an ECMA 262 control escape", "schema": { "$schema": "https://json-schema.org/v1", "format": "regex" }, "tests": [ { "description": "when used as a pattern", "data": "\\a", "valid": false } ] }, { "description": "Python-specific regular expression syntax is not valid ECMA 262", "schema": { "$schema": "https://json-schema.org/v1", "format": "regex" }, "tests": [ { "description": "Python named group (?P...) is not ECMA 262", "data": "(?Px)", "valid": false }, { "description": "Python named backreference (?P=name) is not ECMA 262", "data": "(?Pa)(?P=n)", "valid": false }, { "description": "inline comment group (?#...) is not ECMA 262", "data": "(?#comment)a", "valid": false } ] }, { "description": "global inline flag groups are not valid ECMA 262", "schema": { "$schema": "https://json-schema.org/v1", "format": "regex" }, "tests": [ { "description": "a single global inline flag (?i)", "data": "(?i)abc", "valid": false }, { "description": "multiple global inline flags (?ims)", "data": "(?ims)abc", "valid": false } ] }, { "description": "ECMA 262 named groups and backreferences are valid", "schema": { "$schema": "https://json-schema.org/v1", "format": "regex" }, "tests": [ { "description": "an ECMA 262 named group (?...)", "data": "(?x)", "valid": true }, { "description": "an ECMA 262 named backreference \\k", "data": "(?a)\\k", "valid": true } ] }, { "description": "ECMA 262 lookbehind is valid, including variable width", "schema": { "$schema": "https://json-schema.org/v1", "format": "regex" }, "tests": [ { "description": "a variable-width lookbehind (ES2018)", "data": "(?<=a+)b", "valid": true } ] }, { "description": "ECMA 262 character classes and escapes", "schema": { "$schema": "https://json-schema.org/v1", "format": "regex" }, "tests": [ { "description": "an empty character class is valid ECMA 262", "data": "[]", "valid": true }, { "description": "a negated empty character class is valid ECMA 262", "data": "[^]", "valid": true }, { "description": "a control escape \\cA is valid ECMA 262", "data": "\\cA", "valid": true } ] } ] infinite-loop-detection.json100640000766000024 201115240201330 26303 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1[ { "description": "evaluating the same schema location against the same data location twice is not a sign of an infinite loop", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "int": { "type": "integer" } }, "allOf": [ { "properties": { "foo": { "$ref": "#/$defs/int" } } }, { "additionalProperties": { "$ref": "#/$defs/int" } } ] }, "tests": [ { "description": "passing case", "data": { "foo": 1 }, "valid": true }, { "description": "failing case", "data": { "foo": "a string" }, "valid": false } ] } ] float-overflow.json100640000766000024 70015240201330 26331 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "all integers are multiples of 0.5, if overflow is handled", "schema": { "$schema": "https://json-schema.org/v1", "type": "integer", "multipleOf": 0.5 }, "tests": [ { "description": "valid if optional overflow handling is implemented", "data": 1e308, "valid": true } ] } ] unknownKeyword.json100640000766000024 402115240201330 26447 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "$id inside an unknown keyword is not a real identifier", "comment": "the implementation must not be confused by an $id in locations we do not know how to parse", "schema": { "$schema": "https://json-schema.org/v1", "$defs": { "id_in_unknown0": { "not": { "array_of_schemas": [ { "$id": "https://localhost:1234/v1/unknownKeyword/my_identifier.json", "type": "null" } ] } }, "real_id_in_schema": { "$id": "https://localhost:1234/v1/unknownKeyword/my_identifier.json", "type": "string" }, "id_in_unknown1": { "not": { "object_of_schemas": { "foo": { "$id": "https://localhost:1234/v1/unknownKeyword/my_identifier.json", "type": "integer" } } } } }, "anyOf": [ { "$ref": "#/$defs/id_in_unknown0" }, { "$ref": "#/$defs/id_in_unknown1" }, { "$ref": "https://localhost:1234/v1/unknownKeyword/my_identifier.json" } ] }, "tests": [ { "description": "type matches second anyOf, which has a real schema in it", "data": "a string", "valid": true }, { "description": "type matches non-schema in first anyOf", "data": null, "valid": false }, { "description": "type matches non-schema in third anyOf", "data": 1, "valid": false } ] } ] optional000755000766000024 015240201330 24522 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/include_optionalbeta.json100644000766000024 11415240201330 26444 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/include_optional/optional[ { "description": "hello", "schema": true, "tests": [] } ] detached-ref.json100640000766000024 41515240201330 25704 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$id": "http://localhost:1234/draft2019-09/detached-ref.json", "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "foo": { "$ref": "#detached" }, "detached": { "$anchor": "detached", "type": "integer" } } }ref-and-defs.json100640000766000024 45315240201330 25626 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/ref-and-defs.json", "$defs": { "inner": { "properties": { "bar": { "type": "string" } } } }, "$ref": "#/$defs/inner" } detached-ref.json100640000766000024 41515240201330 25666 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$id": "http://localhost:1234/draft2020-12/detached-ref.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "foo": { "$ref": "#detached" }, "detached": { "$anchor": "detached", "type": "integer" } } }ref-and-defs.json100640000766000024 45315240201330 25610 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/ref-and-defs.json", "$defs": { "inner": { "properties": { "bar": { "type": "string" } } } }, "$ref": "#/$defs/inner" } extendible-dynamic-ref.json100640000766000024 77015240201330 26400 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$schema": "https://json-schema.org/v1", "description": "extendible array", "$id": "http://localhost:1234/v1/extendible-dynamic-ref.json", "type": "object", "properties": { "elements": { "type": "array", "items": { "$dynamicRef": "#elements" } } }, "required": ["elements"], "additionalProperties": false, "$defs": { "elements": { "$dynamicAnchor": "elements" } } } boolean_schema.json100640000766000024 540215240201330 26035 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "boolean schema 'true'", "schema": true, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "boolean schema 'false'", "schema": false, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] } ] boolean_schema.json100640000766000024 540215240201330 26017 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "boolean schema 'true'", "schema": true, "tests": [ { "description": "number is valid", "data": 1, "valid": true }, { "description": "string is valid", "data": "foo", "valid": true }, { "description": "boolean true is valid", "data": true, "valid": true }, { "description": "boolean false is valid", "data": false, "valid": true }, { "description": "null is valid", "data": null, "valid": true }, { "description": "object is valid", "data": {"foo": "bar"}, "valid": true }, { "description": "empty object is valid", "data": {}, "valid": true }, { "description": "array is valid", "data": ["foo"], "valid": true }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "boolean schema 'false'", "schema": false, "tests": [ { "description": "number is invalid", "data": 1, "valid": false }, { "description": "string is invalid", "data": "foo", "valid": false }, { "description": "boolean true is invalid", "data": true, "valid": false }, { "description": "boolean false is invalid", "data": false, "valid": false }, { "description": "null is invalid", "data": null, "valid": false }, { "description": "object is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "empty object is invalid", "data": {}, "valid": false }, { "description": "array is invalid", "data": ["foo"], "valid": false }, { "description": "empty array is invalid", "data": [], "valid": false } ] } ] additionalProperties.json100640000766000024 1051615240201330 26626 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "additionalProperties being false does not allow other properties", "schema": { "properties": {"foo": {}, "bar": {}}, "patternProperties": { "^v": {} }, "additionalProperties": false }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : "boom"}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobarbaz", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "patternProperties are not additional properties", "data": {"foo":1, "vroom": 2}, "valid": true } ] }, { "description": "non-ASCII pattern with additionalProperties", "schema": { "patternProperties": {"^á": {}}, "additionalProperties": false }, "tests": [ { "description": "matching the pattern is valid", "data": {"ármányos": 2}, "valid": true }, { "description": "not matching the pattern is invalid", "data": {"élmény": 2}, "valid": false } ] }, { "description": "additionalProperties with schema", "schema": { "properties": {"foo": {}, "bar": {}}, "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional valid property is valid", "data": {"foo" : 1, "bar" : 2, "quux" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : 12}, "valid": false } ] }, { "description": "additionalProperties can exist by itself", "schema": { "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "an additional valid property is valid", "data": {"foo" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1}, "valid": false } ] }, { "description": "additionalProperties are allowed by default", "schema": {"properties": {"foo": {}, "bar": {}}}, "tests": [ { "description": "additional properties are allowed", "data": {"foo": 1, "bar": 2, "quux": true}, "valid": true } ] }, { "description": "additionalProperties does not look in applicators", "schema": { "extends": [ {"properties": {"foo": {}}} ], "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "properties defined in extends are not examined", "data": {"foo": 1, "bar": true}, "valid": false } ] }, { "description": "additionalProperties with null valued instance properties", "schema": { "additionalProperties": { "type": "null" } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] } ] date.json100640000766000024 1342315240201330 26473 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of date strings", "schema": { "format": "date" }, "tests": [ { "description": "a valid date string", "data": "1963-06-19", "valid": true }, { "description": "a valid date string with 31 days in January", "data": "2020-01-31", "valid": true }, { "description": "a invalid date string with 32 days in January", "data": "2020-01-32", "valid": false }, { "description": "a valid date string with 28 days in February (normal)", "data": "2021-02-28", "valid": true }, { "description": "a invalid date string with 29 days in February (normal)", "data": "2021-02-29", "valid": false }, { "description": "a valid date string with 29 days in February (leap)", "data": "2020-02-29", "valid": true }, { "description": "a invalid date string with 30 days in February (leap)", "data": "2020-02-30", "valid": false }, { "description": "a valid date string with 31 days in March", "data": "2020-03-31", "valid": true }, { "description": "a invalid date string with 32 days in March", "data": "2020-03-32", "valid": false }, { "description": "a valid date string with 30 days in April", "data": "2020-04-30", "valid": true }, { "description": "a invalid date string with 31 days in April", "data": "2020-04-31", "valid": false }, { "description": "a valid date string with 31 days in May", "data": "2020-05-31", "valid": true }, { "description": "a invalid date string with 32 days in May", "data": "2020-05-32", "valid": false }, { "description": "a valid date string with 30 days in June", "data": "2020-06-30", "valid": true }, { "description": "a invalid date string with 31 days in June", "data": "2020-06-31", "valid": false }, { "description": "a valid date string with 31 days in July", "data": "2020-07-31", "valid": true }, { "description": "a invalid date string with 32 days in July", "data": "2020-07-32", "valid": false }, { "description": "a valid date string with 31 days in August", "data": "2020-08-31", "valid": true }, { "description": "a invalid date string with 32 days in August", "data": "2020-08-32", "valid": false }, { "description": "a valid date string with 30 days in September", "data": "2020-09-30", "valid": true }, { "description": "a invalid date string with 31 days in September", "data": "2020-09-31", "valid": false }, { "description": "a valid date string with 31 days in October", "data": "2020-10-31", "valid": true }, { "description": "a invalid date string with 32 days in October", "data": "2020-10-32", "valid": false }, { "description": "a valid date string with 30 days in November", "data": "2020-11-30", "valid": true }, { "description": "a invalid date string with 31 days in November", "data": "2020-11-31", "valid": false }, { "description": "a valid date string with 31 days in December", "data": "2020-12-31", "valid": true }, { "description": "a invalid date string with 32 days in December", "data": "2020-12-32", "valid": false }, { "description": "a invalid date string with invalid month", "data": "2020-13-01", "valid": false }, { "description": "an invalid date string", "data": "06/19/1963", "valid": false }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350", "valid": false }, { "description": "invalidates non-padded month dates", "data": "1998-1-20", "valid": false }, { "description": "invalidates non-padded day dates", "data": "1998-01-1", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false } ] } ] ipv6.json100640000766000024 421715240201330 26423 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of IPv6 addresses", "schema": { "format": "ipv6" }, "tests": [ { "description": "a valid IPv6 address", "data": "::1", "valid": true }, { "description": "a group with 5 hex digits is invalid", "data": "12345::", "valid": false }, { "description": "an IPv6 address with too many components", "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1", "valid": false }, { "description": "an IPv6 address containing illegal characters", "data": "::laptop", "valid": false }, { "description": "no digits is valid", "data": "::", "valid": true }, { "description": "leading colons is valid", "data": "::1", "valid": true }, { "description": "trailing colons is valid", "data": "d6::", "valid": true }, { "description": "two sets of double colons is invalid", "data": "1::d6::42", "valid": false }, { "description": "mixed format with the ipv4 section as decimal octets", "data": "1::d6:192.168.0.1", "valid": true }, { "description": "mixed format with double colons between the sections", "data": "1:2::192.168.0.1", "valid": true }, { "description": "mixed format with ipv4 section with octet out of range", "data": "1::2:192.168.256.1", "valid": false }, { "description": "mixed format with ipv4 section with a hex octet", "data": "1::2:192.168.ff.1", "valid": false } ] } ] time.json100640000766000024 115715240201330 26475 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of time strings", "schema": { "format": "time" }, "tests": [ { "description": "a valid time string", "data": "08:30:06", "valid": true }, { "description": "an invalid time string", "data": "8:30 AM", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false } ] } ] additionalProperties.json100640000766000024 1051215240201330 26623 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "additionalProperties being false does not allow other properties", "schema": { "properties": {"foo": {}, "bar": {}}, "patternProperties": { "^v": {} }, "additionalProperties": false }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : "boom"}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobarbaz", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "patternProperties are not additional properties", "data": {"foo":1, "vroom": 2}, "valid": true } ] }, { "description": "non-ASCII pattern with additionalProperties", "schema": { "patternProperties": {"^á": {}}, "additionalProperties": false }, "tests": [ { "description": "matching the pattern is valid", "data": {"ármányos": 2}, "valid": true }, { "description": "not matching the pattern is invalid", "data": {"élmény": 2}, "valid": false } ] }, { "description": "additionalProperties with schema", "schema": { "properties": {"foo": {}, "bar": {}}, "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional valid property is valid", "data": {"foo" : 1, "bar" : 2, "quux" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : 12}, "valid": false } ] }, { "description": "additionalProperties can exist by itself", "schema": { "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "an additional valid property is valid", "data": {"foo" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1}, "valid": false } ] }, { "description": "additionalProperties are allowed by default", "schema": {"properties": {"foo": {}, "bar": {}}}, "tests": [ { "description": "additional properties are allowed", "data": {"foo": 1, "bar": 2, "quux": true}, "valid": true } ] }, { "description": "additionalProperties does not look in applicators", "schema": { "allOf": [ {"properties": {"foo": {}}} ], "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "properties defined in allOf are not examined", "data": {"foo": 1, "bar": true}, "valid": false } ] }, { "description": "additionalProperties with null valued instance properties", "schema": { "additionalProperties": { "type": "null" } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] } ] ipv4.json100640000766000024 1610615240201330 26442 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional/format[ { "description": "validation of IP addresses", "comment": "RFC 2673, Section 3.2: dotted-quad = decbyte \".\" decbyte \".\" decbyte \".\" decbyte. A 'decbyte' (1*3DIGIT) restricts semantic values to 0-255, allows leading zeros, and strictly forbids symbols, alpha/hex, whitespace, and non-ASCII characters.", "schema": { "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IP address", "data": "192.168.0.1", "valid": true }, { "description": "an IP address with too many components", "data": "127.0.0.0.1", "valid": false }, { "description": "an IP address with out-of-range values", "data": "256.256.256.256", "valid": false }, { "description": "an IP address without 4 components", "data": "127.0", "valid": false }, { "description": "a 2-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.1", "valid": false }, { "description": "a 3-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.0.1", "valid": false }, { "description": "an IP address as an integer", "data": "0x7f000001", "valid": false }, { "description": "an IP address as an integer (decimal)", "data": "2130706433", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২7.0.0.1", "valid": false }, { "description": "invalid fullwidth digits (non-ASCII)", "data": "192.168.1.1", "valid": false }, { "description": "invalid mathematical bold digits (non-ASCII)", "data": "𝟏𝟗𝟐.𝟏𝟔𝟖.𝟏.𝟏", "valid": false }, { "description": "netmask is not a part of ipv4 address", "data": "192.168.1.0/24", "valid": false }, { "description": "leading whitespace is invalid", "data": " 192.168.0.1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "192.168.0.1 ", "valid": false }, { "description": "trailing newline is invalid", "data": "192.168.0.1\n", "valid": false }, { "description": "hexadecimal notation is invalid", "data": "0x7f.0.0.1", "valid": false }, { "description": "octal notation explicit is invalid", "data": "0o10.0.0.1", "valid": false }, { "description": "empty part (double dot) is invalid", "data": "192.168..1", "valid": false }, { "description": "leading dot is invalid", "data": ".192.168.0.1", "valid": false }, { "description": "trailing dot is invalid", "data": "192.168.0.1.", "valid": false }, { "description": "minimum valid IPv4 address", "data": "0.0.0.0", "valid": true }, { "description": "maximum valid IPv4 address", "data": "255.255.255.255", "valid": true }, { "description": "valid IPv4 with an octet in the 200 to 249 range", "data": "200.0.0.0", "valid": true }, { "description": "valid IPv4 with two-digit octets", "data": "10.20.30.40", "valid": true }, { "description": "empty string is invalid", "data": "", "valid": false }, { "description": "plus sign is invalid", "data": "+1.2.3.4", "valid": false }, { "description": "negative sign is invalid", "data": "-1.2.3.4", "valid": false }, { "description": "exponential notation is invalid", "data": "1e2.0.0.1", "valid": false }, { "description": "alpha characters are invalid", "data": "192.168.a.1", "valid": false }, { "description": "internal whitespace is invalid", "data": "192. 168.0.1", "valid": false }, { "description": "tab character is invalid", "data": "192.168.0.1\t", "valid": false }, { "description": "additional content after an embedded NUL byte", "data": "192.168.0.1\u0000.evil.com", "valid": false }, { "description": "with port number is invalid", "data": "192.168.0.1:80", "valid": false }, { "description": "an IPv4-mapped IPv6 address is invalid", "data": "::ffff:192.168.0.1", "valid": false }, { "description": "single octet out of range in last position", "data": "192.168.0.256", "valid": false } ] } ] ipv6.json100640000766000024 1543315240201330 26446 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional/format[ { "description": "validation of IPv6 addresses", "schema": { "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IPv6 address", "data": "::1", "valid": true }, { "description": "a group with 5 hex digits is invalid", "data": "12345::", "valid": false }, { "description": "trailing 4 hex symbols is valid", "data": "::abef", "valid": true }, { "description": "trailing 5 hex symbols is invalid", "data": "::abcef", "valid": false }, { "description": "an IPv6 address with too many components", "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1", "valid": false }, { "description": "an IPv6 address containing illegal characters", "data": "::laptop", "valid": false }, { "description": "no digits is valid", "data": "::", "valid": true }, { "description": "leading colons is valid", "data": "::42:ff:1", "valid": true }, { "description": "trailing colons is valid", "data": "d6::", "valid": true }, { "description": "missing leading octet is invalid", "data": ":2:3:4:5:6:7:8", "valid": false }, { "description": "missing trailing octet is invalid", "data": "1:2:3:4:5:6:7:", "valid": false }, { "description": "missing leading octet with omitted octets later", "data": ":2:3:4::8", "valid": false }, { "description": "single set of double colons in the middle is valid", "data": "1:d6::42", "valid": true }, { "description": "two sets of double colons is invalid", "data": "1::d6::42", "valid": false }, { "description": "mixed format with the ipv4 section as decimal octets", "data": "1::d6:192.168.0.1", "valid": true }, { "description": "mixed format with double colons between the sections", "data": "1:2::192.168.0.1", "valid": true }, { "description": "mixed format with ipv4 section with octet out of range", "data": "1::2:192.168.256.1", "valid": false }, { "description": "mixed format with ipv4 section with a hex octet", "data": "1::2:192.168.ff.1", "valid": false }, { "description": "mixed format with leading double colons (ipv4-mapped ipv6 address)", "data": "::ffff:192.168.0.1", "valid": true }, { "description": "triple colons is invalid", "data": "1:2:3:4:5:::8", "valid": false }, { "description": "8 octets", "data": "1:2:3:4:5:6:7:8", "valid": true }, { "description": "insufficient octets without double colons", "data": "1:2:3:4:5:6:7", "valid": false }, { "description": "no colons is invalid", "data": "1", "valid": false }, { "description": "ipv4 is not ipv6", "data": "127.0.0.1", "valid": false }, { "description": "ipv4 segment must have 4 octets", "data": "1:2:3:4:1.2.3", "valid": false }, { "description": "leading whitespace is invalid", "data": " ::1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "::1 ", "valid": false }, { "description": "netmask is not a part of ipv6 address", "data": "fe80::/64", "valid": false }, { "description": "zone id is not a part of ipv6 address", "data": "fe80::a%eth1", "valid": false }, { "description": "a long valid ipv6", "data": "1000:1000:1000:1000:1000:1000:255.255.255.255", "valid": true }, { "description": "a long invalid ipv6, below length limit, first", "data": "100:100:100:100:100:100:255.255.255.255.255", "valid": false }, { "description": "a long invalid ipv6, below length limit, second", "data": "100:100:100:100:100:100:100:255.255.255.255", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1:2:3:4:5:6:7:৪", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in the IPv4 portion", "data": "1:2::192.16৪.0.1", "valid": false } ] } ] additionalProperties.json100640000766000024 1051215240201330 26625 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "additionalProperties being false does not allow other properties", "schema": { "properties": {"foo": {}, "bar": {}}, "patternProperties": { "^v": {} }, "additionalProperties": false }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : "boom"}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobarbaz", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "patternProperties are not additional properties", "data": {"foo":1, "vroom": 2}, "valid": true } ] }, { "description": "non-ASCII pattern with additionalProperties", "schema": { "patternProperties": {"^á": {}}, "additionalProperties": false }, "tests": [ { "description": "matching the pattern is valid", "data": {"ármányos": 2}, "valid": true }, { "description": "not matching the pattern is invalid", "data": {"élmény": 2}, "valid": false } ] }, { "description": "additionalProperties with schema", "schema": { "properties": {"foo": {}, "bar": {}}, "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional valid property is valid", "data": {"foo" : 1, "bar" : 2, "quux" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : 12}, "valid": false } ] }, { "description": "additionalProperties can exist by itself", "schema": { "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "an additional valid property is valid", "data": {"foo" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1}, "valid": false } ] }, { "description": "additionalProperties are allowed by default", "schema": {"properties": {"foo": {}, "bar": {}}}, "tests": [ { "description": "additional properties are allowed", "data": {"foo": 1, "bar": 2, "quux": true}, "valid": true } ] }, { "description": "additionalProperties does not look in applicators", "schema": { "allOf": [ {"properties": {"foo": {}}} ], "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "properties defined in allOf are not examined", "data": {"foo": 1, "bar": true}, "valid": false } ] }, { "description": "additionalProperties with null valued instance properties", "schema": { "additionalProperties": { "type": "null" } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] } ] ipv4.json100640000766000024 1610615240201330 26444 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "validation of IP addresses", "comment": "RFC 2673, Section 3.2: dotted-quad = decbyte \".\" decbyte \".\" decbyte \".\" decbyte. A 'decbyte' (1*3DIGIT) restricts semantic values to 0-255, allows leading zeros, and strictly forbids symbols, alpha/hex, whitespace, and non-ASCII characters.", "schema": { "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IP address", "data": "192.168.0.1", "valid": true }, { "description": "an IP address with too many components", "data": "127.0.0.0.1", "valid": false }, { "description": "an IP address with out-of-range values", "data": "256.256.256.256", "valid": false }, { "description": "an IP address without 4 components", "data": "127.0", "valid": false }, { "description": "a 2-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.1", "valid": false }, { "description": "a 3-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.0.1", "valid": false }, { "description": "an IP address as an integer", "data": "0x7f000001", "valid": false }, { "description": "an IP address as an integer (decimal)", "data": "2130706433", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২7.0.0.1", "valid": false }, { "description": "invalid fullwidth digits (non-ASCII)", "data": "192.168.1.1", "valid": false }, { "description": "invalid mathematical bold digits (non-ASCII)", "data": "𝟏𝟗𝟐.𝟏𝟔𝟖.𝟏.𝟏", "valid": false }, { "description": "netmask is not a part of ipv4 address", "data": "192.168.1.0/24", "valid": false }, { "description": "leading whitespace is invalid", "data": " 192.168.0.1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "192.168.0.1 ", "valid": false }, { "description": "trailing newline is invalid", "data": "192.168.0.1\n", "valid": false }, { "description": "hexadecimal notation is invalid", "data": "0x7f.0.0.1", "valid": false }, { "description": "octal notation explicit is invalid", "data": "0o10.0.0.1", "valid": false }, { "description": "empty part (double dot) is invalid", "data": "192.168..1", "valid": false }, { "description": "leading dot is invalid", "data": ".192.168.0.1", "valid": false }, { "description": "trailing dot is invalid", "data": "192.168.0.1.", "valid": false }, { "description": "minimum valid IPv4 address", "data": "0.0.0.0", "valid": true }, { "description": "maximum valid IPv4 address", "data": "255.255.255.255", "valid": true }, { "description": "valid IPv4 with an octet in the 200 to 249 range", "data": "200.0.0.0", "valid": true }, { "description": "valid IPv4 with two-digit octets", "data": "10.20.30.40", "valid": true }, { "description": "empty string is invalid", "data": "", "valid": false }, { "description": "plus sign is invalid", "data": "+1.2.3.4", "valid": false }, { "description": "negative sign is invalid", "data": "-1.2.3.4", "valid": false }, { "description": "exponential notation is invalid", "data": "1e2.0.0.1", "valid": false }, { "description": "alpha characters are invalid", "data": "192.168.a.1", "valid": false }, { "description": "internal whitespace is invalid", "data": "192. 168.0.1", "valid": false }, { "description": "tab character is invalid", "data": "192.168.0.1\t", "valid": false }, { "description": "additional content after an embedded NUL byte", "data": "192.168.0.1\u0000.evil.com", "valid": false }, { "description": "with port number is invalid", "data": "192.168.0.1:80", "valid": false }, { "description": "an IPv4-mapped IPv6 address is invalid", "data": "::ffff:192.168.0.1", "valid": false }, { "description": "single octet out of range in last position", "data": "192.168.0.256", "valid": false } ] } ] ipv6.json100640000766000024 1543315240201330 26450 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "validation of IPv6 addresses", "schema": { "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IPv6 address", "data": "::1", "valid": true }, { "description": "a group with 5 hex digits is invalid", "data": "12345::", "valid": false }, { "description": "trailing 4 hex symbols is valid", "data": "::abef", "valid": true }, { "description": "trailing 5 hex symbols is invalid", "data": "::abcef", "valid": false }, { "description": "an IPv6 address with too many components", "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1", "valid": false }, { "description": "an IPv6 address containing illegal characters", "data": "::laptop", "valid": false }, { "description": "no digits is valid", "data": "::", "valid": true }, { "description": "leading colons is valid", "data": "::42:ff:1", "valid": true }, { "description": "trailing colons is valid", "data": "d6::", "valid": true }, { "description": "missing leading octet is invalid", "data": ":2:3:4:5:6:7:8", "valid": false }, { "description": "missing trailing octet is invalid", "data": "1:2:3:4:5:6:7:", "valid": false }, { "description": "missing leading octet with omitted octets later", "data": ":2:3:4::8", "valid": false }, { "description": "single set of double colons in the middle is valid", "data": "1:d6::42", "valid": true }, { "description": "two sets of double colons is invalid", "data": "1::d6::42", "valid": false }, { "description": "mixed format with the ipv4 section as decimal octets", "data": "1::d6:192.168.0.1", "valid": true }, { "description": "mixed format with double colons between the sections", "data": "1:2::192.168.0.1", "valid": true }, { "description": "mixed format with ipv4 section with octet out of range", "data": "1::2:192.168.256.1", "valid": false }, { "description": "mixed format with ipv4 section with a hex octet", "data": "1::2:192.168.ff.1", "valid": false }, { "description": "mixed format with leading double colons (ipv4-mapped ipv6 address)", "data": "::ffff:192.168.0.1", "valid": true }, { "description": "triple colons is invalid", "data": "1:2:3:4:5:::8", "valid": false }, { "description": "8 octets", "data": "1:2:3:4:5:6:7:8", "valid": true }, { "description": "insufficient octets without double colons", "data": "1:2:3:4:5:6:7", "valid": false }, { "description": "no colons is invalid", "data": "1", "valid": false }, { "description": "ipv4 is not ipv6", "data": "127.0.0.1", "valid": false }, { "description": "ipv4 segment must have 4 octets", "data": "1:2:3:4:1.2.3", "valid": false }, { "description": "leading whitespace is invalid", "data": " ::1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "::1 ", "valid": false }, { "description": "netmask is not a part of ipv6 address", "data": "fe80::/64", "valid": false }, { "description": "zone id is not a part of ipv6 address", "data": "fe80::a%eth1", "valid": false }, { "description": "a long valid ipv6", "data": "1000:1000:1000:1000:1000:1000:255.255.255.255", "valid": true }, { "description": "a long invalid ipv6, below length limit, first", "data": "100:100:100:100:100:100:255.255.255.255.255", "valid": false }, { "description": "a long invalid ipv6, below length limit, second", "data": "100:100:100:100:100:100:100:255.255.255.255", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1:2:3:4:5:6:7:৪", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in the IPv4 portion", "data": "1:2::192.16৪.0.1", "valid": false } ] } ] additionalProperties.json100640000766000024 1051215240201330 26626 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "additionalProperties being false does not allow other properties", "schema": { "properties": {"foo": {}, "bar": {}}, "patternProperties": { "^v": {} }, "additionalProperties": false }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : "boom"}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobarbaz", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "patternProperties are not additional properties", "data": {"foo":1, "vroom": 2}, "valid": true } ] }, { "description": "non-ASCII pattern with additionalProperties", "schema": { "patternProperties": {"^á": {}}, "additionalProperties": false }, "tests": [ { "description": "matching the pattern is valid", "data": {"ármányos": 2}, "valid": true }, { "description": "not matching the pattern is invalid", "data": {"élmény": 2}, "valid": false } ] }, { "description": "additionalProperties with schema", "schema": { "properties": {"foo": {}, "bar": {}}, "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional valid property is valid", "data": {"foo" : 1, "bar" : 2, "quux" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : 12}, "valid": false } ] }, { "description": "additionalProperties can exist by itself", "schema": { "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "an additional valid property is valid", "data": {"foo" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1}, "valid": false } ] }, { "description": "additionalProperties are allowed by default", "schema": {"properties": {"foo": {}, "bar": {}}}, "tests": [ { "description": "additional properties are allowed", "data": {"foo": 1, "bar": 2, "quux": true}, "valid": true } ] }, { "description": "additionalProperties does not look in applicators", "schema": { "allOf": [ {"properties": {"foo": {}}} ], "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "properties defined in allOf are not examined", "data": {"foo": 1, "bar": true}, "valid": false } ] }, { "description": "additionalProperties with null valued instance properties", "schema": { "additionalProperties": { "type": "null" } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] } ] cross-draft.json100640000766000024 147415240201330 26504 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional[ { "description": "refs to future drafts are processed as future drafts", "schema": { "type": "object", "allOf": [ { "properties": { "foo": true } }, { "$ref": "http://localhost:1234/draft2019-09/dependentRequired.json" } ] }, "tests": [ { "description": "missing bar is invalid", "comment": "if the implementation is not processing the $ref as a 2019-09 schema, this test will fail", "data": {"foo": "any value"}, "valid": false }, { "description": "present bar is valid", "data": {"foo": "any value", "bar": "also any value"}, "valid": true } ] } ] date.json100640000766000024 3533215240201330 26502 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of date strings", "schema": { "format": "date" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date string", "data": "1963-06-19", "valid": true }, { "description": "a valid date string with 31 days in January", "data": "2020-01-31", "valid": true }, { "description": "a invalid date string with 32 days in January", "data": "2020-01-32", "valid": false }, { "description": "a valid date string with 28 days in February (normal)", "data": "2021-02-28", "valid": true }, { "description": "a invalid date string with 30 days in February (leap)", "data": "2020-02-30", "valid": false }, { "description": "a valid date string with 31 days in March", "data": "2020-03-31", "valid": true }, { "description": "a invalid date string with 32 days in March", "data": "2020-03-32", "valid": false }, { "description": "a valid date string with 30 days in April", "data": "2020-04-30", "valid": true }, { "description": "a invalid date string with 31 days in April", "data": "2020-04-31", "valid": false }, { "description": "a valid date string with 31 days in May", "data": "2020-05-31", "valid": true }, { "description": "a invalid date string with 32 days in May", "data": "2020-05-32", "valid": false }, { "description": "a valid date string with 30 days in June", "data": "2020-06-30", "valid": true }, { "description": "a invalid date string with 31 days in June", "data": "2020-06-31", "valid": false }, { "description": "a valid date string with 31 days in July", "data": "2020-07-31", "valid": true }, { "description": "a invalid date string with 32 days in July", "data": "2020-07-32", "valid": false }, { "description": "a valid date string with 31 days in August", "data": "2020-08-31", "valid": true }, { "description": "a invalid date string with 32 days in August", "data": "2020-08-32", "valid": false }, { "description": "a valid date string with 30 days in September", "data": "2020-09-30", "valid": true }, { "description": "a invalid date string with 31 days in September", "data": "2020-09-31", "valid": false }, { "description": "a valid date string with 31 days in October", "data": "2020-10-31", "valid": true }, { "description": "a invalid date string with 32 days in October", "data": "2020-10-32", "valid": false }, { "description": "a valid date string with 30 days in November", "data": "2020-11-30", "valid": true }, { "description": "a invalid date string with 31 days in November", "data": "2020-11-31", "valid": false }, { "description": "a valid date string with 31 days in December", "data": "2020-12-31", "valid": true }, { "description": "a invalid date string with 32 days in December", "data": "2020-12-32", "valid": false }, { "description": "an invalid date string", "data": "06/19/1963", "valid": false }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350", "valid": false }, { "description": "non-padded month dates are not valid", "data": "1998-1-20", "valid": false }, { "description": "non-padded day dates are not valid", "data": "1998-01-1", "valid": false }, { "description": "invalid month", "data": "1998-13-01", "valid": false }, { "description": "2021 is not a leap year", "data": "2021-02-29", "valid": false }, { "description": "2020 is a leap year", "data": "2020-02-29", "valid": true }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1963-06-1৪", "valid": false }, { "description": "invalid: non-ASCII Bengali digit in month field", "data": "2020-0৪-01", "valid": false }, { "description": "ISO8601 / non-RFC3339: YYYYMMDD without dashes (2023-03-28)", "data": "20230328", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number implicit day of week (2023-01-02)", "data": "2023-W01", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number with day of week (2023-03-28)", "data": "2023-W13-2", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number rollover to next year (2023-01-01)", "data": "2022W527", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false }, { "description": "century year 0100 is not a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — 100 % 100 == 0 but 100 % 400 != 0", "data": "0100-02-29", "valid": false }, { "description": "century year 0400 is a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — 400-year cycle boundary", "data": "0400-02-29", "valid": true }, { "description": "century year 2100 is not a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — future century year", "data": "2100-02-29", "valid": false }, { "description": "invalid: leading whitespace is not permitted", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — full-date grammar does not include whitespace", "data": " 2024-01-15", "valid": false }, { "description": "invalid: trailing whitespace is not permitted", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — full-date grammar does not include whitespace", "data": "2024-01-15 ", "valid": false }, { "description": "invalid: month 00 is not valid per date-month range 01-12", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — date-month = 2DIGIT ; 01-12", "data": "2024-00-15", "valid": false }, { "description": "invalid: day 00 is not valid per date-mday minimum of 01", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — date-mday = 2DIGIT ; 01-28/29/30/31", "data": "2024-01-00", "valid": false }, { "description": "invalid: empty string", "data": "", "valid": false }, { "description": "invalid: embedded whitespace between year and month", "data": "2020 -01-01", "valid": false }, { "description": "invalid: trailing character after valid full-date", "data": "2020-01-01X", "valid": false }, { "description": "invalid: trailing Z after full-date", "data": "2020-01-01Z", "valid": false }, { "description": "invalid: full-date followed by space and time component", "data": "2020-01-01 00:00:00Z", "valid": false }, { "description": "valid: four-digit year 0001", "data": "0001-01-01", "valid": true }, { "description": "invalid: two-digit year (N-2 digits)", "data": "20-01-01", "valid": false }, { "description": "invalid: three-digit year (N-1 digits)", "data": "998-01-01", "valid": false }, { "description": "invalid: five-digit year (N+1 digits)", "data": "12020-01-01", "valid": false }, { "description": "invalid: positive sign prefix on year", "data": "+2020-01-01", "valid": false }, { "description": "invalid: negative sign prefix on year", "data": "-2020-01-01", "valid": false }, { "description": "invalid: non-ASCII Bengali digit in year field", "data": "২020-01-01", "valid": false }, { "description": "invalid: alphabetic characters in year field", "data": "YYYY-01-01", "valid": false }, { "description": "invalid: three-digit month (N+1 digits)", "data": "2020-001-01", "valid": false }, { "description": "invalid: alphabetic characters in month field", "data": "2020-MM-01", "valid": false }, { "description": "invalid: three-digit day (N+1 digits)", "data": "2020-01-001", "valid": false }, { "description": "invalid: alphabetic characters in day field", "data": "2020-01-DD", "valid": false }, { "description": "invalid: colon separators", "data": "2020:01:01", "valid": false }, { "description": "invalid: dot separators", "data": "2020.01.01", "valid": false }, { "description": "invalid: space separators", "data": "2020 01 01", "valid": false }, { "description": "invalid: mixed slash and hyphen separators", "data": "2020-01/01", "valid": false }, { "description": "invalid: duplicated first hyphen", "data": "2020--01-01", "valid": false }, { "description": "invalid: duplicated second hyphen", "data": "2020-01--01", "valid": false }, { "description": "valid: date inside the Julian to Gregorian reform gap", "data": "1582-10-10", "valid": true }, { "description": "invalid: year field numerically larger than a 32-bit signed integer", "data": "2147483648-01-01", "valid": false }, { "description": "invalid: character just above '9' as the second digit of the day", "data": "2020-01-0:", "valid": false }, { "description": "invalid: non-ASCII digit leaving ten UTF-8 bytes but eight characters", "data": "\u09e80-01-01", "valid": false }, { "description": "invalid: en dash separators instead of hyphen-minus", "data": "2020\u201301\u201301", "valid": false }, { "description": "invalid: NUL character after an otherwise valid full-date", "data": "2020-01-01\u0000", "valid": false } ] } ] ipv4.json100640000766000024 1610615240201330 26445 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of IP addresses", "comment": "RFC 2673, Section 3.2: dotted-quad = decbyte \".\" decbyte \".\" decbyte \".\" decbyte. A 'decbyte' (1*3DIGIT) restricts semantic values to 0-255, allows leading zeros, and strictly forbids symbols, alpha/hex, whitespace, and non-ASCII characters.", "schema": { "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IP address", "data": "192.168.0.1", "valid": true }, { "description": "an IP address with too many components", "data": "127.0.0.0.1", "valid": false }, { "description": "an IP address with out-of-range values", "data": "256.256.256.256", "valid": false }, { "description": "an IP address without 4 components", "data": "127.0", "valid": false }, { "description": "a 2-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.1", "valid": false }, { "description": "a 3-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.0.1", "valid": false }, { "description": "an IP address as an integer", "data": "0x7f000001", "valid": false }, { "description": "an IP address as an integer (decimal)", "data": "2130706433", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২7.0.0.1", "valid": false }, { "description": "invalid fullwidth digits (non-ASCII)", "data": "192.168.1.1", "valid": false }, { "description": "invalid mathematical bold digits (non-ASCII)", "data": "𝟏𝟗𝟐.𝟏𝟔𝟖.𝟏.𝟏", "valid": false }, { "description": "netmask is not a part of ipv4 address", "data": "192.168.1.0/24", "valid": false }, { "description": "leading whitespace is invalid", "data": " 192.168.0.1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "192.168.0.1 ", "valid": false }, { "description": "trailing newline is invalid", "data": "192.168.0.1\n", "valid": false }, { "description": "hexadecimal notation is invalid", "data": "0x7f.0.0.1", "valid": false }, { "description": "octal notation explicit is invalid", "data": "0o10.0.0.1", "valid": false }, { "description": "empty part (double dot) is invalid", "data": "192.168..1", "valid": false }, { "description": "leading dot is invalid", "data": ".192.168.0.1", "valid": false }, { "description": "trailing dot is invalid", "data": "192.168.0.1.", "valid": false }, { "description": "minimum valid IPv4 address", "data": "0.0.0.0", "valid": true }, { "description": "maximum valid IPv4 address", "data": "255.255.255.255", "valid": true }, { "description": "valid IPv4 with an octet in the 200 to 249 range", "data": "200.0.0.0", "valid": true }, { "description": "valid IPv4 with two-digit octets", "data": "10.20.30.40", "valid": true }, { "description": "empty string is invalid", "data": "", "valid": false }, { "description": "plus sign is invalid", "data": "+1.2.3.4", "valid": false }, { "description": "negative sign is invalid", "data": "-1.2.3.4", "valid": false }, { "description": "exponential notation is invalid", "data": "1e2.0.0.1", "valid": false }, { "description": "alpha characters are invalid", "data": "192.168.a.1", "valid": false }, { "description": "internal whitespace is invalid", "data": "192. 168.0.1", "valid": false }, { "description": "tab character is invalid", "data": "192.168.0.1\t", "valid": false }, { "description": "additional content after an embedded NUL byte", "data": "192.168.0.1\u0000.evil.com", "valid": false }, { "description": "with port number is invalid", "data": "192.168.0.1:80", "valid": false }, { "description": "an IPv4-mapped IPv6 address is invalid", "data": "::ffff:192.168.0.1", "valid": false }, { "description": "single octet out of range in last position", "data": "192.168.0.256", "valid": false } ] } ] ipv6.json100640000766000024 1543315240201330 26451 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of IPv6 addresses", "schema": { "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IPv6 address", "data": "::1", "valid": true }, { "description": "a group with 5 hex digits is invalid", "data": "12345::", "valid": false }, { "description": "trailing 4 hex symbols is valid", "data": "::abef", "valid": true }, { "description": "trailing 5 hex symbols is invalid", "data": "::abcef", "valid": false }, { "description": "an IPv6 address with too many components", "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1", "valid": false }, { "description": "an IPv6 address containing illegal characters", "data": "::laptop", "valid": false }, { "description": "no digits is valid", "data": "::", "valid": true }, { "description": "leading colons is valid", "data": "::42:ff:1", "valid": true }, { "description": "trailing colons is valid", "data": "d6::", "valid": true }, { "description": "missing leading octet is invalid", "data": ":2:3:4:5:6:7:8", "valid": false }, { "description": "missing trailing octet is invalid", "data": "1:2:3:4:5:6:7:", "valid": false }, { "description": "missing leading octet with omitted octets later", "data": ":2:3:4::8", "valid": false }, { "description": "single set of double colons in the middle is valid", "data": "1:d6::42", "valid": true }, { "description": "two sets of double colons is invalid", "data": "1::d6::42", "valid": false }, { "description": "mixed format with the ipv4 section as decimal octets", "data": "1::d6:192.168.0.1", "valid": true }, { "description": "mixed format with double colons between the sections", "data": "1:2::192.168.0.1", "valid": true }, { "description": "mixed format with ipv4 section with octet out of range", "data": "1::2:192.168.256.1", "valid": false }, { "description": "mixed format with ipv4 section with a hex octet", "data": "1::2:192.168.ff.1", "valid": false }, { "description": "mixed format with leading double colons (ipv4-mapped ipv6 address)", "data": "::ffff:192.168.0.1", "valid": true }, { "description": "triple colons is invalid", "data": "1:2:3:4:5:::8", "valid": false }, { "description": "8 octets", "data": "1:2:3:4:5:6:7:8", "valid": true }, { "description": "insufficient octets without double colons", "data": "1:2:3:4:5:6:7", "valid": false }, { "description": "no colons is invalid", "data": "1", "valid": false }, { "description": "ipv4 is not ipv6", "data": "127.0.0.1", "valid": false }, { "description": "ipv4 segment must have 4 octets", "data": "1:2:3:4:1.2.3", "valid": false }, { "description": "leading whitespace is invalid", "data": " ::1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "::1 ", "valid": false }, { "description": "netmask is not a part of ipv6 address", "data": "fe80::/64", "valid": false }, { "description": "zone id is not a part of ipv6 address", "data": "fe80::a%eth1", "valid": false }, { "description": "a long valid ipv6", "data": "1000:1000:1000:1000:1000:1000:255.255.255.255", "valid": true }, { "description": "a long invalid ipv6, below length limit, first", "data": "100:100:100:100:100:100:255.255.255.255.255", "valid": false }, { "description": "a long invalid ipv6, below length limit, second", "data": "100:100:100:100:100:100:100:255.255.255.255", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1:2:3:4:5:6:7:৪", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in the IPv4 portion", "data": "1:2::192.16৪.0.1", "valid": false } ] } ] time.json100640000766000024 2036715240201330 26525 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of time strings", "schema": { "format": "time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid time string", "data": "08:30:06Z", "valid": true }, { "description": "invalid time string with extra leading zeros", "data": "008:030:006Z", "valid": false }, { "description": "invalid time string with no leading zero for single digit", "data": "8:3:6Z", "valid": false }, { "description": "hour, minute, second must be two digits", "data": "8:0030:6Z", "valid": false }, { "description": "a valid time string with leap second, Zulu", "data": "23:59:60Z", "valid": true }, { "description": "invalid leap second, Zulu (wrong hour)", "data": "22:59:60Z", "valid": false }, { "description": "invalid leap second, Zulu (wrong minute)", "data": "23:58:60Z", "valid": false }, { "description": "valid leap second, zero time-offset", "data": "23:59:60+00:00", "valid": true }, { "description": "invalid leap second, zero time-offset (wrong hour)", "data": "22:59:60+00:00", "valid": false }, { "description": "invalid leap second, zero time-offset (wrong minute)", "data": "23:58:60+00:00", "valid": false }, { "description": "valid leap second, positive time-offset", "data": "01:29:60+01:30", "valid": true }, { "description": "valid leap second, large positive time-offset", "data": "23:29:60+23:30", "valid": true }, { "description": "invalid leap second, positive time-offset (wrong hour)", "data": "23:59:60+01:00", "valid": false }, { "description": "invalid leap second, positive time-offset (wrong minute)", "data": "23:59:60+00:30", "valid": false }, { "description": "valid leap second, negative time-offset", "data": "15:59:60-08:00", "valid": true }, { "description": "valid leap second, large negative time-offset", "data": "00:29:60-23:30", "valid": true }, { "description": "invalid leap second, negative time-offset (wrong hour)", "data": "23:59:60-01:00", "valid": false }, { "description": "invalid leap second, negative time-offset (wrong minute)", "data": "23:59:60-00:30", "valid": false }, { "description": "a valid time string with second fraction", "data": "23:20:50.52Z", "valid": true }, { "description": "a valid time string with precise second fraction", "data": "08:30:06.283185Z", "valid": true }, { "description": "a valid time string with plus offset", "data": "08:30:06+00:20", "valid": true }, { "description": "a valid time string with minus offset", "data": "08:30:06-08:00", "valid": true }, { "description": "time with unknown local offset is valid", "comment": "RFC 3339 section 4.3 (unknown local offset)", "data": "12:34:56-00:00", "valid": true }, { "description": "hour, minute in time-offset must be two digits", "data": "08:30:06-8:000", "valid": false }, { "description": "a valid time string with case-insensitive Z", "data": "08:30:06z", "valid": true }, { "description": "an invalid time string with invalid hour", "data": "24:00:00Z", "valid": false }, { "description": "an invalid time string with invalid minute", "data": "00:60:00Z", "valid": false }, { "description": "an invalid time string with invalid second", "data": "00:00:61Z", "valid": false }, { "description": "an invalid time string with invalid leap second (wrong hour)", "data": "22:59:60Z", "valid": false }, { "description": "an invalid time string with invalid leap second (wrong minute)", "data": "23:58:60Z", "valid": false }, { "description": "an invalid time string with invalid time numoffset hour", "data": "01:02:03+24:00", "valid": false }, { "description": "an invalid time string with invalid time numoffset minute", "data": "01:02:03+00:60", "valid": false }, { "description": "an invalid time string with invalid time with both Z and numoffset", "data": "01:02:03Z+00:30", "valid": false }, { "description": "an invalid offset indicator", "data": "08:30:06 PST", "valid": false }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "01:01:01,1111", "valid": false }, { "description": "no time offset", "data": "12:00:00", "valid": false }, { "description": "no time offset with second fraction", "data": "12:00:00.52", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২:00:00Z", "valid": false }, { "description": "offset not starting with plus or minus", "data": "08:30:06#00:20", "valid": false }, { "description": "contains letters", "data": "ab:cd:ef", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false } ] } ] unknownKeyword.json100644000766000024 215240201330 26055 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[]unknownKeyword.json100644000766000024 215240201330 26037 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[]alpha.json100644000766000024 11415240201330 26616 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/include_optional/optional[ { "description": "hello", "schema": true, "tests": [] } ] betadyne000755000766000024 015240201330 24571 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/skip_dir/optionaltest.json100640000766000024 34615240201330 26562 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/skip_dir/optional/betadyne[ { "description": "test group", "schema": true, "tests": [ { "description": "test", "data": 1, "valid": true } ] } ] nested000755000766000024 015240201330 23644 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09string.json100640000766000024 13015240201330 26153 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09/nested{ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string" } nested000755000766000024 015240201330 23626 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12string.json100640000766000024 13015240201330 26135 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12/nested{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string" } ref-and-definitions.json100640000766000024 41215240201330 26537 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft6{ "$id": "http://localhost:1234/draft6/ref-and-definitions.json", "definitions": { "inner": { "properties": { "bar": { "type": "string" } } } }, "allOf": [ { "$ref": "#/definitions/inner" } ] } ref-and-definitions.json100640000766000024 41215240201330 26540 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft7{ "$id": "http://localhost:1234/draft7/ref-and-definitions.json", "definitions": { "inner": { "properties": { "bar": { "type": "string" } } } }, "allOf": [ { "$ref": "#/definitions/inner" } ] } different-id-ref-string.json100640000766000024 20715240201330 26472 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$id": "http://localhost:1234/v1/real-id-ref-string.json", "$defs": {"bar": {"type": "string"}}, "$ref": "#/$defs/bar" } additionalItems.json100640000766000024 1400315240201330 26225 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "additionalItems as schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [{}], "additionalItems": {"type": "integer"} }, "tests": [ { "description": "additional items match schema", "data": [ null, 2, 3, 4 ], "valid": true }, { "description": "additional items do not match schema", "data": [ null, 2, 3, "foo" ], "valid": false } ] }, { "description": "when items is schema, additionalItems does nothing", "schema": { "$schema":"https://json-schema.org/draft/2019-09/schema", "items": { "type": "integer" }, "additionalItems": { "type": "string" } }, "tests": [ { "description": "valid with a array of type integers", "data": [1,2,3], "valid": true }, { "description": "invalid with a array of mixed types", "data": [1,"2","3"], "valid": false } ] }, { "description": "when items is schema, boolean additionalItems does nothing", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": {}, "additionalItems": false }, "tests": [ { "description": "all items match schema", "data": [ 1, 2, 3, 4, 5 ], "valid": true } ] }, { "description": "array of items with no additionalItems permitted", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [{}, {}, {}], "additionalItems": false }, "tests": [ { "description": "empty array", "data": [ ], "valid": true }, { "description": "fewer number of items present (1)", "data": [ 1 ], "valid": true }, { "description": "fewer number of items present (2)", "data": [ 1, 2 ], "valid": true }, { "description": "equal number of items present", "data": [ 1, 2, 3 ], "valid": true }, { "description": "additional items are not permitted", "data": [ 1, 2, 3, 4 ], "valid": false } ] }, { "description": "additionalItems as false without items", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "additionalItems": false }, "tests": [ { "description": "items defaults to empty schema so everything is valid", "data": [ 1, 2, 3, 4, 5 ], "valid": true }, { "description": "ignores non-arrays", "data": {"foo" : "bar"}, "valid": true } ] }, { "description": "additionalItems are allowed by default", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [{"type": "integer"}] }, "tests": [ { "description": "only the first item is validated", "data": [1, "foo", false], "valid": true } ] }, { "description": "additionalItems does not look in applicators, invalid case", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "items": [ { "type": "integer" }, { "type": "string" } ] } ], "items": [ {"type": "integer" } ], "additionalItems": { "type": "boolean" } }, "tests": [ { "description": "items defined in allOf are not examined", "data": [ 1, "hello" ], "valid": false } ] }, { "description": "items validation adjusts the starting index for additionalItems", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "type": "string" } ], "additionalItems": { "type": "integer" } }, "tests": [ { "description": "valid items", "data": [ "x", 2, 3 ], "valid": true }, { "description": "wrong type of second item", "data": [ "x", "y" ], "valid": false } ] }, { "description": "additionalItems with heterogeneous array", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [{}], "additionalItems": false }, "tests": [ { "description": "heterogeneous invalid instance", "data": [ "foo", "bar", 37 ], "valid": false }, { "description": "valid instance", "data": [ null ], "valid": true } ] }, { "description": "additionalItems with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "additionalItems": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ] anchor.json100640000766000024 360015240201330 26173 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "$anchor inside an enum is not a real identifier", "comment": "the implementation must not be confused by an $anchor buried in the enum", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "anchor_in_enum": { "enum": [ { "$anchor": "my_anchor", "type": "null" } ] }, "real_identifier_in_schema": { "$anchor": "my_anchor", "type": "string" }, "zzz_anchor_in_const": { "const": { "$anchor": "my_anchor", "type": "null" } } }, "anyOf": [ { "$ref": "#/$defs/anchor_in_enum" }, { "$ref": "#my_anchor" } ] }, "tests": [ { "description": "exact match to enum, and type matches", "data": { "$anchor": "my_anchor", "type": "null" }, "valid": true }, { "description": "in implementations that strip $anchor, this may match either $def", "data": { "type": "null" }, "valid": false }, { "description": "match $ref to $anchor", "data": "a string to match #/$defs/anchor_in_enum", "valid": true }, { "description": "no match on enum or $ref to $anchor", "data": 1, "valid": false } ] } ] bignum.json100640000766000024 652615240201330 26214 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "integer", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer" }, "tests": [ { "description": "a bignum is an integer", "data": 12345678910111213141516171819202122232425262728293031, "valid": true }, { "description": "a negative bignum is an integer", "data": -12345678910111213141516171819202122232425262728293031, "valid": true } ] }, { "description": "number", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "number" }, "tests": [ { "description": "a bignum is a number", "data": 98249283749234923498293171823948729348710298301928331, "valid": true }, { "description": "a negative bignum is a number", "data": -98249283749234923498293171823948729348710298301928331, "valid": true } ] }, { "description": "string", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string" }, "tests": [ { "description": "a bignum is not a string", "data": 98249283749234923498293171823948729348710298301928331, "valid": false } ] }, { "description": "maximum integer comparison", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "maximum": 18446744073709551615 }, "tests": [ { "description": "comparison works for high numbers", "data": 18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "exclusiveMaximum": 972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for high numbers", "data": 972783798187987123879878123.188781371, "valid": false } ] }, { "description": "minimum integer comparison", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "minimum": -18446744073709551615 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision on negative numbers", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "exclusiveMinimum": -972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -972783798187987123879878123.188781371, "valid": false } ] } ] anchor.json100640000766000024 360015240201330 26155 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "$anchor inside an enum is not a real identifier", "comment": "the implementation must not be confused by an $anchor buried in the enum", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "anchor_in_enum": { "enum": [ { "$anchor": "my_anchor", "type": "null" } ] }, "real_identifier_in_schema": { "$anchor": "my_anchor", "type": "string" }, "zzz_anchor_in_const": { "const": { "$anchor": "my_anchor", "type": "null" } } }, "anyOf": [ { "$ref": "#/$defs/anchor_in_enum" }, { "$ref": "#my_anchor" } ] }, "tests": [ { "description": "exact match to enum, and type matches", "data": { "$anchor": "my_anchor", "type": "null" }, "valid": true }, { "description": "in implementations that strip $anchor, this may match either $def", "data": { "type": "null" }, "valid": false }, { "description": "match $ref to $anchor", "data": "a string to match #/$defs/anchor_in_enum", "valid": true }, { "description": "no match on enum or $ref to $anchor", "data": 1, "valid": false } ] } ] bignum.json100640000766000024 652615240201330 26176 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "integer", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer" }, "tests": [ { "description": "a bignum is an integer", "data": 12345678910111213141516171819202122232425262728293031, "valid": true }, { "description": "a negative bignum is an integer", "data": -12345678910111213141516171819202122232425262728293031, "valid": true } ] }, { "description": "number", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "number" }, "tests": [ { "description": "a bignum is a number", "data": 98249283749234923498293171823948729348710298301928331, "valid": true }, { "description": "a negative bignum is a number", "data": -98249283749234923498293171823948729348710298301928331, "valid": true } ] }, { "description": "string", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string" }, "tests": [ { "description": "a bignum is not a string", "data": 98249283749234923498293171823948729348710298301928331, "valid": false } ] }, { "description": "maximum integer comparison", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maximum": 18446744073709551615 }, "tests": [ { "description": "comparison works for high numbers", "data": 18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "exclusiveMaximum": 972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for high numbers", "data": 972783798187987123879878123.188781371, "valid": false } ] }, { "description": "minimum integer comparison", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minimum": -18446744073709551615 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -18446744073709551600, "valid": true } ] }, { "description": "float comparison with high precision on negative numbers", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "exclusiveMinimum": -972783798187987123879878123.18878137 }, "tests": [ { "description": "comparison works for very negative numbers", "data": -972783798187987123879878123.188781371, "valid": false } ] } ] color.json100640000766000024 212615240201330 26652 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of CSS colors", "schema": { "format": "color" }, "tests": [ { "description": "a valid CSS color name", "data": "fuchsia", "valid": true }, { "description": "a valid six-digit CSS color code", "data": "#CC8899", "valid": true }, { "description": "a valid three-digit CSS color code", "data": "#C89", "valid": true }, { "description": "an invalid CSS color code", "data": "#00332520", "valid": false }, { "description": "an invalid CSS color name", "data": "puce", "valid": false }, { "description": "a CSS color name containing invalid characters", "data": "light_grayish_red-violet", "valid": false } ] } ] email.json100640000766000024 407415240201330 26627 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of e-mail addresses", "schema": { "format": "email" }, "tests": [ { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "an invalid e-mail address", "data": "2962", "valid": false }, { "description": "tilde in local part is valid", "data": "te~st@example.com", "valid": true }, { "description": "tilde before local part is valid", "data": "~test@example.com", "valid": true }, { "description": "tilde after local part is valid", "data": "test~@example.com", "valid": true }, { "description": "dot before local part is not valid", "data": ".test@example.com", "valid": false }, { "description": "dot after local part is not valid", "data": "test.@example.com", "valid": false }, { "description": "two separated dots inside local part are valid", "data": "te.s.t@example.com", "valid": true }, { "description": "two subsequent dots inside local part are not valid", "data": "te..st@example.com", "valid": false }, { "description": "two email addresses is not valid", "data": "user1@oceania.org, user2@oceania.org", "valid": false }, { "description": "full \"From\" header is invalid", "data": "\"Winston Smith\" (Records Department)", "valid": false } ] } ] regex.json100640000766000024 74715240201330 26635 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of regular expressions", "schema": { "format": "regex" }, "tests": [ { "description": "a valid regular expression", "data": "([abc])+\\s+$", "valid": true }, { "description": "a regular expression with unclosed parens is invalid", "data": "^(abc]", "valid": false } ] } ] email.json100640000766000024 672015240201330 26630 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional/format[ { "description": "validation of e-mail addresses", "schema": { "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "an invalid e-mail address", "data": "2962", "valid": false }, { "description": "tilde in local part is valid", "data": "te~st@example.com", "valid": true }, { "description": "tilde before local part is valid", "data": "~test@example.com", "valid": true }, { "description": "tilde after local part is valid", "data": "test~@example.com", "valid": true }, { "description": "dot before local part is not valid", "data": ".test@example.com", "valid": false }, { "description": "dot after local part is not valid", "data": "test.@example.com", "valid": false }, { "description": "two separated dots inside local part are valid", "data": "te.s.t@example.com", "valid": true }, { "description": "two subsequent dots inside local part are not valid", "data": "te..st@example.com", "valid": false }, { "description": "two email addresses is not valid", "data": "user1@oceania.org, user2@oceania.org", "valid": false }, { "description": "full \"From\" header is invalid", "data": "\"Winston Smith\" (Records Department)", "valid": false }, { "description": "local part is required", "data": "@example.com", "valid": false }, { "description": "domain is required", "data": "joe.bloggs@", "valid": false }, { "description": "unquoted space in local part is invalid", "data": "joe bloggs@example.com", "valid": false } ] } ] email.json100640000766000024 672015240201330 26632 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "validation of e-mail addresses", "schema": { "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "an invalid e-mail address", "data": "2962", "valid": false }, { "description": "tilde in local part is valid", "data": "te~st@example.com", "valid": true }, { "description": "tilde before local part is valid", "data": "~test@example.com", "valid": true }, { "description": "tilde after local part is valid", "data": "test~@example.com", "valid": true }, { "description": "dot before local part is not valid", "data": ".test@example.com", "valid": false }, { "description": "dot after local part is not valid", "data": "test.@example.com", "valid": false }, { "description": "two separated dots inside local part are valid", "data": "te.s.t@example.com", "valid": true }, { "description": "two subsequent dots inside local part are not valid", "data": "te..st@example.com", "valid": false }, { "description": "two email addresses is not valid", "data": "user1@oceania.org, user2@oceania.org", "valid": false }, { "description": "full \"From\" header is invalid", "data": "\"Winston Smith\" (Records Department)", "valid": false }, { "description": "local part is required", "data": "@example.com", "valid": false }, { "description": "domain is required", "data": "joe.bloggs@", "valid": false }, { "description": "unquoted space in local part is invalid", "data": "joe bloggs@example.com", "valid": false } ] } ] email.json100640000766000024 672015240201330 26633 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of e-mail addresses", "schema": { "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "an invalid e-mail address", "data": "2962", "valid": false }, { "description": "tilde in local part is valid", "data": "te~st@example.com", "valid": true }, { "description": "tilde before local part is valid", "data": "~test@example.com", "valid": true }, { "description": "tilde after local part is valid", "data": "test~@example.com", "valid": true }, { "description": "dot before local part is not valid", "data": ".test@example.com", "valid": false }, { "description": "dot after local part is not valid", "data": "test.@example.com", "valid": false }, { "description": "two separated dots inside local part are valid", "data": "te.s.t@example.com", "valid": true }, { "description": "two subsequent dots inside local part are not valid", "data": "te..st@example.com", "valid": false }, { "description": "two email addresses is not valid", "data": "user1@oceania.org, user2@oceania.org", "valid": false }, { "description": "full \"From\" header is invalid", "data": "\"Winston Smith\" (Records Department)", "valid": false }, { "description": "local part is required", "data": "@example.com", "valid": false }, { "description": "domain is required", "data": "joe.bloggs@", "valid": false }, { "description": "unquoted space in local part is invalid", "data": "joe bloggs@example.com", "valid": false } ] } ] regex.json100640000766000024 261615240201330 26656 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of regular expressions", "schema": { "format": "regex" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid regular expression", "data": "([abc])+\\s+$", "valid": true }, { "description": "a regular expression with unclosed parens is invalid", "data": "^(abc]", "valid": false } ] } ] ecmascript-regex.json100640000766000024 4631115240201330 26675 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "ECMA 262 regex $ does not match trailing newline", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^abc$" }, "tests": [ { "description": "matches in Python, but not in ECMA 262", "data": "abc\\n", "valid": false }, { "description": "matches", "data": "abc", "valid": true } ] }, { "description": "ECMA 262 regex converts \\t to horizontal tab", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\t$" }, "tests": [ { "description": "does not match", "data": "\\t", "valid": false }, { "description": "matches", "data": "\u0009", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and upper letter", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\cC$" }, "tests": [ { "description": "does not match", "data": "\\cC", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and lower letter", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\cc$" }, "tests": [ { "description": "does not match", "data": "\\cc", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 \\d matches ascii digits only", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\d$" }, "tests": [ { "description": "ASCII zero matches", "data": "0", "valid": true }, { "description": "NKO DIGIT ZERO does not match (unlike e.g. Python)", "data": "߀", "valid": false }, { "description": "NKO DIGIT ZERO (as \\u escape) does not match", "data": "\u07c0", "valid": false } ] }, { "description": "ECMA 262 \\D matches everything but ascii digits", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\D$" }, "tests": [ { "description": "ASCII zero does not match", "data": "0", "valid": false }, { "description": "NKO DIGIT ZERO matches (unlike e.g. Python)", "data": "߀", "valid": true }, { "description": "NKO DIGIT ZERO (as \\u escape) matches", "data": "\u07c0", "valid": true } ] }, { "description": "ECMA 262 \\w matches ascii letters only", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\w$" }, "tests": [ { "description": "ASCII 'a' matches", "data": "a", "valid": true }, { "description": "latin-1 e-acute does not match (unlike e.g. Python)", "data": "é", "valid": false } ] }, { "description": "ECMA 262 \\W matches everything but ascii letters", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\W$" }, "tests": [ { "description": "ASCII 'a' does not match", "data": "a", "valid": false }, { "description": "latin-1 e-acute matches (unlike e.g. Python)", "data": "é", "valid": true } ] }, { "description": "ECMA 262 \\s matches whitespace", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\s$" }, "tests": [ { "description": "ASCII space matches", "data": " ", "valid": true }, { "description": "Character tabulation matches", "data": "\t", "valid": true }, { "description": "Line tabulation matches", "data": "\u000b", "valid": true }, { "description": "Form feed matches", "data": "\u000c", "valid": true }, { "description": "latin-1 non-breaking-space matches", "data": "\u00a0", "valid": true }, { "description": "zero-width whitespace matches", "data": "\ufeff", "valid": true }, { "description": "line feed matches (line terminator)", "data": "\u000a", "valid": true }, { "description": "paragraph separator matches (line terminator)", "data": "\u2029", "valid": true }, { "description": "EM SPACE matches (Space_Separator)", "data": "\u2003", "valid": true }, { "description": "Non-whitespace control does not match", "data": "\u0001", "valid": false }, { "description": "Non-whitespace does not match", "data": "\u2013", "valid": false } ] }, { "description": "ECMA 262 \\S matches everything but whitespace", "schema": { "$schema": "https://json-schema.org/v1", "type": "string", "pattern": "^\\S$" }, "tests": [ { "description": "ASCII space does not match", "data": " ", "valid": false }, { "description": "Character tabulation does not match", "data": "\t", "valid": false }, { "description": "Line tabulation does not match", "data": "\u000b", "valid": false }, { "description": "Form feed does not match", "data": "\u000c", "valid": false }, { "description": "latin-1 non-breaking-space does not match", "data": "\u00a0", "valid": false }, { "description": "zero-width whitespace does not match", "data": "\ufeff", "valid": false }, { "description": "line feed does not match (line terminator)", "data": "\u000a", "valid": false }, { "description": "paragraph separator does not match (line terminator)", "data": "\u2029", "valid": false }, { "description": "EM SPACE does not match (Space_Separator)", "data": "\u2003", "valid": false }, { "description": "Non-whitespace control matches", "data": "\u0001", "valid": true }, { "description": "Non-whitespace matches", "data": "\u2013", "valid": true } ] }, { "description": "patterns always use unicode semantics with pattern", "schema": { "$schema": "https://json-schema.org/v1", "pattern": "\\p{Letter}cole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "\\w in patterns matches [A-Za-z0-9_], not unicode letters", "schema": { "$schema": "https://json-schema.org/v1", "pattern": "\\wcole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "pattern with ASCII ranges", "schema": { "$schema": "https://json-schema.org/v1", "pattern": "[a-z]cole" }, "tests": [ { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "ascii characters match", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true } ] }, { "description": "\\d in pattern matches [0-9], not unicode digits", "schema": { "$schema": "https://json-schema.org/v1", "pattern": "^\\d+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": false } ] }, { "description": "pattern with non-ASCII digits", "schema": { "$schema": "https://json-schema.org/v1", "pattern": "^\\p{digit}+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": true } ] }, { "description": "patterns always use unicode semantics with patternProperties", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "patternProperties": { "\\p{Letter}cole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": true }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": true }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "\\w in patternProperties matches [A-Za-z0-9_], not unicode letters", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "patternProperties": { "\\wcole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "patternProperties with ASCII ranges", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "patternProperties": { "[a-z]cole": true }, "additionalProperties": false }, "tests": [ { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "ascii characters match", "data": { "l'ecole": "pas de vraie vie" }, "valid": true } ] }, { "description": "\\d in patternProperties matches [0-9], not unicode digits", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "patternProperties": { "^\\d+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": false } ] }, { "description": "patternProperties with non-ASCII digits", "schema": { "$schema": "https://json-schema.org/v1", "type": "object", "patternProperties": { "^\\p{digit}+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": true } ] } ] baseUriChange000755000766000024 015240201330 23220 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotesfolderInteger.json100640000766000024 3215240201330 26773 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/baseUriChange{ "type": "integer" } urn-ref-string.json100640000766000024 20415240201330 26247 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$id": "urn:uuid:feebdaed-ffff-0000-2019-0900deadbeef", "$defs": {"bar": {"type": "string"}}, "$ref": "#/$defs/bar" } urn-ref-string.json100640000766000024 20415240201330 26231 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$id": "urn:uuid:feebdaed-ffff-0000-2020-1200deadbeef", "$defs": {"bar": {"type": "string"}}, "$ref": "#/$defs/bar" } dependentSchemas.json100640000766000024 1155515240201330 26376 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "single dependency", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependentSchemas": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "boolean subschemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependentSchemas": { "foo": true, "bar": false } }, "tests": [ { "description": "object with property having schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property having schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependentSchemas": { "foo\tbar": {"minProperties": 4}, "foo'bar": {"required": ["foo\"bar"]} } }, "tests": [ { "description": "quoted tab", "data": { "foo\tbar": 1, "a": 2, "b": 3, "c": 4 }, "valid": true }, { "description": "quoted quote", "data": { "foo'bar": {"foo\"bar": 1} }, "valid": false }, { "description": "quoted tab invalid under dependent schema", "data": { "foo\tbar": 1, "a": 2 }, "valid": false }, { "description": "quoted quote invalid under dependent schema", "data": {"foo'bar": 1}, "valid": false } ] }, { "description": "dependent subschema incompatible with root", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {} }, "dependentSchemas": { "foo": { "properties": { "bar": {} }, "additionalProperties": false } } }, "tests": [ { "description": "matches root", "data": {"foo": 1}, "valid": false }, { "description": "matches dependency", "data": {"bar": 1}, "valid": true }, { "description": "matches both", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "no dependency", "data": {"baz": 1}, "valid": true } ] } ] exclusiveMaximum.json100640000766000024 151615240201330 26445 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "exclusiveMaximum validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "exclusiveMaximum": 3.0 }, "tests": [ { "description": "below the exclusiveMaximum is valid", "data": 2.2, "valid": true }, { "description": "boundary point is invalid", "data": 3.0, "valid": false }, { "description": "above the exclusiveMaximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] exclusiveMinimum.json100640000766000024 151615240201330 26443 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "exclusiveMinimum validation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "exclusiveMinimum": 1.1 }, "tests": [ { "description": "above the exclusiveMinimum is valid", "data": 1.2, "valid": true }, { "description": "boundary point is invalid", "data": 1.1, "valid": false }, { "description": "below the exclusiveMinimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] unevaluatedItems.json100640000766000024 5174515240201330 26450 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "unevaluatedItems true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unevaluatedItems": true }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with unevaluated items", "data": ["foo"], "valid": true } ] }, { "description": "unevaluatedItems false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with unevaluated items", "data": ["foo"], "valid": false } ] }, { "description": "unevaluatedItems as schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unevaluatedItems": { "type": "string" } }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with valid unevaluated items", "data": ["foo"], "valid": true }, { "description": "with invalid unevaluated items", "data": [42], "valid": false } ] }, { "description": "unevaluatedItems with uniform items", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": { "type": "string" }, "unevaluatedItems": false }, "tests": [ { "description": "unevaluatedItems doesn't apply", "data": ["foo", "bar"], "valid": true } ] }, { "description": "unevaluatedItems with tuple", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "type": "string" } ], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": ["foo"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar"], "valid": false } ] }, { "description": "unevaluatedItems with items and additionalItems", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "type": "string" } ], "additionalItems": true, "unevaluatedItems": false }, "tests": [ { "description": "unevaluatedItems doesn't apply", "data": ["foo", 42], "valid": true } ] }, { "description": "unevaluatedItems with ignored additionalItems", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "additionalItems": {"type": "number"}, "unevaluatedItems": {"type": "string"} }, "tests": [ { "description": "invalid under unevaluatedItems", "comment": "additionalItems is entirely ignored when items isn't present, so all elements need to be valid against the unevaluatedItems schema", "data": ["foo", 1], "valid": false }, { "description": "all valid under unevaluatedItems", "data": ["foo", "bar", "baz"], "valid": true } ] }, { "description": "unevaluatedItems with ignored applicator additionalItems", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "additionalItems": { "type": "number" } } ], "unevaluatedItems": {"type": "string"} }, "tests": [ { "description": "invalid under unevaluatedItems", "comment": "additionalItems is entirely ignored when items isn't present, so all elements need to be valid against the unevaluatedItems schema", "data": ["foo", 1], "valid": false }, { "description": "all valid under unevaluatedItems", "data": ["foo", "bar", "baz"], "valid": true } ] }, { "description": "unevaluatedItems with nested tuple", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "type": "string" } ], "allOf": [ { "items": [ true, { "type": "number" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", 42], "valid": true }, { "description": "with unevaluated items", "data": ["foo", 42, true], "valid": false } ] }, { "description": "unevaluatedItems with nested items", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unevaluatedItems": {"type": "boolean"}, "anyOf": [ { "items": {"type": "string"} }, true ] }, "tests": [ { "description": "with only (valid) additional items", "data": [true, false], "valid": true }, { "description": "with no additional items", "data": ["yes", "no"], "valid": true }, { "description": "with invalid additional item", "data": ["yes", false], "valid": false } ] }, { "description": "unevaluatedItems with nested items and additionalItems", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "items": [ { "type": "string" } ], "additionalItems": true } ], "unevaluatedItems": false }, "tests": [ { "description": "with no additional items", "data": ["foo"], "valid": true }, { "description": "with additional items", "data": ["foo", 42, true], "valid": true } ] }, { "description": "unevaluatedItems with nested unevaluatedItems", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "items": [ { "type": "string" } ] }, { "unevaluatedItems": true } ], "unevaluatedItems": false }, "tests": [ { "description": "with no additional items", "data": ["foo"], "valid": true }, { "description": "with additional items", "data": ["foo", 42, true], "valid": true } ] }, { "description": "unevaluatedItems with anyOf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "const": "foo" } ], "anyOf": [ { "items": [ true, { "const": "bar" } ] }, { "items": [ true, true, { "const": "baz" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "when one schema matches and has no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "when one schema matches and has unevaluated items", "data": ["foo", "bar", 42], "valid": false }, { "description": "when two schemas match and has no unevaluated items", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "when two schemas match and has unevaluated items", "data": ["foo", "bar", "baz", 42], "valid": false } ] }, { "description": "unevaluatedItems with oneOf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "const": "foo" } ], "oneOf": [ { "items": [ true, { "const": "bar" } ] }, { "items": [ true, { "const": "baz" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", 42], "valid": false } ] }, { "description": "unevaluatedItems with not", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "const": "foo" } ], "not": { "not": { "items": [ true, { "const": "bar" } ] } }, "unevaluatedItems": false }, "tests": [ { "description": "with unevaluated items", "data": ["foo", "bar"], "valid": false } ] }, { "description": "unevaluatedItems with if/then/else", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "const": "foo" } ], "if": { "items": [ true, { "const": "bar" } ] }, "then": { "items": [ true, true, { "const": "then" } ] }, "else": { "items": [ true, true, true, { "const": "else" } ] }, "unevaluatedItems": false }, "tests": [ { "description": "when if matches and it has no unevaluated items", "data": ["foo", "bar", "then"], "valid": true }, { "description": "when if matches and it has unevaluated items", "data": ["foo", "bar", "then", "else"], "valid": false }, { "description": "when if doesn't match and it has no unevaluated items", "data": ["foo", 42, 42, "else"], "valid": true }, { "description": "when if doesn't match and it has unevaluated items", "data": ["foo", 42, 42, "else", 42], "valid": false } ] }, { "description": "unevaluatedItems with boolean schemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [true], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with unevaluated items", "data": ["foo"], "valid": false } ] }, { "description": "unevaluatedItems with $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$ref": "#/$defs/bar", "items": [ { "type": "string" } ], "unevaluatedItems": false, "$defs": { "bar": { "items": [ true, { "type": "string" } ] } } }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems before $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unevaluatedItems": false, "items": [ { "type": "string" } ], "$ref": "#/$defs/bar", "$defs": { "bar": { "items": [ true, { "type": "string" } ] } } }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems with $recursiveRef", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://example.com/unevaluated-items-with-recursive-ref/extended-tree", "$recursiveAnchor": true, "$ref": "./tree", "items": [ true, true, { "type": "string" } ], "$defs": { "tree": { "$id": "./tree", "$recursiveAnchor": true, "type": "array", "items": [ { "type": "number" }, { "$comment": "unevaluatedItems comes first so it's more likely to catch bugs with implementations that are sensitive to keyword ordering", "unevaluatedItems": false, "$recursiveRef": "#" } ] } } }, "tests": [ { "description": "with no unevaluated items", "data": [1, [2, [], "b"], "a"], "valid": true }, { "description": "with unevaluated items", "data": [1, [2, [], "b", "too many"], "a"], "valid": false } ] }, { "description": "unevaluatedItems can't see inside cousins", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "items": [ true ] }, { "unevaluatedItems": false } ] }, "tests": [ { "description": "always fails", "data": [ 1 ], "valid": false } ] }, { "description": "item is evaluated in an uncle schema to unevaluatedItems", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": { "items": [ { "type": "string" } ], "unevaluatedItems": false } }, "anyOf": [ { "properties": { "foo": { "items": [ true, { "type": "string" } ] } } } ] }, "tests": [ { "description": "no extra items", "data": { "foo": [ "test" ] }, "valid": true }, { "description": "uncle keyword evaluation is not significant", "data": { "foo": [ "test", "test" ] }, "valid": false } ] }, { "description": "non-array instances are valid", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unevaluatedItems": false }, "tests": [ { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "unevaluatedItems with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unevaluatedItems": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] }, { "description": "unevaluatedItems can see annotations from if without then and else", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "if": { "items": [{"const": "a"}] }, "unevaluatedItems": false }, "tests": [ { "description": "valid in case if is evaluated", "data": [ "a" ], "valid": true }, { "description": "invalid in case if is evaluated", "data": [ "b" ], "valid": false } ] }, { "description": "Evaluated items collection needs to consider instance location", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "items": [ { "items": [ true, { "type": "string" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "with an unevaluated item that exists at another location", "data": [ ["foo", "bar"], "bar" ], "valid": false } ] } ] dependentSchemas.json100640000766000024 1155515240201330 26360 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "single dependency", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependentSchemas": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "boolean subschemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependentSchemas": { "foo": true, "bar": false } }, "tests": [ { "description": "object with property having schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property having schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependentSchemas": { "foo\tbar": {"minProperties": 4}, "foo'bar": {"required": ["foo\"bar"]} } }, "tests": [ { "description": "quoted tab", "data": { "foo\tbar": 1, "a": 2, "b": 3, "c": 4 }, "valid": true }, { "description": "quoted quote", "data": { "foo'bar": {"foo\"bar": 1} }, "valid": false }, { "description": "quoted tab invalid under dependent schema", "data": { "foo\tbar": 1, "a": 2 }, "valid": false }, { "description": "quoted quote invalid under dependent schema", "data": {"foo'bar": 1}, "valid": false } ] }, { "description": "dependent subschema incompatible with root", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {} }, "dependentSchemas": { "foo": { "properties": { "bar": {} }, "additionalProperties": false } } }, "tests": [ { "description": "matches root", "data": {"foo": 1}, "valid": false }, { "description": "matches dependency", "data": {"bar": 1}, "valid": true }, { "description": "matches both", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "no dependency", "data": {"baz": 1}, "valid": true } ] } ] exclusiveMaximum.json100640000766000024 151615240201330 26427 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "exclusiveMaximum validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "exclusiveMaximum": 3.0 }, "tests": [ { "description": "below the exclusiveMaximum is valid", "data": 2.2, "valid": true }, { "description": "boundary point is invalid", "data": 3.0, "valid": false }, { "description": "above the exclusiveMaximum is invalid", "data": 3.5, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] exclusiveMinimum.json100640000766000024 151615240201330 26425 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "exclusiveMinimum validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "exclusiveMinimum": 1.1 }, "tests": [ { "description": "above the exclusiveMinimum is valid", "data": 1.2, "valid": true }, { "description": "boundary point is invalid", "data": 1.1, "valid": false }, { "description": "below the exclusiveMinimum is invalid", "data": 0.6, "valid": false }, { "description": "ignores non-numbers", "data": "x", "valid": true } ] } ] unevaluatedItems.json100640000766000024 6146315240201330 26430 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "unevaluatedItems true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedItems": true }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with unevaluated items", "data": ["foo"], "valid": true } ] }, { "description": "unevaluatedItems false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with unevaluated items", "data": ["foo"], "valid": false } ] }, { "description": "unevaluatedItems as schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedItems": { "type": "string" } }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with valid unevaluated items", "data": ["foo"], "valid": true }, { "description": "with invalid unevaluated items", "data": [42], "valid": false } ] }, { "description": "unevaluatedItems with uniform items", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "items": { "type": "string" }, "unevaluatedItems": false }, "tests": [ { "description": "unevaluatedItems doesn't apply", "data": ["foo", "bar"], "valid": true } ] }, { "description": "unevaluatedItems with tuple", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "type": "string" } ], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": ["foo"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar"], "valid": false } ] }, { "description": "unevaluatedItems with items and prefixItems", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "type": "string" } ], "items": true, "unevaluatedItems": false }, "tests": [ { "description": "unevaluatedItems doesn't apply", "data": ["foo", 42], "valid": true } ] }, { "description": "unevaluatedItems with items", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "items": {"type": "number"}, "unevaluatedItems": {"type": "string"} }, "tests": [ { "description": "valid under items", "comment": "no elements are considered by unevaluatedItems", "data": [5, 6, 7, 8], "valid": true }, { "description": "invalid under items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems with nested tuple", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "type": "string" } ], "allOf": [ { "prefixItems": [ true, { "type": "number" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", 42], "valid": true }, { "description": "with unevaluated items", "data": ["foo", 42, true], "valid": false } ] }, { "description": "unevaluatedItems with nested items", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedItems": {"type": "boolean"}, "anyOf": [ { "items": {"type": "string"} }, true ] }, "tests": [ { "description": "with only (valid) additional items", "data": [true, false], "valid": true }, { "description": "with no additional items", "data": ["yes", "no"], "valid": true }, { "description": "with invalid additional item", "data": ["yes", false], "valid": false } ] }, { "description": "unevaluatedItems with nested prefixItems and items", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "prefixItems": [ { "type": "string" } ], "items": true } ], "unevaluatedItems": false }, "tests": [ { "description": "with no additional items", "data": ["foo"], "valid": true }, { "description": "with additional items", "data": ["foo", 42, true], "valid": true } ] }, { "description": "unevaluatedItems with nested unevaluatedItems", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "prefixItems": [ { "type": "string" } ] }, { "unevaluatedItems": true } ], "unevaluatedItems": false }, "tests": [ { "description": "with no additional items", "data": ["foo"], "valid": true }, { "description": "with additional items", "data": ["foo", 42, true], "valid": true } ] }, { "description": "unevaluatedItems with anyOf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "const": "foo" } ], "anyOf": [ { "prefixItems": [ true, { "const": "bar" } ] }, { "prefixItems": [ true, true, { "const": "baz" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "when one schema matches and has no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "when one schema matches and has unevaluated items", "data": ["foo", "bar", 42], "valid": false }, { "description": "when two schemas match and has no unevaluated items", "data": ["foo", "bar", "baz"], "valid": true }, { "description": "when two schemas match and has unevaluated items", "data": ["foo", "bar", "baz", 42], "valid": false } ] }, { "description": "unevaluatedItems with oneOf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "const": "foo" } ], "oneOf": [ { "prefixItems": [ true, { "const": "bar" } ] }, { "prefixItems": [ true, { "const": "baz" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", 42], "valid": false } ] }, { "description": "unevaluatedItems with not", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "const": "foo" } ], "not": { "not": { "prefixItems": [ true, { "const": "bar" } ] } }, "unevaluatedItems": false }, "tests": [ { "description": "with unevaluated items", "data": ["foo", "bar"], "valid": false } ] }, { "description": "unevaluatedItems with if/then/else", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "const": "foo" } ], "if": { "prefixItems": [ true, { "const": "bar" } ] }, "then": { "prefixItems": [ true, true, { "const": "then" } ] }, "else": { "prefixItems": [ true, true, true, { "const": "else" } ] }, "unevaluatedItems": false }, "tests": [ { "description": "when if matches and it has no unevaluated items", "data": ["foo", "bar", "then"], "valid": true }, { "description": "when if matches and it has unevaluated items", "data": ["foo", "bar", "then", "else"], "valid": false }, { "description": "when if doesn't match and it has no unevaluated items", "data": ["foo", 42, 42, "else"], "valid": true }, { "description": "when if doesn't match and it has unevaluated items", "data": ["foo", 42, 42, "else", 42], "valid": false } ] }, { "description": "unevaluatedItems with boolean schemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [true], "unevaluatedItems": false }, "tests": [ { "description": "with no unevaluated items", "data": [], "valid": true }, { "description": "with unevaluated items", "data": ["foo"], "valid": false } ] }, { "description": "unevaluatedItems with $ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "#/$defs/bar", "prefixItems": [ { "type": "string" } ], "unevaluatedItems": false, "$defs": { "bar": { "prefixItems": [ true, { "type": "string" } ] } } }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems before $ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedItems": false, "prefixItems": [ { "type": "string" } ], "$ref": "#/$defs/bar", "$defs": { "bar": { "prefixItems": [ true, { "type": "string" } ] } } }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems with $dynamicRef", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/unevaluated-items-with-dynamic-ref/derived", "$ref": "./baseSchema", "$defs": { "derived": { "$dynamicAnchor": "addons", "prefixItems": [ true, { "type": "string" } ] }, "baseSchema": { "$id": "./baseSchema", "$comment": "unevaluatedItems comes first so it's more likely to catch bugs with implementations that are sensitive to keyword ordering", "unevaluatedItems": false, "type": "array", "prefixItems": [ { "type": "string" } ], "$dynamicRef": "#addons", "$defs": { "defaultAddons": { "$comment": "Needed to satisfy the bookending requirement", "$dynamicAnchor": "addons" } } } } }, "tests": [ { "description": "with no unevaluated items", "data": ["foo", "bar"], "valid": true }, { "description": "with unevaluated items", "data": ["foo", "bar", "baz"], "valid": false } ] }, { "description": "unevaluatedItems can't see inside cousins", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "prefixItems": [ true ] }, { "unevaluatedItems": false } ] }, "tests": [ { "description": "always fails", "data": [ 1 ], "valid": false } ] }, { "description": "item is evaluated in an uncle schema to unevaluatedItems", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "prefixItems": [ { "type": "string" } ], "unevaluatedItems": false } }, "anyOf": [ { "properties": { "foo": { "prefixItems": [ true, { "type": "string" } ] } } } ] }, "tests": [ { "description": "no extra items", "data": { "foo": [ "test" ] }, "valid": true }, { "description": "uncle keyword evaluation is not significant", "data": { "foo": [ "test", "test" ] }, "valid": false } ] }, { "description": "unevaluatedItems depends on adjacent contains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [true], "contains": {"type": "string"}, "unevaluatedItems": false }, "tests": [ { "description": "second item is evaluated by contains", "data": [ 1, "foo" ], "valid": true }, { "description": "contains fails, second item is not evaluated", "data": [ 1, 2 ], "valid": false }, { "description": "contains passes, second item is not evaluated", "data": [ 1, 2, "foo" ], "valid": false } ] }, { "description": "unevaluatedItems depends on multiple nested contains", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "contains": { "multipleOf": 2 } }, { "contains": { "multipleOf": 3 } } ], "unevaluatedItems": { "multipleOf": 5 } }, "tests": [ { "description": "5 not evaluated, passes unevaluatedItems", "data": [ 2, 3, 4, 5, 6 ], "valid": true }, { "description": "7 not evaluated, fails unevaluatedItems", "data": [ 2, 3, 4, 7, 8 ], "valid": false } ] }, { "description": "unevaluatedItems and contains interact to control item dependency relationship", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "contains": {"const": "a"} }, "then": { "if": { "contains": {"const": "b"} }, "then": { "if": { "contains": {"const": "c"} } } }, "unevaluatedItems": false }, "tests": [ { "description": "empty array is valid", "data": [], "valid": true }, { "description": "only a's are valid", "data": [ "a", "a" ], "valid": true }, { "description": "a's and b's are valid", "data": [ "a", "b", "a", "b", "a" ], "valid": true }, { "description": "a's, b's and c's are valid", "data": [ "c", "a", "c", "c", "b", "a" ], "valid": true }, { "description": "only b's are invalid", "data": [ "b", "b" ], "valid": false }, { "description": "only c's are invalid", "data": [ "c", "c" ], "valid": false }, { "description": "only b's and c's are invalid", "data": [ "c", "b", "c", "b", "c" ], "valid": false }, { "description": "only a's and c's are invalid", "data": [ "c", "a", "c", "a", "c" ], "valid": false } ] }, { "description" : "unevaluatedItems with minContains = 0", "schema" : { "$schema": "https://json-schema.org/draft/2020-12/schema", "contains": {"type": "string"}, "minContains": 0, "unevaluatedItems": false }, "tests" : [ { "description": "empty array is valid", "data": [], "valid": true }, { "description": "no items evaluated by contains", "data": [0], "valid": false }, { "description": "some but not all items evaluated by contains", "data": ["foo", 0], "valid": false }, { "description": "all items evaluated by contains", "data": ["foo", "bar"], "valid": true } ] }, { "description": "non-array instances are valid", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedItems": false }, "tests": [ { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores objects", "data": {}, "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "unevaluatedItems with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedItems": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] }, { "description": "unevaluatedItems can see annotations from if without then and else", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "prefixItems": [{"const": "a"}] }, "unevaluatedItems": false }, "tests": [ { "description": "valid in case if is evaluated", "data": [ "a" ], "valid": true }, { "description": "invalid in case if is evaluated", "data": [ "b" ], "valid": false } ] }, { "description": "Evaluated items collection needs to consider instance location", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ { "prefixItems": [ true, { "type": "string" } ] } ], "unevaluatedItems": false }, "tests": [ { "description": "with an unevaluated item that exists at another location", "data": [ ["foo", "bar"], "bar" ], "valid": false } ] } ] non-bmp-regex.json100640000766000024 453615240201330 26731 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional[ { "description": "Proper UTF-16 surrogate pair handling: pattern", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "pattern": "^🐲*$" }, "tests": [ { "description": "matches empty", "data": "", "valid": true }, { "description": "matches single", "data": "🐲", "valid": true }, { "description": "matches two", "data": "🐲🐲", "valid": true }, { "description": "doesn't match one", "data": "🐉", "valid": false }, { "description": "doesn't match two", "data": "🐉🐉", "valid": false }, { "description": "doesn't match one ASCII", "data": "D", "valid": false }, { "description": "doesn't match two ASCII", "data": "DD", "valid": false } ] }, { "description": "Proper UTF-16 surrogate pair handling: patternProperties", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "patternProperties": { "^🐲*$": { "type": "integer" } } }, "tests": [ { "description": "matches empty", "data": { "": 1 }, "valid": true }, { "description": "matches single", "data": { "🐲": 1 }, "valid": true }, { "description": "matches two", "data": { "🐲🐲": 1 }, "valid": true }, { "description": "doesn't match one", "data": { "🐲": "hello" }, "valid": false }, { "description": "doesn't match two", "data": { "🐲🐲": "hello" }, "valid": false } ] } ] non-bmp-regex.json100640000766000024 453615240201330 26732 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional[ { "description": "Proper UTF-16 surrogate pair handling: pattern", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "pattern": "^🐲*$" }, "tests": [ { "description": "matches empty", "data": "", "valid": true }, { "description": "matches single", "data": "🐲", "valid": true }, { "description": "matches two", "data": "🐲🐲", "valid": true }, { "description": "doesn't match one", "data": "🐉", "valid": false }, { "description": "doesn't match two", "data": "🐉🐉", "valid": false }, { "description": "doesn't match one ASCII", "data": "D", "valid": false }, { "description": "doesn't match two ASCII", "data": "DD", "valid": false } ] }, { "description": "Proper UTF-16 surrogate pair handling: patternProperties", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "patternProperties": { "^🐲*$": { "type": "integer" } } }, "tests": [ { "description": "matches empty", "data": { "": 1 }, "valid": true }, { "description": "matches single", "data": { "🐲": 1 }, "valid": true }, { "description": "matches two", "data": { "🐲🐲": 1 }, "valid": true }, { "description": "doesn't match one", "data": { "🐲": "hello" }, "valid": false }, { "description": "doesn't match two", "data": { "🐲🐲": "hello" }, "valid": false } ] } ] non-bmp-regex.json100640000766000024 453615240201330 26734 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional[ { "description": "Proper UTF-16 surrogate pair handling: pattern", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "pattern": "^🐲*$" }, "tests": [ { "description": "matches empty", "data": "", "valid": true }, { "description": "matches single", "data": "🐲", "valid": true }, { "description": "matches two", "data": "🐲🐲", "valid": true }, { "description": "doesn't match one", "data": "🐉", "valid": false }, { "description": "doesn't match two", "data": "🐉🐉", "valid": false }, { "description": "doesn't match one ASCII", "data": "D", "valid": false }, { "description": "doesn't match two ASCII", "data": "DD", "valid": false } ] }, { "description": "Proper UTF-16 surrogate pair handling: patternProperties", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "patternProperties": { "^🐲*$": { "type": "integer" } } }, "tests": [ { "description": "matches empty", "data": { "": 1 }, "valid": true }, { "description": "matches single", "data": { "🐲": 1 }, "valid": true }, { "description": "matches two", "data": { "🐲🐲": 1 }, "valid": true }, { "description": "doesn't match one", "data": { "🐲": "hello" }, "valid": false }, { "description": "doesn't match two", "data": { "🐲🐲": "hello" }, "valid": false } ] } ] non-bmp-regex.json100640000766000024 453615240201330 26735 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional[ { "description": "Proper UTF-16 surrogate pair handling: pattern", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "pattern": "^🐲*$" }, "tests": [ { "description": "matches empty", "data": "", "valid": true }, { "description": "matches single", "data": "🐲", "valid": true }, { "description": "matches two", "data": "🐲🐲", "valid": true }, { "description": "doesn't match one", "data": "🐉", "valid": false }, { "description": "doesn't match two", "data": "🐉🐉", "valid": false }, { "description": "doesn't match one ASCII", "data": "D", "valid": false }, { "description": "doesn't match two ASCII", "data": "DD", "valid": false } ] }, { "description": "Proper UTF-16 surrogate pair handling: patternProperties", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "patternProperties": { "^🐲*$": { "type": "integer" } } }, "tests": [ { "description": "matches empty", "data": { "": 1 }, "valid": true }, { "description": "matches single", "data": { "🐲": 1 }, "valid": true }, { "description": "matches two", "data": { "🐲🐲": 1 }, "valid": true }, { "description": "doesn't match one", "data": { "🐲": "hello" }, "valid": false }, { "description": "doesn't match two", "data": { "🐲🐲": "hello" }, "valid": false } ] } ] format-annotation.json100640000766000024 6132615240201330 27076 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "email format", "schema": { "$schema": "https://json-schema.org/v1", "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid email string is only an annotation by default", "data": "2962", "valid": true } ] }, { "description": "idn-email format", "schema": { "$schema": "https://json-schema.org/v1", "format": "idn-email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid idn-email string is only an annotation by default", "data": "2962", "valid": true } ] }, { "description": "regex format", "schema": { "$schema": "https://json-schema.org/v1", "format": "regex" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid regex string is only an annotation by default", "data": "^(abc]", "valid": true } ] }, { "description": "ipv4 format", "schema": { "$schema": "https://json-schema.org/v1", "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid ipv4 string is only an annotation by default", "data": "127.0.0.0.1", "valid": true } ] }, { "description": "ipv6 format", "schema": { "$schema": "https://json-schema.org/v1", "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid ipv6 string is only an annotation by default", "data": "12345::", "valid": true } ] }, { "description": "idn-hostname format", "schema": { "$schema": "https://json-schema.org/v1", "format": "idn-hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid idn-hostname string is only an annotation by default", "data": "〮실례.테스트", "valid": true } ] }, { "description": "hostname format", "schema": { "$schema": "https://json-schema.org/v1", "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid hostname string is only an annotation by default", "data": "-a-host-name-that-starts-with--", "valid": true } ] }, { "description": "date format", "schema": { "$schema": "https://json-schema.org/v1", "format": "date" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid date string is only an annotation by default", "data": "06/19/1963", "valid": true } ] }, { "description": "date-time format", "schema": { "$schema": "https://json-schema.org/v1", "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid date-time string is only an annotation by default", "data": "1990-02-31T15:59:60.123-08:00", "valid": true } ] }, { "description": "time format", "schema": { "$schema": "https://json-schema.org/v1", "format": "time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid time string is only an annotation by default", "data": "08:30:06 PST", "valid": true } ] }, { "description": "json-pointer format", "schema": { "$schema": "https://json-schema.org/v1", "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid json-pointer string is only an annotation by default", "data": "/foo/bar~", "valid": true } ] }, { "description": "relative-json-pointer format", "schema": { "$schema": "https://json-schema.org/v1", "format": "relative-json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid relative-json-pointer string is only an annotation by default", "data": "/foo/bar", "valid": true } ] }, { "description": "iri format", "schema": { "$schema": "https://json-schema.org/v1", "format": "iri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid iri string is only an annotation by default", "data": "http://2001:0db8:85a3:0000:0000:8a2e:0370:7334", "valid": true } ] }, { "description": "iri-reference format", "schema": { "$schema": "https://json-schema.org/v1", "format": "iri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid iri-reference string is only an annotation by default", "data": "\\\\WINDOWS\\filëßåré", "valid": true } ] }, { "description": "uri format", "schema": { "$schema": "https://json-schema.org/v1", "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid uri string is only an annotation by default", "data": "//foo.bar/?baz=qux#quux", "valid": true } ] }, { "description": "uri-reference format", "schema": { "$schema": "https://json-schema.org/v1", "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid uri-reference string is only an annotation by default", "data": "\\\\WINDOWS\\fileshare", "valid": true } ] }, { "description": "uri-template format", "schema": { "$schema": "https://json-schema.org/v1", "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid uri-template string is only an annotation by default", "data": "http://example.com/dictionary/{term:1}/{term", "valid": true } ] }, { "description": "uuid format", "schema": { "$schema": "https://json-schema.org/v1", "format": "uuid" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid uuid string is only an annotation by default", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d1638", "valid": true } ] }, { "description": "duration format", "schema": { "$schema": "https://json-schema.org/v1", "format": "duration" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "invalid duration string is only an annotation by default", "data": "PT1D", "valid": true } ] } ] content.json100644000766000024 215240201330 26310 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[]unicode.json100644000766000024 215240201330 26264 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[]unicode.json100644000766000024 215240201330 26246 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[]dependentRequired.json100640000766000024 1030615240201330 26564 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "single dependency", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependentRequired": {"bar": ["foo"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "empty dependents", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependentRequired": {"bar": []} }, "tests": [ { "description": "empty object", "data": {}, "valid": true }, { "description": "object with one property", "data": {"bar": 2}, "valid": true }, { "description": "non-object is valid", "data": 1, "valid": true } ] }, { "description": "multiple dependents required", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependentRequired": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependentRequired": { "foo\nbar": ["foo\rbar"], "foo\"bar": ["foo'bar"] } }, "tests": [ { "description": "CRLF", "data": { "foo\nbar": 1, "foo\rbar": 2 }, "valid": true }, { "description": "quoted quotes", "data": { "foo'bar": 1, "foo\"bar": 2 }, "valid": true }, { "description": "CRLF missing dependent", "data": { "foo\nbar": 1, "foo": 2 }, "valid": false }, { "description": "quoted quotes missing dependent", "data": { "foo\"bar": 2 }, "valid": false } ] } ] patternProperties.json100640000766000024 1263415240201330 26655 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "patternProperties validates properties matching a regex", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "patternProperties": { "f.*o": {"type": "integer"} } }, "tests": [ { "description": "a single valid match is valid", "data": {"foo": 1}, "valid": true }, { "description": "multiple valid matches is valid", "data": {"foo": 1, "foooooo" : 2}, "valid": true }, { "description": "a single invalid match is invalid", "data": {"foo": "bar", "fooooo": 2}, "valid": false }, { "description": "multiple invalid matches is invalid", "data": {"foo": "bar", "foooooo" : "baz"}, "valid": false }, { "description": "ignores arrays", "data": ["foo"], "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "multiple simultaneous patternProperties are validated", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "patternProperties": { "a*": {"type": "integer"}, "aaa*": {"maximum": 20} } }, "tests": [ { "description": "a single valid match is valid", "data": {"a": 21}, "valid": true }, { "description": "a simultaneous match is valid", "data": {"aaaa": 18}, "valid": true }, { "description": "multiple matches is valid", "data": {"a": 21, "aaaa": 18}, "valid": true }, { "description": "an invalid due to one is invalid", "data": {"a": "bar"}, "valid": false }, { "description": "an invalid due to the other is invalid", "data": {"aaaa": 31}, "valid": false }, { "description": "an invalid due to both is invalid", "data": {"aaa": "foo", "aaaa": 31}, "valid": false } ] }, { "description": "regexes are not anchored by default and are case sensitive", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "patternProperties": { "[0-9]{2,}": { "type": "boolean" }, "X_": { "type": "string" } } }, "tests": [ { "description": "non recognized members are ignored", "data": { "answer 1": "42" }, "valid": true }, { "description": "recognized members are accounted for", "data": { "a31b": null }, "valid": false }, { "description": "regexes are case sensitive", "data": { "a_x_3": 3 }, "valid": true }, { "description": "regexes are case sensitive, 2", "data": { "a_X_3": 3 }, "valid": false } ] }, { "description": "patternProperties with boolean schemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "patternProperties": { "f.*": true, "b.*": false } }, "tests": [ { "description": "object with property matching schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property matching schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "object with a property matching both true and false is invalid", "data": {"foobar":1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "patternProperties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "patternProperties": { "^.*bar$": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foobar": null}, "valid": true } ] } ] dependentRequired.json100640000766000024 1030615240201330 26546 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "single dependency", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependentRequired": {"bar": ["foo"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "empty dependents", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependentRequired": {"bar": []} }, "tests": [ { "description": "empty object", "data": {}, "valid": true }, { "description": "object with one property", "data": {"bar": 2}, "valid": true }, { "description": "non-object is valid", "data": 1, "valid": true } ] }, { "description": "multiple dependents required", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependentRequired": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependentRequired": { "foo\nbar": ["foo\rbar"], "foo\"bar": ["foo'bar"] } }, "tests": [ { "description": "CRLF", "data": { "foo\nbar": 1, "foo\rbar": 2 }, "valid": true }, { "description": "quoted quotes", "data": { "foo'bar": 1, "foo\"bar": 2 }, "valid": true }, { "description": "CRLF missing dependent", "data": { "foo\nbar": 1, "foo": 2 }, "valid": false }, { "description": "quoted quotes missing dependent", "data": { "foo\"bar": 2 }, "valid": false } ] } ] patternProperties.json100640000766000024 1430015240201330 26627 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "patternProperties validates properties matching a regex", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "patternProperties": { "f.*o": {"type": "integer"} } }, "tests": [ { "description": "a single valid match is valid", "data": {"foo": 1}, "valid": true }, { "description": "multiple valid matches is valid", "data": {"foo": 1, "foooooo" : 2}, "valid": true }, { "description": "a single invalid match is invalid", "data": {"foo": "bar", "fooooo": 2}, "valid": false }, { "description": "multiple invalid matches is invalid", "data": {"foo": "bar", "foooooo" : "baz"}, "valid": false }, { "description": "ignores arrays", "data": ["foo"], "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "multiple simultaneous patternProperties are validated", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "patternProperties": { "a*": {"type": "integer"}, "aaa*": {"maximum": 20} } }, "tests": [ { "description": "a single valid match is valid", "data": {"a": 21}, "valid": true }, { "description": "a simultaneous match is valid", "data": {"aaaa": 18}, "valid": true }, { "description": "multiple matches is valid", "data": {"a": 21, "aaaa": 18}, "valid": true }, { "description": "an invalid due to one is invalid", "data": {"a": "bar"}, "valid": false }, { "description": "an invalid due to the other is invalid", "data": {"aaaa": 31}, "valid": false }, { "description": "an invalid due to both is invalid", "data": {"aaa": "foo", "aaaa": 31}, "valid": false } ] }, { "description": "regexes are not anchored by default and are case sensitive", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "patternProperties": { "[0-9]{2,}": { "type": "boolean" }, "X_": { "type": "string" } } }, "tests": [ { "description": "non recognized members are ignored", "data": { "answer 1": "42" }, "valid": true }, { "description": "recognized members are accounted for", "data": { "a31b": null }, "valid": false }, { "description": "regexes are case sensitive", "data": { "a_x_3": 3 }, "valid": true }, { "description": "regexes are case sensitive, 2", "data": { "a_X_3": 3 }, "valid": false } ] }, { "description": "patternProperties with boolean schemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "patternProperties": { "f.*": true, "b.*": false } }, "tests": [ { "description": "object with property matching schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property matching schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "object with a property matching both true and false is invalid", "data": {"foobar":1}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "patternProperties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "patternProperties": { "^.*bar$": {"type": "null"} } }, "tests": [ { "description": "allows null values", "data": {"foobar": null}, "valid": true } ] }, { "description": "patternProperties with Unicode property escape", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "patternProperties": { "^\\p{Letter}+$": { "type": "number" } } }, "tests": [ { "description": "Unicode letter property name matches", "data": { "π": 1 }, "valid": true }, { "description": "Non-letter property name does not match pattern", "data": { "123": 1 }, "valid": true } ] } ] infinite-loop-detection.json100640000766000024 155415240201330 27153 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3[ { "description": "evaluating the same schema location against the same data location twice is not a sign of an infinite loop", "schema": { "definitions": { "int": { "type": "integer" } }, "properties": { "foo": { "$ref": "#/definitions/int" } }, "extends": { "additionalProperties": { "$ref": "#/definitions/int" } } }, "tests": [ { "description": "passing case", "data": { "foo": 1 }, "valid": true }, { "description": "failing case", "data": { "foo": "a string" }, "valid": false } ] } ] infinite-loop-detection.json100640000766000024 174615240201330 27157 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4[ { "description": "evaluating the same schema location against the same data location twice is not a sign of an infinite loop", "schema": { "definitions": { "int": { "type": "integer" } }, "allOf": [ { "properties": { "foo": { "$ref": "#/definitions/int" } } }, { "additionalProperties": { "$ref": "#/definitions/int" } } ] }, "tests": [ { "description": "passing case", "data": { "foo": 1 }, "valid": true }, { "description": "failing case", "data": { "foo": "a string" }, "valid": false } ] } ] float-overflow.json100640000766000024 55015240201330 27172 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional[ { "description": "all integers are multiples of 0.5, if overflow is handled", "schema": {"type": "number", "multipleOf": 0.5}, "tests": [ { "description": "valid if optional overflow handling is implemented", "data": 1e308, "valid": true } ] } ] unknown.json100640000766000024 226315240201330 27236 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional/format[ { "description": "unknown format", "schema": { "format": "unknown" }, "tests": [ { "description": "unknown formats ignore integers", "data": 12, "valid": true }, { "description": "unknown formats ignore floats", "data": 13.7, "valid": true }, { "description": "unknown formats ignore objects", "data": {}, "valid": true }, { "description": "unknown formats ignore arrays", "data": [], "valid": true }, { "description": "unknown formats ignore booleans", "data": false, "valid": true }, { "description": "unknown formats ignore nulls", "data": null, "valid": true }, { "description": "unknown formats ignore strings", "data": "string", "valid": true } ] } ] infinite-loop-detection.json100640000766000024 174615240201330 27161 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6[ { "description": "evaluating the same schema location against the same data location twice is not a sign of an infinite loop", "schema": { "definitions": { "int": { "type": "integer" } }, "allOf": [ { "properties": { "foo": { "$ref": "#/definitions/int" } } }, { "additionalProperties": { "$ref": "#/definitions/int" } } ] }, "tests": [ { "description": "passing case", "data": { "foo": 1 }, "valid": true }, { "description": "failing case", "data": { "foo": "a string" }, "valid": false } ] } ] float-overflow.json100640000766000024 55115240201330 27175 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional[ { "description": "all integers are multiples of 0.5, if overflow is handled", "schema": {"type": "integer", "multipleOf": 0.5}, "tests": [ { "description": "valid if optional overflow handling is implemented", "data": 1e308, "valid": true } ] } ] unknown.json100640000766000024 226315240201330 27240 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "unknown format", "schema": { "format": "unknown" }, "tests": [ { "description": "unknown formats ignore integers", "data": 12, "valid": true }, { "description": "unknown formats ignore floats", "data": 13.7, "valid": true }, { "description": "unknown formats ignore objects", "data": {}, "valid": true }, { "description": "unknown formats ignore arrays", "data": [], "valid": true }, { "description": "unknown formats ignore booleans", "data": false, "valid": true }, { "description": "unknown formats ignore nulls", "data": null, "valid": true }, { "description": "unknown formats ignore strings", "data": "string", "valid": true } ] } ] unknownKeyword.json100640000766000024 374215240201330 27320 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional[ { "description": "$id inside an unknown keyword is not a real identifier", "comment": "the implementation must not be confused by an $id in locations we do not know how to parse", "schema": { "definitions": { "id_in_unknown0": { "not": { "array_of_schemas": [ { "$id": "https://localhost:1234/unknownKeyword/my_identifier.json", "type": "null" } ] } }, "real_id_in_schema": { "$id": "https://localhost:1234/unknownKeyword/my_identifier.json", "type": "string" }, "id_in_unknown1": { "not": { "object_of_schemas": { "foo": { "$id": "https://localhost:1234/unknownKeyword/my_identifier.json", "type": "integer" } } } } }, "anyOf": [ { "$ref": "#/definitions/id_in_unknown0" }, { "$ref": "#/definitions/id_in_unknown1" }, { "$ref": "https://localhost:1234/unknownKeyword/my_identifier.json" } ] }, "tests": [ { "description": "type matches second anyOf, which has a real schema in it", "data": "a string", "valid": true }, { "description": "type matches non-schema in first anyOf", "data": null, "valid": false }, { "description": "type matches non-schema in third anyOf", "data": 1, "valid": false } ] } ] infinite-loop-detection.json100640000766000024 174615240201330 27162 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7[ { "description": "evaluating the same schema location against the same data location twice is not a sign of an infinite loop", "schema": { "definitions": { "int": { "type": "integer" } }, "allOf": [ { "properties": { "foo": { "$ref": "#/definitions/int" } } }, { "additionalProperties": { "$ref": "#/definitions/int" } } ] }, "tests": [ { "description": "passing case", "data": { "foo": 1 }, "valid": true }, { "description": "failing case", "data": { "foo": "a string" }, "valid": false } ] } ] float-overflow.json100640000766000024 55115240201330 27176 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional[ { "description": "all integers are multiples of 0.5, if overflow is handled", "schema": {"type": "integer", "multipleOf": 0.5}, "tests": [ { "description": "valid if optional overflow handling is implemented", "data": 1e308, "valid": true } ] } ] unknown.json100640000766000024 226315240201330 27241 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "unknown format", "schema": { "format": "unknown" }, "tests": [ { "description": "unknown formats ignore integers", "data": 12, "valid": true }, { "description": "unknown formats ignore floats", "data": 13.7, "valid": true }, { "description": "unknown formats ignore objects", "data": {}, "valid": true }, { "description": "unknown formats ignore arrays", "data": [], "valid": true }, { "description": "unknown formats ignore booleans", "data": false, "valid": true }, { "description": "unknown formats ignore nulls", "data": null, "valid": true }, { "description": "unknown formats ignore strings", "data": "string", "valid": true } ] } ] unknownKeyword.json100640000766000024 374215240201330 27321 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional[ { "description": "$id inside an unknown keyword is not a real identifier", "comment": "the implementation must not be confused by an $id in locations we do not know how to parse", "schema": { "definitions": { "id_in_unknown0": { "not": { "array_of_schemas": [ { "$id": "https://localhost:1234/unknownKeyword/my_identifier.json", "type": "null" } ] } }, "real_id_in_schema": { "$id": "https://localhost:1234/unknownKeyword/my_identifier.json", "type": "string" }, "id_in_unknown1": { "not": { "object_of_schemas": { "foo": { "$id": "https://localhost:1234/unknownKeyword/my_identifier.json", "type": "integer" } } } } }, "anyOf": [ { "$ref": "#/definitions/id_in_unknown0" }, { "$ref": "#/definitions/id_in_unknown1" }, { "$ref": "https://localhost:1234/unknownKeyword/my_identifier.json" } ] }, "tests": [ { "description": "type matches second anyOf, which has a real schema in it", "data": "a string", "valid": true }, { "description": "type matches non-schema in first anyOf", "data": null, "valid": false }, { "description": "type matches non-schema in third anyOf", "data": 1, "valid": false } ] } ] subSchemas-defs.json100644000766000024 215240201330 26341 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{}subSchemas-defs.json100644000766000024 215240201330 26323 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{}no-schema.json100640000766000024 123615240201330 26576 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "validation without $schema", "comment": "minLength is the same across all drafts", "schema": { "minLength": 2 }, "tests": [ { "description": "a 3-character string is valid", "data": "foo", "valid": true }, { "description": "a 1-character string is not valid", "data": "a", "valid": false }, { "description": "a non-string is valid", "data": 5, "valid": true } ] } ] no-schema.json100640000766000024 123615240201330 26560 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "validation without $schema", "comment": "minLength is the same across all drafts", "schema": { "minLength": 2 }, "tests": [ { "description": "a 3-character string is valid", "data": "foo", "valid": true }, { "description": "a 1-character string is not valid", "data": "a", "valid": false }, { "description": "a non-string is valid", "data": 5, "valid": true } ] } ] hostname.json100640000766000024 1171515240201330 27377 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional/format[ { "description": "validation of host names", "schema": { "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name", "data": "www.example.com", "valid": true }, { "description": "a valid punycoded IDN hostname", "data": "xn--4gbwdl.xn--wgbh1c", "valid": true }, { "description": "hostname with consecutive hyphens (RFC1123)", "data": "ab--cd.example", "valid": true }, { "description": "a host name starting with an illegal character", "data": "-a-host-name-that-starts-with--", "valid": false }, { "description": "a host name containing illegal characters", "data": "not_a_valid_host_name", "valid": false }, { "description": "a host name with a component too long", "data": "a-vvvvvvvvvvvvvvvveeeeeeeeeeeeeeeerrrrrrrrrrrrrrrryyyyyyyyyyyyyyyy-long-host-name-component", "valid": false }, { "description": "starts with hyphen", "data": "-hostname", "valid": false }, { "description": "ends with hyphen", "data": "hostname-", "valid": false }, { "description": "starts with underscore", "data": "_hostname", "valid": false }, { "description": "ends with underscore", "data": "hostname_", "valid": false }, { "description": "contains underscore", "data": "host_name", "valid": false }, { "description": "maximum label length", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": true }, { "description": "exceeds maximum label length", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl.com", "valid": false }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "single dot", "data": ".", "valid": false }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "IDN label separator", "data": "example\uff0ecom", "valid": false }, { "description": "trailing newline is invalid", "data": "example.com\n", "valid": false }, { "description": "invalid non-ASCII KELVIN SIGN (U+212A)", "data": "\u212Aelvin.example.com", "valid": false } ] } ] hostname.json100640000766000024 1171515240201330 27401 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "validation of host names", "schema": { "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name", "data": "www.example.com", "valid": true }, { "description": "a valid punycoded IDN hostname", "data": "xn--4gbwdl.xn--wgbh1c", "valid": true }, { "description": "hostname with consecutive hyphens (RFC1123)", "data": "ab--cd.example", "valid": true }, { "description": "a host name starting with an illegal character", "data": "-a-host-name-that-starts-with--", "valid": false }, { "description": "a host name containing illegal characters", "data": "not_a_valid_host_name", "valid": false }, { "description": "a host name with a component too long", "data": "a-vvvvvvvvvvvvvvvveeeeeeeeeeeeeeeerrrrrrrrrrrrrrrryyyyyyyyyyyyyyyy-long-host-name-component", "valid": false }, { "description": "starts with hyphen", "data": "-hostname", "valid": false }, { "description": "ends with hyphen", "data": "hostname-", "valid": false }, { "description": "starts with underscore", "data": "_hostname", "valid": false }, { "description": "ends with underscore", "data": "hostname_", "valid": false }, { "description": "contains underscore", "data": "host_name", "valid": false }, { "description": "maximum label length", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": true }, { "description": "exceeds maximum label length", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl.com", "valid": false }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "single dot", "data": ".", "valid": false }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "IDN label separator", "data": "example\uff0ecom", "valid": false }, { "description": "trailing newline is invalid", "data": "example.com\n", "valid": false }, { "description": "invalid non-ASCII KELVIN SIGN (U+212A)", "data": "\u212Aelvin.example.com", "valid": false } ] } ] hostname.json100640000766000024 3742615240201330 27411 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of host names", "schema": { "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name", "data": "www.example.com", "valid": true }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label starting with digit", "data": "1host", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "single dot", "data": ".", "valid": false }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "IDN label separator", "data": "example\uff0ecom", "valid": false }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "starts with hyphen", "data": "-hostname", "valid": false }, { "description": "ends with hyphen", "data": "hostname-", "valid": false }, { "description": "contains underscore", "data": "host_name", "valid": false }, { "description": "exceeds maximum overall length (256)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": false }, { "description": "maximum label length (63)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": true }, { "description": "exceeds maximum label length (63)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl.com", "valid": false }, { "description": "trailing newline is invalid", "data": "example.com\n", "valid": false }, { "description": "invalid non-ASCII KELVIN SIGN (U+212A)", "data": "\u212Aelvin.example.com", "valid": false }, { "description": "consecutive hyphens inside a label", "data": "a--b.com", "valid": true } ] }, { "description": "validation of A-label (punycode) host names", "schema": { "format": "hostname" }, "tests": [ { "description": "invalid Punycode", "comment": "https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "xn--X", "valid": false }, { "description": "a valid host name (example.test in Hangul)", "data": "xn--9n2bp8q.xn--9t4b11yi5a", "valid": true }, { "description": "contains illegal char U+302E Hangul single dot tone mark", "data": "xn--07jt112bpxg.xn--9t4b11yi5a", "valid": false }, { "description": "Begins with a Spacing Combining Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-txk", "valid": false }, { "description": "Begins with a Nonspacing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-zed", "valid": false }, { "description": "Begins with an Enclosing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-6bf", "valid": false }, { "description": "Exceptions that are PVALID, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--zca29lwxobi7a", "valid": true }, { "description": "Exceptions that are PVALID, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--qmbc", "valid": true }, { "description": "Exceptions that are DISALLOWED, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--chb89f", "valid": false }, { "description": "Exceptions that are DISALLOWED, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6 Note: The two combining marks (U+302E and U+302F) are in the middle and not at the start", "data": "xn--07jceefgh4c", "valid": false }, { "description": "MIDDLE DOT with no preceding 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--al-0ea", "valid": false }, { "description": "MIDDLE DOT with nothing preceding", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--l-fda", "valid": false }, { "description": "MIDDLE DOT with no following 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--la-0ea", "valid": false }, { "description": "MIDDLE DOT with nothing following", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--l-gda", "valid": false }, { "description": "MIDDLE DOT with surrounding 'l's", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--ll-0ea", "valid": true }, { "description": "Greek KERAIA not followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--S-jib3p", "valid": false }, { "description": "Greek KERAIA not followed by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--wva3j", "valid": false }, { "description": "Greek KERAIA followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--wva3je", "valid": true }, { "description": "Hebrew GERESH not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--A-2hc5h", "valid": false }, { "description": "Hebrew GERESH not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--5db1e", "valid": false }, { "description": "Hebrew GERESH preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--4dbc5h", "valid": true }, { "description": "Hebrew GERSHAYIM not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--A-2hc8h", "valid": false }, { "description": "Hebrew GERSHAYIM not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--5db3e", "valid": false }, { "description": "Hebrew GERSHAYIM preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--4dbc8h", "valid": true }, { "description": "KATAKANA MIDDLE DOT with no Hiragana, Katakana, or Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--defabc-k64e", "valid": false }, { "description": "KATAKANA MIDDLE DOT with no other characters", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--vek", "valid": false }, { "description": "KATAKANA MIDDLE DOT with Hiragana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--k8j5u", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Katakana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--bck0j", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--vek778f", "valid": true }, { "description": "Arabic-Indic digits mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "xn--ngb6iyr", "valid": false }, { "description": "Arabic-Indic digits not mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "xn--ngba1o", "valid": true }, { "description": "Extended Arabic-Indic digits not mixed with Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.9", "data": "xn--0-gyc", "valid": true }, { "description": "ZERO WIDTH JOINER not preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--11b2er09f", "valid": false }, { "description": "ZERO WIDTH JOINER not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--02b508i", "valid": false }, { "description": "ZERO WIDTH JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--11b2ezcw70k", "valid": true }, { "description": "ZERO WIDTH NON-JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1", "data": "xn--11b2ezcs70k", "valid": true }, { "description": "ZERO WIDTH NON-JOINER not preceded by Virama but matches regexp", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1 https://www.w3.org/TR/alreq/#h_disjoining_enforcement", "data": "xn--ngba5hb2804a", "valid": true }, { "description": "contains \"--\" in the 3rd and 4th position", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "XN--aa---o47jg78q", "valid": false } ] } ] relative-json-pointer.json100640000766000024 1037515240201330 27337 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/format[ { "description": "validation of Relative JSON Pointers (RJP)", "schema": { "$schema": "https://json-schema.org/v1", "format": "relative-json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid upwards RJP", "data": "1", "valid": true }, { "description": "a valid downwards RJP", "data": "0/foo/bar", "valid": true }, { "description": "a valid up and then down RJP, with array index", "data": "2/0/baz/1/zip", "valid": true }, { "description": "a valid RJP taking the member or index name", "data": "0#", "valid": true }, { "description": "an invalid RJP that is a valid JSON Pointer", "data": "/foo/bar", "valid": false }, { "description": "negative prefix", "data": "-1/foo/bar", "valid": false }, { "description": "explicit positive prefix", "data": "+1/foo/bar", "valid": false }, { "description": "non-ASCII digit in the prefix is not allowed", "data": "١/foo", "valid": false }, { "description": "## is not a valid json-pointer", "data": "0##", "valid": false }, { "description": "zero cannot be followed by other digits, plus json-pointer", "data": "01/a", "valid": false }, { "description": "zero cannot be followed by other digits, plus octothorpe", "data": "01#", "valid": false }, { "description": "empty string", "data": "", "valid": false }, { "description": "multi-digit integer prefix", "data": "120/foo/bar", "valid": true }, { "description": "multi-digit prefix with a zero followed by another digit", "data": "100", "valid": true }, { "description": "tilde not followed by 0 or 1 in the json-pointer part", "data": "0/~2", "valid": false }, { "description": "unescaped tilde at the end of the json-pointer part", "data": "0/foo/bar~", "valid": false }, { "description": "octothorpe followed by a json-pointer", "data": "1#/foo/bar", "valid": false }, { "description": "empty reference tokens in the json-pointer part", "data": "0//", "valid": true }, { "description": "trailing newline after the non-negative integer", "data": "1\n", "valid": false } ] } ] refOfUnknownKeyword.json100640000766000024 611015240201330 27372 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "reference of a root arbitrary keyword ", "schema": { "$schema": "https://json-schema.org/v1", "unknown-keyword": {"type": "integer"}, "properties": { "bar": {"$ref": "#/unknown-keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "reference of a root arbitrary keyword with encoded ref", "schema": { "$schema": "https://json-schema.org/v1", "unknown/keyword": {"type": "integer"}, "properties": { "bar": {"$ref": "#/unknown~1keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "reference of an arbitrary keyword of a sub-schema", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {"unknown-keyword": {"type": "integer"}}, "bar": {"$ref": "#/properties/foo/unknown-keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "reference internals of known non-applicator", "schema": { "$schema": "https://json-schema.org/v1", "examples": [ { "type": "string" } ], "$ref": "#/examples/0" }, "tests": [ { "description": "match", "data": "a string", "valid": true }, { "description": "mismatch", "data": 42, "valid": false } ] }, { "description": "reference of an arbitrary keyword of a sub-schema with encoded ref", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": {"unknown/keyword": {"type": "integer"}}, "bar": {"$ref": "#/properties/foo/unknown~1keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] } ] locationIndependentIdentifier.json100644000766000024 215240201330 27454 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}nested-absolute-ref-to-string.json100644000766000024 215240201330 27257 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}draft6000755000766000024 015240201330 24650 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource/remotesremote5.json100640000766000024 5715240201330 27221 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource/remotes/draft6{ "$defs": { "blap": false } } content000755000766000024 015240201330 25056 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2019-09type.json100640000766000024 302015240201330 27061 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2019-09/content[ { "description": "validating type", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://json-schema.org/tests/content/draft2019-09/type/0", "type": "string", "anyOf": [ true ] }, "tests": [ { "description": "incorrect type must be reported, but a message is not required", "data": 1, "output": { "basic": { "$id": "https://json-schema.org/tests/content/draft2019-09/type/0/tests/0/basic", "$ref": "/draft/2019-09/output/schema", "properties": { "errors": { "contains": { "properties": { "keywordLocation": {"const": "/type"}, "absoluteKeywordLocation": {"const": "https://json-schema.org/tests/content/draft2019-09/type/0#/type"}, "instanceLocation": {"const": ""}, "annotation": false }, "required": ["keywordLocation", "instanceLocation"] } } }, "required": ["errors"] } } } ] } ] content000755000766000024 015240201330 25040 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2020-12type.json100640000766000024 302015240201330 27043 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2020-12/content[ { "description": "validating type", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://json-schema.org/tests/content/draft2020-12/type/0", "type": "string", "anyOf": [ true ] }, "tests": [ { "description": "incorrect type must be reported, but a message is not required", "data": 1, "output": { "basic": { "$id": "https://json-schema.org/tests/content/draft2020-12/type/0/tests/0/basic", "$ref": "/draft/2020-12/output/schema", "properties": { "errors": { "contains": { "properties": { "keywordLocation": {"const": "/type"}, "absoluteKeywordLocation": {"const": "https://json-schema.org/tests/content/draft2020-12/type/0#/type"}, "instanceLocation": {"const": ""}, "annotation": false }, "required": ["keywordLocation", "instanceLocation"] } } }, "required": ["errors"] } } } ] } ] dependentRequired.json100640000766000024 30315240201330 27034 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$id": "http://localhost:1234/draft2019-09/dependentRequired.json", "$schema": "https://json-schema.org/draft/2019-09/schema", "dependentRequired": { "foo": ["bar"] } } baseUriChange000755000766000024 015240201330 23546 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1folderInteger.json100640000766000024 10715240201330 27344 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1/baseUriChange{ "$schema": "https://json-schema.org/v1", "type": "integer" } format000755000766000024 015240201330 25163 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optionaliri.json100640000766000024 1103515240201330 27015 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of IRIs", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "iri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IRI with anchor tag", "data": "http://ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid IRI with anchor tag and parentheses", "data": "http://ƒøø.com/blah_(wîkïpédiå)_blah#ßité-1", "valid": true }, { "description": "a valid IRI with URL-encoded stuff", "data": "http://ƒøø.ßår/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid IRI with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid IRI based on IPv6", "data": "http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]", "valid": true }, { "description": "an IPv6 address without enclosing brackets is invalid", "data": "http://2001:0db8:85a3:0000:0000:8a2e:0370:7334", "valid": false }, { "description": "an invalid relative IRI Reference", "data": "/abc", "valid": false }, { "description": "an invalid IRI", "data": "\\\\WINDOWS\\filëßåré", "valid": false }, { "description": "an invalid IRI though valid IRI reference", "data": "âππ", "valid": false }, { "description": "an IPv6 host whose embedded IPv4 has a leading zero is invalid", "data": "http://[::ffff:192.168.0.01]", "valid": false }, { "description": "a valid IRI with a compressed IPv6 host", "data": "http://[2001:db8::1]", "valid": true }, { "description": "a trailing newline after a valid IRI is invalid", "data": "http://ƒøø.ßår/\n", "valid": false }, { "description": "an IPvFuture host with an uppercase version letter is valid", "data": "http://[V1.fe]", "valid": true }, { "description": "a valid IRI with an IPv4 host", "data": "http://192.168.0.1/p", "valid": true }, { "description": "a valid IRI with no authority and a rootless path", "data": "urn:example:resource", "valid": true }, { "description": "a valid IRI with no authority and an absolute path", "data": "file:/etc/hosts", "valid": true }, { "description": "a valid IRI with a supplementary-plane character in the path", "data": "http://ƒøø.ßår/𐌀", "valid": true }, { "description": "a valid IRI with a supplementary-plane private-use char in query", "data": "http://ƒøø.ßår/?q=󰀀", "valid": true } ] } ] uri.json100640000766000024 2100215240201330 27024 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of URIs", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URL with anchor tag", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid URL with anchor tag and parentheses", "data": "http://foo.com/blah_(wikipedia)_blah#cite-1", "valid": true }, { "description": "a valid URL with URL-encoded stuff", "data": "http://foo.bar/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid puny-coded URL ", "data": "http://xn--nw2a.xn--j6w193g/", "valid": true }, { "description": "a valid URL with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid URL based on IPv4", "data": "http://223.255.255.254", "valid": true }, { "description": "a valid URL with ftp scheme", "data": "ftp://ftp.is.co.za/rfc/rfc1808.txt", "valid": true }, { "description": "a valid URL for a simple text file", "data": "http://www.ietf.org/rfc/rfc2396.txt", "valid": true }, { "description": "a valid URL", "data": "ldap://[2001:db8::7]/c=GB?objectClass?one", "valid": true }, { "description": "a valid mailto URI", "data": "mailto:John.Doe@example.com", "valid": true }, { "description": "a valid newsgroup URI", "data": "news:comp.infosystems.www.servers.unix", "valid": true }, { "description": "a valid tel URI", "data": "tel:+1-816-555-1212", "valid": true }, { "description": "a valid URN", "data": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2", "valid": true }, { "description": "an invalid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": false }, { "description": "an invalid relative URI Reference", "data": "/abc", "valid": false }, { "description": "an invalid URI", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "an invalid URI though valid URI reference", "data": "abc", "valid": false }, { "description": "an invalid URI with spaces", "data": "http:// shouldfail.com", "valid": false }, { "description": "an invalid URI with spaces and missing scheme", "data": ":// should fail", "valid": false }, { "description": "an invalid URI with comma in scheme", "data": "bar,baz:foo", "valid": false }, { "description": "invalid userinfo", "data": "https://[@example.org/test.txt", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "https://example.org/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "invalid \" character", "data": "https://example.org/foobar\".txt", "valid": false }, { "description": "invalid <> characters", "data": "https://example.org/foobar<>.txt", "valid": false }, { "description": "invalid {} characters", "data": "https://example.org/foobar{}.txt", "valid": false }, { "description": "invalid ^ character", "data": "https://example.org/foobar^.txt", "valid": false }, { "description": "invalid ` character", "data": "https://example.org/foobar`.txt", "valid": false }, { "description": "invalid SPACE character", "data": "https://example.org/foo bar.txt", "valid": false }, { "description": "invalid | character", "data": "https://example.org/foobar|.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "invalid percent-encoding with non-hex digits", "data": "http://example.com/%6G", "valid": false }, { "description": "incomplete percent-encoding triplet", "data": "http://example.com/%A", "valid": false }, { "description": "lone percent sign is invalid", "data": "http://example.com/%", "valid": false }, { "description": "scheme must start with a letter", "data": "1http://example.com", "valid": false }, { "description": "invalid character in scheme", "data": "ht_tp://example.com", "valid": false }, { "description": "non-numeric port is invalid", "data": "http://example.com:abc/path", "valid": false }, { "description": "leading zero in an embedded IPv4 address is invalid", "data": "http://[::ffff:01.2.3.4]", "valid": false }, { "description": "square brackets are not allowed in a path segment", "data": "http:/[::1]", "valid": false } ] } ] dynamicRef.json100640000766000024 352315240201330 26770 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "$dynamicRef skips over intermediate resources - pointer reference across resource boundary", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://test.json-schema.org/dynamic-ref-skips-intermediate-resource/optional/main", "type": "object", "properties": { "bar-item": { "$ref": "bar#/$defs/item" } }, "$defs": { "bar": { "$id": "bar", "type": "array", "items": { "$ref": "item" }, "$defs": { "item": { "$id": "item", "type": "object", "properties": { "content": { "$dynamicRef": "#content" } }, "$defs": { "defaultContent": { "$dynamicAnchor": "content", "type": "integer" } } }, "content": { "$dynamicAnchor": "content", "type": "string" } } } } }, "tests": [ { "description": "integer property passes", "data": { "bar-item": { "content": 42 } }, "valid": true }, { "description": "string property fails", "data": { "bar-item": { "content": "value" } }, "valid": false } ] }]format000755000766000024 015240201330 25145 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optionaliri.json100640000766000024 1103515240201330 26777 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of IRIs", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "iri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IRI with anchor tag", "data": "http://ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid IRI with anchor tag and parentheses", "data": "http://ƒøø.com/blah_(wîkïpédiå)_blah#ßité-1", "valid": true }, { "description": "a valid IRI with URL-encoded stuff", "data": "http://ƒøø.ßår/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid IRI with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid IRI based on IPv6", "data": "http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]", "valid": true }, { "description": "an IPv6 address without enclosing brackets is invalid", "data": "http://2001:0db8:85a3:0000:0000:8a2e:0370:7334", "valid": false }, { "description": "an invalid relative IRI Reference", "data": "/abc", "valid": false }, { "description": "an invalid IRI", "data": "\\\\WINDOWS\\filëßåré", "valid": false }, { "description": "an invalid IRI though valid IRI reference", "data": "âππ", "valid": false }, { "description": "an IPv6 host whose embedded IPv4 has a leading zero is invalid", "data": "http://[::ffff:192.168.0.01]", "valid": false }, { "description": "a valid IRI with a compressed IPv6 host", "data": "http://[2001:db8::1]", "valid": true }, { "description": "a trailing newline after a valid IRI is invalid", "data": "http://ƒøø.ßår/\n", "valid": false }, { "description": "an IPvFuture host with an uppercase version letter is valid", "data": "http://[V1.fe]", "valid": true }, { "description": "a valid IRI with an IPv4 host", "data": "http://192.168.0.1/p", "valid": true }, { "description": "a valid IRI with no authority and a rootless path", "data": "urn:example:resource", "valid": true }, { "description": "a valid IRI with no authority and an absolute path", "data": "file:/etc/hosts", "valid": true }, { "description": "a valid IRI with a supplementary-plane character in the path", "data": "http://ƒøø.ßår/𐌀", "valid": true }, { "description": "a valid IRI with a supplementary-plane private-use char in query", "data": "http://ƒøø.ßår/?q=󰀀", "valid": true } ] } ] uri.json100640000766000024 2100215240201330 27006 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of URIs", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "uri" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URL with anchor tag", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid URL with anchor tag and parentheses", "data": "http://foo.com/blah_(wikipedia)_blah#cite-1", "valid": true }, { "description": "a valid URL with URL-encoded stuff", "data": "http://foo.bar/?q=Test%20URL-encoded%20stuff", "valid": true }, { "description": "a valid puny-coded URL ", "data": "http://xn--nw2a.xn--j6w193g/", "valid": true }, { "description": "a valid URL with many special characters", "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com", "valid": true }, { "description": "a valid URL based on IPv4", "data": "http://223.255.255.254", "valid": true }, { "description": "a valid URL with ftp scheme", "data": "ftp://ftp.is.co.za/rfc/rfc1808.txt", "valid": true }, { "description": "a valid URL for a simple text file", "data": "http://www.ietf.org/rfc/rfc2396.txt", "valid": true }, { "description": "a valid URL", "data": "ldap://[2001:db8::7]/c=GB?objectClass?one", "valid": true }, { "description": "a valid mailto URI", "data": "mailto:John.Doe@example.com", "valid": true }, { "description": "a valid newsgroup URI", "data": "news:comp.infosystems.www.servers.unix", "valid": true }, { "description": "a valid tel URI", "data": "tel:+1-816-555-1212", "valid": true }, { "description": "a valid URN", "data": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2", "valid": true }, { "description": "an invalid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": false }, { "description": "an invalid relative URI Reference", "data": "/abc", "valid": false }, { "description": "an invalid URI", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "an invalid URI though valid URI reference", "data": "abc", "valid": false }, { "description": "an invalid URI with spaces", "data": "http:// shouldfail.com", "valid": false }, { "description": "an invalid URI with spaces and missing scheme", "data": ":// should fail", "valid": false }, { "description": "an invalid URI with comma in scheme", "data": "bar,baz:foo", "valid": false }, { "description": "invalid userinfo", "data": "https://[@example.org/test.txt", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "https://example.org/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "invalid \" character", "data": "https://example.org/foobar\".txt", "valid": false }, { "description": "invalid <> characters", "data": "https://example.org/foobar<>.txt", "valid": false }, { "description": "invalid {} characters", "data": "https://example.org/foobar{}.txt", "valid": false }, { "description": "invalid ^ character", "data": "https://example.org/foobar^.txt", "valid": false }, { "description": "invalid ` character", "data": "https://example.org/foobar`.txt", "valid": false }, { "description": "invalid SPACE character", "data": "https://example.org/foo bar.txt", "valid": false }, { "description": "invalid | character", "data": "https://example.org/foobar|.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "invalid percent-encoding with non-hex digits", "data": "http://example.com/%6G", "valid": false }, { "description": "incomplete percent-encoding triplet", "data": "http://example.com/%A", "valid": false }, { "description": "lone percent sign is invalid", "data": "http://example.com/%", "valid": false }, { "description": "scheme must start with a letter", "data": "1http://example.com", "valid": false }, { "description": "invalid character in scheme", "data": "ht_tp://example.com", "valid": false }, { "description": "non-numeric port is invalid", "data": "http://example.com:abc/path", "valid": false }, { "description": "leading zero in an embedded IPv4 address is invalid", "data": "http://[::ffff:01.2.3.4]", "valid": false }, { "description": "square brackets are not allowed in a path segment", "data": "http:/[::1]", "valid": false } ] } ] date-time.json100640000766000024 412215240201330 27403 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of date-time strings", "schema": { "format": "date-time" }, "tests": [ { "description": "a valid date-time string", "data": "1963-06-19T08:30:06.283185Z", "valid": true }, { "description": "an invalid date-time string", "data": "06/19/1963 08:30:06 PST", "valid": false }, { "description": "case-insensitive T and Z", "data": "1963-06-19t08:30:06.283185z", "valid": true }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350T01:01:01", "valid": false }, { "description": "invalid non-padded month dates", "data": "1963-6-19T08:30:06.283185Z", "valid": false }, { "description": "invalid non-padded day dates", "data": "1963-06-1T08:30:06.283185Z", "valid": false }, { "description": "invalid extended year", "data": "+11963-06-19T08:30:06.283185Z", "valid": false }, { "description": "a numeric offset without minutes is invalid", "data": "1985-04-12T23:20:50+01", "valid": false }, { "description": "hour 24 is invalid even with a leap second", "data": "2016-12-31T24:59:60+01:00", "valid": false }, { "description": "a second fraction of fifteen nines is valid", "data": "1985-04-12T00:59:59.999999999999999Z", "valid": true }, { "description": "a trailing newline is invalid", "data": "1985-04-12T23:20:50Z\n", "valid": false } ] } ] host-name.json100640000766000024 431015240201330 27424 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of host names", "schema": { "format": "host-name" }, "tests": [ { "description": "a valid host name", "data": "www.example.com", "valid": true }, { "description": "a host name starting with an illegal character", "data": "-a-host-name-that-starts-with--", "valid": false }, { "description": "a host name containing illegal characters", "data": "not_a_valid_host_name", "valid": false }, { "description": "a host name with a component too long", "data": "a-vvvvvvvvvvvvvvvveeeeeeeeeeeeeeeerrrrrrrrrrrrrrrryyyyyyyyyyyyyyyy-long-host-name-component", "valid": false }, { "description": "starts with hyphen", "data": "-hostname", "valid": false }, { "description": "ends with hyphen", "data": "hostname-", "valid": false }, { "description": "starts with underscore", "data": "_hostname", "valid": false }, { "description": "ends with underscore", "data": "hostname_", "valid": false }, { "description": "contains underscore", "data": "host_name", "valid": false }, { "description": "maximum label length", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": true }, { "description": "exceeds maximum label length", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl.com", "valid": false }, { "description": "empty string", "data": "", "valid": false } ] } ] ecmascript-regex.json100640000766000024 4406715240201330 27541 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional[ { "description": "ECMA 262 regex $ does not match trailing newline", "schema": { "type": "string", "pattern": "^abc$" }, "tests": [ { "description": "matches in Python, but not in ECMA 262", "data": "abc\\n", "valid": false }, { "description": "matches", "data": "abc", "valid": true } ] }, { "description": "ECMA 262 regex converts \\t to horizontal tab", "schema": { "type": "string", "pattern": "^\\t$" }, "tests": [ { "description": "does not match", "data": "\\t", "valid": false }, { "description": "matches", "data": "\u0009", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and upper letter", "schema": { "type": "string", "pattern": "^\\cC$" }, "tests": [ { "description": "does not match", "data": "\\cC", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and lower letter", "schema": { "type": "string", "pattern": "^\\cc$" }, "tests": [ { "description": "does not match", "data": "\\cc", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 \\d matches ascii digits only", "schema": { "type": "string", "pattern": "^\\d$" }, "tests": [ { "description": "ASCII zero matches", "data": "0", "valid": true }, { "description": "NKO DIGIT ZERO does not match (unlike e.g. Python)", "data": "߀", "valid": false }, { "description": "NKO DIGIT ZERO (as \\u escape) does not match", "data": "\u07c0", "valid": false } ] }, { "description": "ECMA 262 \\D matches everything but ascii digits", "schema": { "type": "string", "pattern": "^\\D$" }, "tests": [ { "description": "ASCII zero does not match", "data": "0", "valid": false }, { "description": "NKO DIGIT ZERO matches (unlike e.g. Python)", "data": "߀", "valid": true }, { "description": "NKO DIGIT ZERO (as \\u escape) matches", "data": "\u07c0", "valid": true } ] }, { "description": "ECMA 262 \\w matches ascii letters only", "schema": { "type": "string", "pattern": "^\\w$" }, "tests": [ { "description": "ASCII 'a' matches", "data": "a", "valid": true }, { "description": "latin-1 e-acute does not match (unlike e.g. Python)", "data": "é", "valid": false } ] }, { "description": "ECMA 262 \\W matches everything but ascii letters", "schema": { "type": "string", "pattern": "^\\W$" }, "tests": [ { "description": "ASCII 'a' does not match", "data": "a", "valid": false }, { "description": "latin-1 e-acute matches (unlike e.g. Python)", "data": "é", "valid": true } ] }, { "description": "ECMA 262 \\s matches whitespace", "schema": { "type": "string", "pattern": "^\\s$" }, "tests": [ { "description": "ASCII space matches", "data": " ", "valid": true }, { "description": "Character tabulation matches", "data": "\t", "valid": true }, { "description": "Line tabulation matches", "data": "\u000b", "valid": true }, { "description": "Form feed matches", "data": "\u000c", "valid": true }, { "description": "latin-1 non-breaking-space matches", "data": "\u00a0", "valid": true }, { "description": "zero-width whitespace matches", "data": "\ufeff", "valid": true }, { "description": "line feed matches (line terminator)", "data": "\u000a", "valid": true }, { "description": "paragraph separator matches (line terminator)", "data": "\u2029", "valid": true }, { "description": "EM SPACE matches (Space_Separator)", "data": "\u2003", "valid": true }, { "description": "Non-whitespace control does not match", "data": "\u0001", "valid": false }, { "description": "Non-whitespace does not match", "data": "\u2013", "valid": false } ] }, { "description": "ECMA 262 \\S matches everything but whitespace", "schema": { "type": "string", "pattern": "^\\S$" }, "tests": [ { "description": "ASCII space does not match", "data": " ", "valid": false }, { "description": "Character tabulation does not match", "data": "\t", "valid": false }, { "description": "Line tabulation does not match", "data": "\u000b", "valid": false }, { "description": "Form feed does not match", "data": "\u000c", "valid": false }, { "description": "latin-1 non-breaking-space does not match", "data": "\u00a0", "valid": false }, { "description": "zero-width whitespace does not match", "data": "\ufeff", "valid": false }, { "description": "line feed does not match (line terminator)", "data": "\u000a", "valid": false }, { "description": "paragraph separator does not match (line terminator)", "data": "\u2029", "valid": false }, { "description": "EM SPACE does not match (Space_Separator)", "data": "\u2003", "valid": false }, { "description": "Non-whitespace control matches", "data": "\u0001", "valid": true }, { "description": "Non-whitespace matches", "data": "\u2013", "valid": true } ] }, { "description": "patterns always use unicode semantics with pattern", "schema": { "pattern": "\\p{Letter}cole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "\\w in patterns matches [A-Za-z0-9_], not unicode letters", "schema": { "pattern": "\\wcole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "pattern with ASCII ranges", "schema": { "pattern": "[a-z]cole" }, "tests": [ { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "ascii characters match", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true } ] }, { "description": "\\d in pattern matches [0-9], not unicode digits", "schema": { "pattern": "^\\d+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": false } ] }, { "description": "pattern with non-ASCII digits", "schema": { "pattern": "^\\p{digit}+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": true } ] }, { "description": "patterns always use unicode semantics with patternProperties", "schema": { "type": "object", "patternProperties": { "\\p{Letter}cole": {} }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": true }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": true }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "\\w in patternProperties matches [A-Za-z0-9_], not unicode letters", "schema": { "type": "object", "patternProperties": { "\\wcole": {} }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "patternProperties with ASCII ranges", "schema": { "type": "object", "patternProperties": { "[a-z]cole": {} }, "additionalProperties": false }, "tests": [ { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "ascii characters match", "data": { "l'ecole": "pas de vraie vie" }, "valid": true } ] }, { "description": "\\d in patternProperties matches [0-9], not unicode digits", "schema": { "type": "object", "patternProperties": { "^\\d+$": {} }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": false } ] }, { "description": "patternProperties with non-ASCII digits", "schema": { "type": "object", "patternProperties": { "^\\p{digit}+$": {} }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": true } ] } ] date-time.json100640000766000024 1376415240201330 27440 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional/format[ { "description": "validation of date-time strings", "schema": { "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date-time string", "data": "1963-06-19T08:30:06.283185Z", "valid": true }, { "description": "a valid date-time string without second fraction", "data": "1963-06-19T08:30:06Z", "valid": true }, { "description": "a valid date-time string with plus offset", "data": "1937-01-01T12:00:27.87+00:20", "valid": true }, { "description": "a valid date-time string with minus offset", "data": "1990-12-31T15:59:50.123-08:00", "valid": true }, { "description": "a valid date-time with a leap second, UTC", "data": "1998-12-31T23:59:60Z", "valid": true }, { "description": "a valid date-time with a leap second, with minus offset", "data": "1998-12-31T15:59:60.123-08:00", "valid": true }, { "description": "an invalid date-time past leap second, UTC", "data": "1998-12-31T23:59:61Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong minute, UTC", "data": "1998-12-31T23:58:60Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong hour, UTC", "data": "1998-12-31T22:59:60Z", "valid": false }, { "description": "an invalid hour in date-time string", "data": "1990-12-31T24:00:00Z", "valid": false }, { "description": "an invalid minute in date-time string", "data": "1990-12-31T15:60:00Z", "valid": false }, { "description": "an invalid offset minute in date-time string", "data": "1990-12-31T10:00:00+10:60", "valid": false }, { "description": "an invalid day in date-time string", "data": "1990-02-31T15:59:59.123-08:00", "valid": false }, { "description": "an invalid offset in date-time string", "data": "1990-12-31T15:59:59-24:00", "valid": false }, { "description": "an invalid closing Z after time-zone offset", "data": "1963-06-19T08:30:06.28123+01:00Z", "valid": false }, { "description": "an invalid date-time string", "data": "06/19/1963 08:30:06 PST", "valid": false }, { "description": "case-insensitive T and Z", "data": "1963-06-19t08:30:06.283185z", "valid": true }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350T01:01:01", "valid": false }, { "description": "invalid non-padded month dates", "data": "1963-6-19T08:30:06.283185Z", "valid": false }, { "description": "invalid non-padded day dates", "data": "1963-06-1T08:30:06.283185Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in date portion", "data": "1963-06-1৪T00:00:00Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in time portion", "data": "1963-06-11T0৪:00:00Z", "valid": false }, { "description": "invalid extended year", "data": "+11963-06-19T08:30:06.283185Z", "valid": false }, { "description": "a numeric offset without minutes is invalid", "data": "1985-04-12T23:20:50+01", "valid": false }, { "description": "hour 24 is invalid even with a leap second", "data": "2016-12-31T24:59:60+01:00", "valid": false }, { "description": "a second fraction of fifteen nines is valid", "data": "1985-04-12T00:59:59.999999999999999Z", "valid": true }, { "description": "a trailing newline is invalid", "data": "1985-04-12T23:20:50Z\n", "valid": false } ] } ] ecmascript-regex.json100640000766000024 4410115240201330 27530 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional[ { "description": "ECMA 262 regex $ does not match trailing newline", "schema": { "type": "string", "pattern": "^abc$" }, "tests": [ { "description": "matches in Python, but not in ECMA 262", "data": "abc\\n", "valid": false }, { "description": "matches", "data": "abc", "valid": true } ] }, { "description": "ECMA 262 regex converts \\t to horizontal tab", "schema": { "type": "string", "pattern": "^\\t$" }, "tests": [ { "description": "does not match", "data": "\\t", "valid": false }, { "description": "matches", "data": "\u0009", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and upper letter", "schema": { "type": "string", "pattern": "^\\cC$" }, "tests": [ { "description": "does not match", "data": "\\cC", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and lower letter", "schema": { "type": "string", "pattern": "^\\cc$" }, "tests": [ { "description": "does not match", "data": "\\cc", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 \\d matches ascii digits only", "schema": { "type": "string", "pattern": "^\\d$" }, "tests": [ { "description": "ASCII zero matches", "data": "0", "valid": true }, { "description": "NKO DIGIT ZERO does not match (unlike e.g. Python)", "data": "߀", "valid": false }, { "description": "NKO DIGIT ZERO (as \\u escape) does not match", "data": "\u07c0", "valid": false } ] }, { "description": "ECMA 262 \\D matches everything but ascii digits", "schema": { "type": "string", "pattern": "^\\D$" }, "tests": [ { "description": "ASCII zero does not match", "data": "0", "valid": false }, { "description": "NKO DIGIT ZERO matches (unlike e.g. Python)", "data": "߀", "valid": true }, { "description": "NKO DIGIT ZERO (as \\u escape) matches", "data": "\u07c0", "valid": true } ] }, { "description": "ECMA 262 \\w matches ascii letters only", "schema": { "type": "string", "pattern": "^\\w$" }, "tests": [ { "description": "ASCII 'a' matches", "data": "a", "valid": true }, { "description": "latin-1 e-acute does not match (unlike e.g. Python)", "data": "é", "valid": false } ] }, { "description": "ECMA 262 \\W matches everything but ascii letters", "schema": { "type": "string", "pattern": "^\\W$" }, "tests": [ { "description": "ASCII 'a' does not match", "data": "a", "valid": false }, { "description": "latin-1 e-acute matches (unlike e.g. Python)", "data": "é", "valid": true } ] }, { "description": "ECMA 262 \\s matches whitespace", "schema": { "type": "string", "pattern": "^\\s$" }, "tests": [ { "description": "ASCII space matches", "data": " ", "valid": true }, { "description": "Character tabulation matches", "data": "\t", "valid": true }, { "description": "Line tabulation matches", "data": "\u000b", "valid": true }, { "description": "Form feed matches", "data": "\u000c", "valid": true }, { "description": "latin-1 non-breaking-space matches", "data": "\u00a0", "valid": true }, { "description": "zero-width whitespace matches", "data": "\ufeff", "valid": true }, { "description": "line feed matches (line terminator)", "data": "\u000a", "valid": true }, { "description": "paragraph separator matches (line terminator)", "data": "\u2029", "valid": true }, { "description": "EM SPACE matches (Space_Separator)", "data": "\u2003", "valid": true }, { "description": "Non-whitespace control does not match", "data": "\u0001", "valid": false }, { "description": "Non-whitespace does not match", "data": "\u2013", "valid": false } ] }, { "description": "ECMA 262 \\S matches everything but whitespace", "schema": { "type": "string", "pattern": "^\\S$" }, "tests": [ { "description": "ASCII space does not match", "data": " ", "valid": false }, { "description": "Character tabulation does not match", "data": "\t", "valid": false }, { "description": "Line tabulation does not match", "data": "\u000b", "valid": false }, { "description": "Form feed does not match", "data": "\u000c", "valid": false }, { "description": "latin-1 non-breaking-space does not match", "data": "\u00a0", "valid": false }, { "description": "zero-width whitespace does not match", "data": "\ufeff", "valid": false }, { "description": "line feed does not match (line terminator)", "data": "\u000a", "valid": false }, { "description": "paragraph separator does not match (line terminator)", "data": "\u2029", "valid": false }, { "description": "EM SPACE does not match (Space_Separator)", "data": "\u2003", "valid": false }, { "description": "Non-whitespace control matches", "data": "\u0001", "valid": true }, { "description": "Non-whitespace matches", "data": "\u2013", "valid": true } ] }, { "description": "patterns always use unicode semantics with pattern", "schema": { "pattern": "\\p{Letter}cole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "\\w in patterns matches [A-Za-z0-9_], not unicode letters", "schema": { "pattern": "\\wcole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "pattern with ASCII ranges", "schema": { "pattern": "[a-z]cole" }, "tests": [ { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "ascii characters match", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true } ] }, { "description": "\\d in pattern matches [0-9], not unicode digits", "schema": { "pattern": "^\\d+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": false } ] }, { "description": "pattern with non-ASCII digits", "schema": { "pattern": "^\\p{digit}+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": true } ] }, { "description": "patterns always use unicode semantics with patternProperties", "schema": { "type": "object", "patternProperties": { "\\p{Letter}cole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": true }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": true }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "\\w in patternProperties matches [A-Za-z0-9_], not unicode letters", "schema": { "type": "object", "patternProperties": { "\\wcole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "patternProperties with ASCII ranges", "schema": { "type": "object", "patternProperties": { "[a-z]cole": true }, "additionalProperties": false }, "tests": [ { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "ascii characters match", "data": { "l'ecole": "pas de vraie vie" }, "valid": true } ] }, { "description": "\\d in patternProperties matches [0-9], not unicode digits", "schema": { "type": "object", "patternProperties": { "^\\d+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": false } ] }, { "description": "patternProperties with non-ASCII digits", "schema": { "type": "object", "patternProperties": { "^\\p{digit}+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": true } ] } ] date-time.json100640000766000024 1376415240201330 27442 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "validation of date-time strings", "schema": { "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date-time string", "data": "1963-06-19T08:30:06.283185Z", "valid": true }, { "description": "a valid date-time string without second fraction", "data": "1963-06-19T08:30:06Z", "valid": true }, { "description": "a valid date-time string with plus offset", "data": "1937-01-01T12:00:27.87+00:20", "valid": true }, { "description": "a valid date-time string with minus offset", "data": "1990-12-31T15:59:50.123-08:00", "valid": true }, { "description": "a valid date-time with a leap second, UTC", "data": "1998-12-31T23:59:60Z", "valid": true }, { "description": "a valid date-time with a leap second, with minus offset", "data": "1998-12-31T15:59:60.123-08:00", "valid": true }, { "description": "an invalid date-time past leap second, UTC", "data": "1998-12-31T23:59:61Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong minute, UTC", "data": "1998-12-31T23:58:60Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong hour, UTC", "data": "1998-12-31T22:59:60Z", "valid": false }, { "description": "an invalid hour in date-time string", "data": "1990-12-31T24:00:00Z", "valid": false }, { "description": "an invalid minute in date-time string", "data": "1990-12-31T15:60:00Z", "valid": false }, { "description": "an invalid offset minute in date-time string", "data": "1990-12-31T10:00:00+10:60", "valid": false }, { "description": "an invalid day in date-time string", "data": "1990-02-31T15:59:59.123-08:00", "valid": false }, { "description": "an invalid offset in date-time string", "data": "1990-12-31T15:59:59-24:00", "valid": false }, { "description": "an invalid closing Z after time-zone offset", "data": "1963-06-19T08:30:06.28123+01:00Z", "valid": false }, { "description": "an invalid date-time string", "data": "06/19/1963 08:30:06 PST", "valid": false }, { "description": "case-insensitive T and Z", "data": "1963-06-19t08:30:06.283185z", "valid": true }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350T01:01:01", "valid": false }, { "description": "invalid non-padded month dates", "data": "1963-6-19T08:30:06.283185Z", "valid": false }, { "description": "invalid non-padded day dates", "data": "1963-06-1T08:30:06.283185Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in date portion", "data": "1963-06-1৪T00:00:00Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in time portion", "data": "1963-06-11T0৪:00:00Z", "valid": false }, { "description": "invalid extended year", "data": "+11963-06-19T08:30:06.283185Z", "valid": false }, { "description": "a numeric offset without minutes is invalid", "data": "1985-04-12T23:20:50+01", "valid": false }, { "description": "hour 24 is invalid even with a leap second", "data": "2016-12-31T24:59:60+01:00", "valid": false }, { "description": "a second fraction of fifteen nines is valid", "data": "1985-04-12T00:59:59.999999999999999Z", "valid": true }, { "description": "a trailing newline is invalid", "data": "1985-04-12T23:20:50Z\n", "valid": false } ] } ] ecmascript-regex.json100640000766000024 4410115240201330 27531 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional[ { "description": "ECMA 262 regex $ does not match trailing newline", "schema": { "type": "string", "pattern": "^abc$" }, "tests": [ { "description": "matches in Python, but not in ECMA 262", "data": "abc\\n", "valid": false }, { "description": "matches", "data": "abc", "valid": true } ] }, { "description": "ECMA 262 regex converts \\t to horizontal tab", "schema": { "type": "string", "pattern": "^\\t$" }, "tests": [ { "description": "does not match", "data": "\\t", "valid": false }, { "description": "matches", "data": "\u0009", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and upper letter", "schema": { "type": "string", "pattern": "^\\cC$" }, "tests": [ { "description": "does not match", "data": "\\cC", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and lower letter", "schema": { "type": "string", "pattern": "^\\cc$" }, "tests": [ { "description": "does not match", "data": "\\cc", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 \\d matches ascii digits only", "schema": { "type": "string", "pattern": "^\\d$" }, "tests": [ { "description": "ASCII zero matches", "data": "0", "valid": true }, { "description": "NKO DIGIT ZERO does not match (unlike e.g. Python)", "data": "߀", "valid": false }, { "description": "NKO DIGIT ZERO (as \\u escape) does not match", "data": "\u07c0", "valid": false } ] }, { "description": "ECMA 262 \\D matches everything but ascii digits", "schema": { "type": "string", "pattern": "^\\D$" }, "tests": [ { "description": "ASCII zero does not match", "data": "0", "valid": false }, { "description": "NKO DIGIT ZERO matches (unlike e.g. Python)", "data": "߀", "valid": true }, { "description": "NKO DIGIT ZERO (as \\u escape) matches", "data": "\u07c0", "valid": true } ] }, { "description": "ECMA 262 \\w matches ascii letters only", "schema": { "type": "string", "pattern": "^\\w$" }, "tests": [ { "description": "ASCII 'a' matches", "data": "a", "valid": true }, { "description": "latin-1 e-acute does not match (unlike e.g. Python)", "data": "é", "valid": false } ] }, { "description": "ECMA 262 \\W matches everything but ascii letters", "schema": { "type": "string", "pattern": "^\\W$" }, "tests": [ { "description": "ASCII 'a' does not match", "data": "a", "valid": false }, { "description": "latin-1 e-acute matches (unlike e.g. Python)", "data": "é", "valid": true } ] }, { "description": "ECMA 262 \\s matches whitespace", "schema": { "type": "string", "pattern": "^\\s$" }, "tests": [ { "description": "ASCII space matches", "data": " ", "valid": true }, { "description": "Character tabulation matches", "data": "\t", "valid": true }, { "description": "Line tabulation matches", "data": "\u000b", "valid": true }, { "description": "Form feed matches", "data": "\u000c", "valid": true }, { "description": "latin-1 non-breaking-space matches", "data": "\u00a0", "valid": true }, { "description": "zero-width whitespace matches", "data": "\ufeff", "valid": true }, { "description": "line feed matches (line terminator)", "data": "\u000a", "valid": true }, { "description": "paragraph separator matches (line terminator)", "data": "\u2029", "valid": true }, { "description": "EM SPACE matches (Space_Separator)", "data": "\u2003", "valid": true }, { "description": "Non-whitespace control does not match", "data": "\u0001", "valid": false }, { "description": "Non-whitespace does not match", "data": "\u2013", "valid": false } ] }, { "description": "ECMA 262 \\S matches everything but whitespace", "schema": { "type": "string", "pattern": "^\\S$" }, "tests": [ { "description": "ASCII space does not match", "data": " ", "valid": false }, { "description": "Character tabulation does not match", "data": "\t", "valid": false }, { "description": "Line tabulation does not match", "data": "\u000b", "valid": false }, { "description": "Form feed does not match", "data": "\u000c", "valid": false }, { "description": "latin-1 non-breaking-space does not match", "data": "\u00a0", "valid": false }, { "description": "zero-width whitespace does not match", "data": "\ufeff", "valid": false }, { "description": "line feed does not match (line terminator)", "data": "\u000a", "valid": false }, { "description": "paragraph separator does not match (line terminator)", "data": "\u2029", "valid": false }, { "description": "EM SPACE does not match (Space_Separator)", "data": "\u2003", "valid": false }, { "description": "Non-whitespace control matches", "data": "\u0001", "valid": true }, { "description": "Non-whitespace matches", "data": "\u2013", "valid": true } ] }, { "description": "patterns always use unicode semantics with pattern", "schema": { "pattern": "\\p{Letter}cole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "\\w in patterns matches [A-Za-z0-9_], not unicode letters", "schema": { "pattern": "\\wcole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "pattern with ASCII ranges", "schema": { "pattern": "[a-z]cole" }, "tests": [ { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "ascii characters match", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true } ] }, { "description": "\\d in pattern matches [0-9], not unicode digits", "schema": { "pattern": "^\\d+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": false } ] }, { "description": "pattern with non-ASCII digits", "schema": { "pattern": "^\\p{digit}+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": true } ] }, { "description": "patterns always use unicode semantics with patternProperties", "schema": { "type": "object", "patternProperties": { "\\p{Letter}cole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": true }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": true }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "\\w in patternProperties matches [A-Za-z0-9_], not unicode letters", "schema": { "type": "object", "patternProperties": { "\\wcole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "patternProperties with ASCII ranges", "schema": { "type": "object", "patternProperties": { "[a-z]cole": true }, "additionalProperties": false }, "tests": [ { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "ascii characters match", "data": { "l'ecole": "pas de vraie vie" }, "valid": true } ] }, { "description": "\\d in patternProperties matches [0-9], not unicode digits", "schema": { "type": "object", "patternProperties": { "^\\d+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": false } ] }, { "description": "patternProperties with non-ASCII digits", "schema": { "type": "object", "patternProperties": { "^\\p{digit}+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": true } ] } ] date-time.json100640000766000024 1376415240201330 27443 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of date-time strings", "schema": { "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date-time string", "data": "1963-06-19T08:30:06.283185Z", "valid": true }, { "description": "a valid date-time string without second fraction", "data": "1963-06-19T08:30:06Z", "valid": true }, { "description": "a valid date-time string with plus offset", "data": "1937-01-01T12:00:27.87+00:20", "valid": true }, { "description": "a valid date-time string with minus offset", "data": "1990-12-31T15:59:50.123-08:00", "valid": true }, { "description": "a valid date-time with a leap second, UTC", "data": "1998-12-31T23:59:60Z", "valid": true }, { "description": "a valid date-time with a leap second, with minus offset", "data": "1998-12-31T15:59:60.123-08:00", "valid": true }, { "description": "an invalid date-time past leap second, UTC", "data": "1998-12-31T23:59:61Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong minute, UTC", "data": "1998-12-31T23:58:60Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong hour, UTC", "data": "1998-12-31T22:59:60Z", "valid": false }, { "description": "an invalid hour in date-time string", "data": "1990-12-31T24:00:00Z", "valid": false }, { "description": "an invalid minute in date-time string", "data": "1990-12-31T15:60:00Z", "valid": false }, { "description": "an invalid offset minute in date-time string", "data": "1990-12-31T10:00:00+10:60", "valid": false }, { "description": "an invalid day in date-time string", "data": "1990-02-31T15:59:59.123-08:00", "valid": false }, { "description": "an invalid offset in date-time string", "data": "1990-12-31T15:59:59-24:00", "valid": false }, { "description": "an invalid closing Z after time-zone offset", "data": "1963-06-19T08:30:06.28123+01:00Z", "valid": false }, { "description": "an invalid date-time string", "data": "06/19/1963 08:30:06 PST", "valid": false }, { "description": "case-insensitive T and Z", "data": "1963-06-19t08:30:06.283185z", "valid": true }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350T01:01:01", "valid": false }, { "description": "invalid non-padded month dates", "data": "1963-6-19T08:30:06.283185Z", "valid": false }, { "description": "invalid non-padded day dates", "data": "1963-06-1T08:30:06.283185Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in date portion", "data": "1963-06-1৪T00:00:00Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in time portion", "data": "1963-06-11T0৪:00:00Z", "valid": false }, { "description": "invalid extended year", "data": "+11963-06-19T08:30:06.283185Z", "valid": false }, { "description": "a numeric offset without minutes is invalid", "data": "1985-04-12T23:20:50+01", "valid": false }, { "description": "hour 24 is invalid even with a leap second", "data": "2016-12-31T24:59:60+01:00", "valid": false }, { "description": "a second fraction of fifteen nines is valid", "data": "1985-04-12T00:59:59.999999999999999Z", "valid": true }, { "description": "a trailing newline is invalid", "data": "1985-04-12T23:20:50Z\n", "valid": false } ] } ] idn-email.json100640000766000024 1041215240201330 27414 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of an internationalized e-mail addresses", "schema": { "format": "idn-email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid idn e-mail (example@example.test in Hangul)", "data": "실례@실례.테스트", "valid": true }, { "description": "an invalid e-mail/idn e-mail address", "data": "2962", "valid": false }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "a non-ASCII local part with an ASCII domain is valid", "data": "δοκιμή@example.com", "valid": true }, { "description": "a non-ASCII quoted local part is valid", "data": "\"δοκιμή\"@example.com", "valid": true }, { "description": "a domain label that is not in Unicode NFC is valid", "data": "user@cafe\u0301.com", "valid": true }, { "description": "a local part that is not in Unicode NFC is valid", "data": "cafe\u0301@example.com", "valid": true }, { "description": "a C1 control in the local part is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii; https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-2 admits U+0085", "data": "\u0085@example.com", "valid": true }, { "description": "a noncharacter in the local part is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii; https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-3 admits U+FFFF", "data": "\uffff@example.com", "valid": true }, { "description": "a local part at the 64-octet limit is valid", "comment": "https://www.rfc-editor.org/rfc/rfc5321#section-4.5.3.1 every implementation must be able to receive a local part of 64 octets", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com", "valid": true }, { "description": "a fullwidth commercial at is not a local-part separator", "comment": "https://www.rfc-editor.org/rfc/rfc5321#section-4.1.2 Mailbox = Local-part \"@\" ( Domain / address-literal ) splits on U+0040, and any IDN mapping applies only to the domain that split produces, so U+FF20 cannot become the delimiter", "data": "user\uff20example.com", "valid": false }, { "description": "a local part with a supplementary-plane character is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii, and https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-4 covers U+10000 and above", "data": "\ud835\udd4f@example.com", "valid": true } ] } ] ecmascript-regex.json100644000766000024 215240201330 27421 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional[]draft2019-09000755000766000024 015240201330 23404 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-testsoutput-schema.json100640000766000024 450515240201330 27235 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2019-09{ "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://json-schema.org/draft/2019-09/output/schema", "description": "A schema that validates the minimum requirements for validation output", "anyOf": [ { "$ref": "#/$defs/flag" }, { "$ref": "#/$defs/basic" }, { "$ref": "#/$defs/detailed" }, { "$ref": "#/$defs/verbose" } ], "$defs": { "outputUnit":{ "properties": { "valid": { "type": "boolean" }, "keywordLocation": { "type": "string", "format": "json-pointer" }, "absoluteKeywordLocation": { "type": "string", "format": "uri" }, "instanceLocation": { "type": "string", "format": "json-pointer" }, "error": { "type": "string" }, "errors": { "$ref": "#/$defs/outputUnitArray" }, "annotations": { "$ref": "#/$defs/outputUnitArray" } }, "required": [ "valid", "keywordLocation", "instanceLocation" ], "allOf": [ { "if": { "properties": { "valid": { "const": false } } }, "then": { "anyOf": [ { "required": [ "error" ] }, { "required": [ "errors" ] } ] } }, { "if": { "anyOf": [ { "properties": { "keywordLocation": { "pattern": "/\\$ref/" } } }, { "properties": { "keywordLocation": { "pattern": "/\\$recursiveRef/" } } } ] }, "then": { "required": [ "absoluteKeywordLocation" ] } } ] }, "outputUnitArray": { "type": "array", "items": { "$ref": "#/$defs/outputUnit" } }, "flag": { "properties": { "valid": { "type": "boolean" } }, "required": [ "valid" ] }, "basic": { "$ref": "#/$defs/outputUnit" }, "detailed": { "$ref": "#/$defs/outputUnit" }, "verbose": { "$ref": "#/$defs/outputUnit" } } } draft2020-12000755000766000024 015240201330 23366 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-testsoutput-schema.json100640000766000024 450315240201330 27215 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2020-12{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://json-schema.org/draft/2020-12/output/schema", "description": "A schema that validates the minimum requirements for validation output", "anyOf": [ { "$ref": "#/$defs/flag" }, { "$ref": "#/$defs/basic" }, { "$ref": "#/$defs/detailed" }, { "$ref": "#/$defs/verbose" } ], "$defs": { "outputUnit":{ "properties": { "valid": { "type": "boolean" }, "keywordLocation": { "type": "string", "format": "json-pointer" }, "absoluteKeywordLocation": { "type": "string", "format": "uri" }, "instanceLocation": { "type": "string", "format": "json-pointer" }, "error": { "type": "string" }, "errors": { "$ref": "#/$defs/outputUnitArray" }, "annotations": { "$ref": "#/$defs/outputUnitArray" } }, "required": [ "valid", "keywordLocation", "instanceLocation" ], "allOf": [ { "if": { "properties": { "valid": { "const": false } } }, "then": { "anyOf": [ { "required": [ "error" ] }, { "required": [ "errors" ] } ] } }, { "if": { "anyOf": [ { "properties": { "keywordLocation": { "pattern": "/\\$ref/" } } }, { "properties": { "keywordLocation": { "pattern": "/\\$dynamicRef/" } } } ] }, "then": { "required": [ "absoluteKeywordLocation" ] } } ] }, "outputUnitArray": { "type": "array", "items": { "$ref": "#/$defs/outputUnit" } }, "flag": { "properties": { "valid": { "type": "boolean" } }, "required": [ "valid" ] }, "basic": { "$ref": "#/$defs/outputUnit" }, "detailed": { "$ref": "#/$defs/outputUnit" }, "verbose": { "$ref": "#/$defs/outputUnit" } } } ignore-prefixItems.json100640000766000024 30215240201330 27144 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$id": "http://localhost:1234/draft2019-09/ignore-prefixItems.json", "$schema": "https://json-schema.org/draft/2019-09/schema", "prefixItems": [ {"type": "string"} ] } ignore-dependentRequired.json100640000766000024 25515240201330 27650 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft7{ "$id": "http://localhost:1234/draft7/integer.json", "$schema": "http://json-schema.org/draft-07/schema#", "dependentRequired": { "foo": ["bar"] } }additionalProperties.json100640000766000024 1513715240201330 27311 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "additionalProperties being false does not allow other properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": {"foo": {}, "bar": {}}, "patternProperties": { "^v": {} }, "additionalProperties": false }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : "boom"}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobarbaz", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "patternProperties are not additional properties", "data": {"foo":1, "vroom": 2}, "valid": true } ] }, { "description": "non-ASCII pattern with additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "patternProperties": {"^á": {}}, "additionalProperties": false }, "tests": [ { "description": "matching the pattern is valid", "data": {"ármányos": 2}, "valid": true }, { "description": "not matching the pattern is invalid", "data": {"élmény": 2}, "valid": false } ] }, { "description": "additionalProperties with schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": {"foo": {}, "bar": {}}, "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional valid property is valid", "data": {"foo" : 1, "bar" : 2, "quux" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : 12}, "valid": false } ] }, { "description": "additionalProperties can exist by itself", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "an additional valid property is valid", "data": {"foo" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1}, "valid": false } ] }, { "description": "additionalProperties are allowed by default", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": {"foo": {}, "bar": {}} }, "tests": [ { "description": "additional properties are allowed", "data": {"foo": 1, "bar": 2, "quux": true}, "valid": true } ] }, { "description": "additionalProperties does not look in applicators", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ {"properties": {"foo": {}}} ], "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "properties defined in allOf are not examined", "data": {"foo": 1, "bar": true}, "valid": false } ] }, { "description": "additionalProperties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "additionalProperties": { "type": "null" } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] }, { "description": "additionalProperties with propertyNames", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "propertyNames": { "maxLength": 5 }, "additionalProperties": { "type": "number" } }, "tests": [ { "description": "Valid against both keywords", "data": { "apple": 4 }, "valid": true }, { "description": "Valid against propertyNames, but not additionalProperties", "data": { "fig": 2, "pear": "available" }, "valid": false } ] }, { "description": "dependentSchemas with additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": {"foo2": {}}, "dependentSchemas": { "foo" : {}, "foo2": { "properties": { "bar":{} } } }, "additionalProperties": false }, "tests": [ { "description": "additionalProperties doesn't consider dependentSchemas", "data": {"foo": ""}, "valid": false }, { "description": "additionalProperties can't see bar", "data": {"bar": ""}, "valid": false }, { "description": "additionalProperties can't see bar even when foo2 is present", "data": { "foo2": "", "bar": ""}, "valid": false } ] } ] cross-draft.json100640000766000024 262215240201330 27153 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "refs to future drafts are processed as future drafts", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "array", "$ref": "http://localhost:1234/draft2020-12/prefixItems.json" }, "tests": [ { "description": "first item not a string is invalid", "comment": "if the implementation is not processing the $ref as a 2020-12 schema, this test will fail", "data": [1, 2, 3], "valid": false }, { "description": "first item is a string is valid", "data": ["a string", 1, 2, 3], "valid": true } ] }, { "description": "refs to historic drafts are processed as historic drafts", "schema": { "type": "object", "allOf": [ { "properties": { "foo": true } }, { "$ref": "http://localhost:1234/draft7/ignore-dependentRequired.json" } ] }, "tests": [ { "description": "missing bar is valid", "comment": "if the implementation is not processing the $ref as a draft 7 schema, this test will fail", "data": {"foo": "any value"}, "valid": true } ] } ] date.json100640000766000024 3546515240201330 27164 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of date strings", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "date" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date string", "data": "1963-06-19", "valid": true }, { "description": "a valid date string with 31 days in January", "data": "2020-01-31", "valid": true }, { "description": "a invalid date string with 32 days in January", "data": "2020-01-32", "valid": false }, { "description": "a valid date string with 28 days in February (normal)", "data": "2021-02-28", "valid": true }, { "description": "a invalid date string with 30 days in February (leap)", "data": "2020-02-30", "valid": false }, { "description": "a valid date string with 31 days in March", "data": "2020-03-31", "valid": true }, { "description": "a invalid date string with 32 days in March", "data": "2020-03-32", "valid": false }, { "description": "a valid date string with 30 days in April", "data": "2020-04-30", "valid": true }, { "description": "a invalid date string with 31 days in April", "data": "2020-04-31", "valid": false }, { "description": "a valid date string with 31 days in May", "data": "2020-05-31", "valid": true }, { "description": "a invalid date string with 32 days in May", "data": "2020-05-32", "valid": false }, { "description": "a valid date string with 30 days in June", "data": "2020-06-30", "valid": true }, { "description": "a invalid date string with 31 days in June", "data": "2020-06-31", "valid": false }, { "description": "a valid date string with 31 days in July", "data": "2020-07-31", "valid": true }, { "description": "a invalid date string with 32 days in July", "data": "2020-07-32", "valid": false }, { "description": "a valid date string with 31 days in August", "data": "2020-08-31", "valid": true }, { "description": "a invalid date string with 32 days in August", "data": "2020-08-32", "valid": false }, { "description": "a valid date string with 30 days in September", "data": "2020-09-30", "valid": true }, { "description": "a invalid date string with 31 days in September", "data": "2020-09-31", "valid": false }, { "description": "a valid date string with 31 days in October", "data": "2020-10-31", "valid": true }, { "description": "a invalid date string with 32 days in October", "data": "2020-10-32", "valid": false }, { "description": "a valid date string with 30 days in November", "data": "2020-11-30", "valid": true }, { "description": "a invalid date string with 31 days in November", "data": "2020-11-31", "valid": false }, { "description": "a valid date string with 31 days in December", "data": "2020-12-31", "valid": true }, { "description": "a invalid date string with 32 days in December", "data": "2020-12-32", "valid": false }, { "description": "an invalid date string", "data": "06/19/1963", "valid": false }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350", "valid": false }, { "description": "non-padded month dates are not valid", "data": "1998-1-20", "valid": false }, { "description": "non-padded day dates are not valid", "data": "1998-01-1", "valid": false }, { "description": "invalid month", "data": "1998-13-01", "valid": false }, { "description": "2021 is not a leap year", "data": "2021-02-29", "valid": false }, { "description": "2020 is a leap year", "data": "2020-02-29", "valid": true }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1963-06-1৪", "valid": false }, { "description": "invalid: non-ASCII Bengali digit in month field", "data": "2020-0৪-01", "valid": false }, { "description": "ISO8601 / non-RFC3339: YYYYMMDD without dashes (2023-03-28)", "data": "20230328", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number implicit day of week (2023-01-02)", "data": "2023-W01", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number with day of week (2023-03-28)", "data": "2023-W13-2", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number rollover to next year (2023-01-01)", "data": "2022W527", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false }, { "description": "century year 0100 is not a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — 100 % 100 == 0 but 100 % 400 != 0", "data": "0100-02-29", "valid": false }, { "description": "century year 0400 is a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — 400-year cycle boundary", "data": "0400-02-29", "valid": true }, { "description": "century year 2100 is not a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — future century year", "data": "2100-02-29", "valid": false }, { "description": "invalid: leading whitespace is not permitted", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — full-date grammar does not include whitespace", "data": " 2024-01-15", "valid": false }, { "description": "invalid: trailing whitespace is not permitted", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — full-date grammar does not include whitespace", "data": "2024-01-15 ", "valid": false }, { "description": "invalid: month 00 is not valid per date-month range 01-12", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — date-month = 2DIGIT ; 01-12", "data": "2024-00-15", "valid": false }, { "description": "invalid: day 00 is not valid per date-mday minimum of 01", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — date-mday = 2DIGIT ; 01-28/29/30/31", "data": "2024-01-00", "valid": false }, { "description": "invalid: empty string", "data": "", "valid": false }, { "description": "invalid: embedded whitespace between year and month", "data": "2020 -01-01", "valid": false }, { "description": "invalid: trailing character after valid full-date", "data": "2020-01-01X", "valid": false }, { "description": "invalid: trailing Z after full-date", "data": "2020-01-01Z", "valid": false }, { "description": "invalid: full-date followed by space and time component", "data": "2020-01-01 00:00:00Z", "valid": false }, { "description": "valid: four-digit year 0001", "data": "0001-01-01", "valid": true }, { "description": "invalid: two-digit year (N-2 digits)", "data": "20-01-01", "valid": false }, { "description": "invalid: three-digit year (N-1 digits)", "data": "998-01-01", "valid": false }, { "description": "invalid: five-digit year (N+1 digits)", "data": "12020-01-01", "valid": false }, { "description": "invalid: positive sign prefix on year", "data": "+2020-01-01", "valid": false }, { "description": "invalid: negative sign prefix on year", "data": "-2020-01-01", "valid": false }, { "description": "invalid: non-ASCII Bengali digit in year field", "data": "২020-01-01", "valid": false }, { "description": "invalid: alphabetic characters in year field", "data": "YYYY-01-01", "valid": false }, { "description": "invalid: three-digit month (N+1 digits)", "data": "2020-001-01", "valid": false }, { "description": "invalid: alphabetic characters in month field", "data": "2020-MM-01", "valid": false }, { "description": "invalid: three-digit day (N+1 digits)", "data": "2020-01-001", "valid": false }, { "description": "invalid: alphabetic characters in day field", "data": "2020-01-DD", "valid": false }, { "description": "invalid: colon separators", "data": "2020:01:01", "valid": false }, { "description": "invalid: dot separators", "data": "2020.01.01", "valid": false }, { "description": "invalid: space separators", "data": "2020 01 01", "valid": false }, { "description": "invalid: mixed slash and hyphen separators", "data": "2020-01/01", "valid": false }, { "description": "invalid: duplicated first hyphen", "data": "2020--01-01", "valid": false }, { "description": "invalid: duplicated second hyphen", "data": "2020-01--01", "valid": false }, { "description": "valid: date inside the Julian to Gregorian reform gap", "data": "1582-10-10", "valid": true }, { "description": "invalid: year field numerically larger than a 32-bit signed integer", "data": "2147483648-01-01", "valid": false }, { "description": "invalid: character just above '9' as the second digit of the day", "data": "2020-01-0:", "valid": false }, { "description": "invalid: non-ASCII digit leaving ten UTF-8 bytes but eight characters", "data": "\u09e80-01-01", "valid": false }, { "description": "invalid: en dash separators instead of hyphen-minus", "data": "2020\u201301\u201301", "valid": false }, { "description": "invalid: NUL character after an otherwise valid full-date", "data": "2020-01-01\u0000", "valid": false } ] } ] ipv4.json100640000766000024 1624115240201330 27120 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of IP addresses", "comment": "RFC 2673, Section 3.2: dotted-quad = decbyte \".\" decbyte \".\" decbyte \".\" decbyte. A 'decbyte' (1*3DIGIT) restricts semantic values to 0-255, allows leading zeros, and strictly forbids symbols, alpha/hex, whitespace, and non-ASCII characters.", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IP address", "data": "192.168.0.1", "valid": true }, { "description": "an IP address with too many components", "data": "127.0.0.0.1", "valid": false }, { "description": "an IP address with out-of-range values", "data": "256.256.256.256", "valid": false }, { "description": "an IP address without 4 components", "data": "127.0", "valid": false }, { "description": "a 2-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.1", "valid": false }, { "description": "a 3-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.0.1", "valid": false }, { "description": "an IP address as an integer", "data": "0x7f000001", "valid": false }, { "description": "an IP address as an integer (decimal)", "data": "2130706433", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২7.0.0.1", "valid": false }, { "description": "invalid fullwidth digits (non-ASCII)", "data": "192.168.1.1", "valid": false }, { "description": "invalid mathematical bold digits (non-ASCII)", "data": "𝟏𝟗𝟐.𝟏𝟔𝟖.𝟏.𝟏", "valid": false }, { "description": "netmask is not a part of ipv4 address", "data": "192.168.1.0/24", "valid": false }, { "description": "leading whitespace is invalid", "data": " 192.168.0.1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "192.168.0.1 ", "valid": false }, { "description": "trailing newline is invalid", "data": "192.168.0.1\n", "valid": false }, { "description": "hexadecimal notation is invalid", "data": "0x7f.0.0.1", "valid": false }, { "description": "octal notation explicit is invalid", "data": "0o10.0.0.1", "valid": false }, { "description": "empty part (double dot) is invalid", "data": "192.168..1", "valid": false }, { "description": "leading dot is invalid", "data": ".192.168.0.1", "valid": false }, { "description": "trailing dot is invalid", "data": "192.168.0.1.", "valid": false }, { "description": "minimum valid IPv4 address", "data": "0.0.0.0", "valid": true }, { "description": "maximum valid IPv4 address", "data": "255.255.255.255", "valid": true }, { "description": "valid IPv4 with an octet in the 200 to 249 range", "data": "200.0.0.0", "valid": true }, { "description": "valid IPv4 with two-digit octets", "data": "10.20.30.40", "valid": true }, { "description": "empty string is invalid", "data": "", "valid": false }, { "description": "plus sign is invalid", "data": "+1.2.3.4", "valid": false }, { "description": "negative sign is invalid", "data": "-1.2.3.4", "valid": false }, { "description": "exponential notation is invalid", "data": "1e2.0.0.1", "valid": false }, { "description": "alpha characters are invalid", "data": "192.168.a.1", "valid": false }, { "description": "internal whitespace is invalid", "data": "192. 168.0.1", "valid": false }, { "description": "tab character is invalid", "data": "192.168.0.1\t", "valid": false }, { "description": "additional content after an embedded NUL byte", "data": "192.168.0.1\u0000.evil.com", "valid": false }, { "description": "with port number is invalid", "data": "192.168.0.1:80", "valid": false }, { "description": "an IPv4-mapped IPv6 address is invalid", "data": "::ffff:192.168.0.1", "valid": false }, { "description": "single octet out of range in last position", "data": "192.168.0.256", "valid": false } ] } ] ipv6.json100640000766000024 1556615240201330 27133 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of IPv6 addresses", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IPv6 address", "data": "::1", "valid": true }, { "description": "a group with 5 hex digits is invalid", "data": "12345::", "valid": false }, { "description": "trailing 4 hex symbols is valid", "data": "::abef", "valid": true }, { "description": "trailing 5 hex symbols is invalid", "data": "::abcef", "valid": false }, { "description": "an IPv6 address with too many components", "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1", "valid": false }, { "description": "an IPv6 address containing illegal characters", "data": "::laptop", "valid": false }, { "description": "no digits is valid", "data": "::", "valid": true }, { "description": "leading colons is valid", "data": "::42:ff:1", "valid": true }, { "description": "trailing colons is valid", "data": "d6::", "valid": true }, { "description": "missing leading octet is invalid", "data": ":2:3:4:5:6:7:8", "valid": false }, { "description": "missing trailing octet is invalid", "data": "1:2:3:4:5:6:7:", "valid": false }, { "description": "missing leading octet with omitted octets later", "data": ":2:3:4::8", "valid": false }, { "description": "single set of double colons in the middle is valid", "data": "1:d6::42", "valid": true }, { "description": "two sets of double colons is invalid", "data": "1::d6::42", "valid": false }, { "description": "mixed format with the ipv4 section as decimal octets", "data": "1::d6:192.168.0.1", "valid": true }, { "description": "mixed format with double colons between the sections", "data": "1:2::192.168.0.1", "valid": true }, { "description": "mixed format with ipv4 section with octet out of range", "data": "1::2:192.168.256.1", "valid": false }, { "description": "mixed format with ipv4 section with a hex octet", "data": "1::2:192.168.ff.1", "valid": false }, { "description": "mixed format with leading double colons (ipv4-mapped ipv6 address)", "data": "::ffff:192.168.0.1", "valid": true }, { "description": "triple colons is invalid", "data": "1:2:3:4:5:::8", "valid": false }, { "description": "8 octets", "data": "1:2:3:4:5:6:7:8", "valid": true }, { "description": "insufficient octets without double colons", "data": "1:2:3:4:5:6:7", "valid": false }, { "description": "no colons is invalid", "data": "1", "valid": false }, { "description": "ipv4 is not ipv6", "data": "127.0.0.1", "valid": false }, { "description": "ipv4 segment must have 4 octets", "data": "1:2:3:4:1.2.3", "valid": false }, { "description": "leading whitespace is invalid", "data": " ::1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "::1 ", "valid": false }, { "description": "netmask is not a part of ipv6 address", "data": "fe80::/64", "valid": false }, { "description": "zone id is not a part of ipv6 address", "data": "fe80::a%eth1", "valid": false }, { "description": "a long valid ipv6", "data": "1000:1000:1000:1000:1000:1000:255.255.255.255", "valid": true }, { "description": "a long invalid ipv6, below length limit, first", "data": "100:100:100:100:100:100:255.255.255.255.255", "valid": false }, { "description": "a long invalid ipv6, below length limit, second", "data": "100:100:100:100:100:100:100:255.255.255.255", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1:2:3:4:5:6:7:৪", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in the IPv4 portion", "data": "1:2::192.16৪.0.1", "valid": false } ] } ] time.json100640000766000024 2052215240201330 27171 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of time strings", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid time string", "data": "08:30:06Z", "valid": true }, { "description": "invalid time string with extra leading zeros", "data": "008:030:006Z", "valid": false }, { "description": "invalid time string with no leading zero for single digit", "data": "8:3:6Z", "valid": false }, { "description": "hour, minute, second must be two digits", "data": "8:0030:6Z", "valid": false }, { "description": "a valid time string with leap second, Zulu", "data": "23:59:60Z", "valid": true }, { "description": "invalid leap second, Zulu (wrong hour)", "data": "22:59:60Z", "valid": false }, { "description": "invalid leap second, Zulu (wrong minute)", "data": "23:58:60Z", "valid": false }, { "description": "valid leap second, zero time-offset", "data": "23:59:60+00:00", "valid": true }, { "description": "invalid leap second, zero time-offset (wrong hour)", "data": "22:59:60+00:00", "valid": false }, { "description": "invalid leap second, zero time-offset (wrong minute)", "data": "23:58:60+00:00", "valid": false }, { "description": "valid leap second, positive time-offset", "data": "01:29:60+01:30", "valid": true }, { "description": "valid leap second, large positive time-offset", "data": "23:29:60+23:30", "valid": true }, { "description": "invalid leap second, positive time-offset (wrong hour)", "data": "23:59:60+01:00", "valid": false }, { "description": "invalid leap second, positive time-offset (wrong minute)", "data": "23:59:60+00:30", "valid": false }, { "description": "valid leap second, negative time-offset", "data": "15:59:60-08:00", "valid": true }, { "description": "valid leap second, large negative time-offset", "data": "00:29:60-23:30", "valid": true }, { "description": "invalid leap second, negative time-offset (wrong hour)", "data": "23:59:60-01:00", "valid": false }, { "description": "invalid leap second, negative time-offset (wrong minute)", "data": "23:59:60-00:30", "valid": false }, { "description": "a valid time string with second fraction", "data": "23:20:50.52Z", "valid": true }, { "description": "a valid time string with precise second fraction", "data": "08:30:06.283185Z", "valid": true }, { "description": "a valid time string with plus offset", "data": "08:30:06+00:20", "valid": true }, { "description": "a valid time string with minus offset", "data": "08:30:06-08:00", "valid": true }, { "description": "time with unknown local offset is valid", "comment": "RFC 3339 section 4.3 (unknown local offset)", "data": "12:34:56-00:00", "valid": true }, { "description": "hour, minute in time-offset must be two digits", "data": "08:30:06-8:000", "valid": false }, { "description": "a valid time string with case-insensitive Z", "data": "08:30:06z", "valid": true }, { "description": "an invalid time string with invalid hour", "data": "24:00:00Z", "valid": false }, { "description": "an invalid time string with invalid minute", "data": "00:60:00Z", "valid": false }, { "description": "an invalid time string with invalid second", "data": "00:00:61Z", "valid": false }, { "description": "an invalid time string with invalid leap second (wrong hour)", "data": "22:59:60Z", "valid": false }, { "description": "an invalid time string with invalid leap second (wrong minute)", "data": "23:58:60Z", "valid": false }, { "description": "an invalid time string with invalid time numoffset hour", "data": "01:02:03+24:00", "valid": false }, { "description": "an invalid time string with invalid time numoffset minute", "data": "01:02:03+00:60", "valid": false }, { "description": "an invalid time string with invalid time with both Z and numoffset", "data": "01:02:03Z+00:30", "valid": false }, { "description": "an invalid offset indicator", "data": "08:30:06 PST", "valid": false }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "01:01:01,1111", "valid": false }, { "description": "no time offset", "data": "12:00:00", "valid": false }, { "description": "no time offset with second fraction", "data": "12:00:00.52", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২:00:00Z", "valid": false }, { "description": "offset not starting with plus or minus", "data": "08:30:06#00:20", "valid": false }, { "description": "contains letters", "data": "ab:cd:ef", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false } ] } ] uuid.json100640000766000024 1206115240201330 27200 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "uuid format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "uuid" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "all upper-case", "data": "2EB8AA08-AA98-11EA-B4AA-73B441D16380", "valid": true }, { "description": "all lower-case", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d16380", "valid": true }, { "description": "mixed case", "data": "2eb8aa08-AA98-11ea-B4Aa-73B441D16380", "valid": true }, { "description": "all zeroes is valid", "data": "00000000-0000-0000-0000-000000000000", "valid": true }, { "description": "wrong length", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d1638", "valid": false }, { "description": "missing section", "data": "2eb8aa08-aa98-11ea-73b441d16380", "valid": false }, { "description": "bad characters (not hex)", "data": "2eb8aa08-aa98-11ea-b4ga-73b441d16380", "valid": false }, { "description": "no dashes", "data": "2eb8aa08aa9811eab4aa73b441d16380", "valid": false }, { "description": "too few dashes", "data": "2eb8aa08aa98-11ea-b4aa73b441d16380", "valid": false }, { "description": "too many dashes", "data": "2eb8-aa08-aa98-11ea-b4aa73b44-1d16380", "valid": false }, { "description": "dashes in the wrong spot", "data": "2eb8aa08aa9811eab4aa73b441d16380----", "valid": false }, { "description": "shifted dashes", "data": "2eb8aa0-8aa98-11e-ab4aa7-3b441d16380", "valid": false }, { "description": "valid version 4", "data": "98d80576-482e-427f-8434-7f86890ab222", "valid": true }, { "description": "valid version 5", "data": "99c17cbb-656f-564a-940f-1a4568f03487", "valid": true }, { "description": "hypothetical version 6", "data": "99c17cbb-656f-664a-940f-1a4568f03487", "valid": true }, { "description": "hypothetical version 15", "data": "99c17cbb-656f-f64a-940f-1a4568f03487", "valid": true }, { "description": "URN prefixed UUID is invalid", "data": "urn:uuid:2eb8aa08-aa98-11ea-b4aa-73b441d16380", "valid": false }, { "description": "trailing hyphen after a complete UUID is invalid", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d16380-", "valid": false }, { "description": "non-ASCII digit '২' (a Bengali 2) is invalid", "data": "২eb8aa08-aa98-11ea-b4aa-73b441d16380", "valid": false }, { "description": "an underscore in place of a hex digit is invalid", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d1_380", "valid": false }, { "description": "a trailing newline after a complete UUID is invalid", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d16380\n", "valid": false }, { "description": "a variant nibble not defined by RFC 4122 is valid", "data": "2eb8aa08-aa98-11ea-f4aa-73b441d16380", "valid": true } ] } ] additionalProperties.json100640000766000024 1703715240201330 27274 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "additionalProperties being false does not allow other properties", "specification": [ { "core":"10.3.2.3", "quote": "The value of \"additionalProperties\" MUST be a valid JSON Schema. Boolean \"false\" forbids everything." } ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"foo": {}, "bar": {}}, "patternProperties": { "^v": {} }, "additionalProperties": false }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : "boom"}, "valid": false }, { "description": "ignores arrays", "data": [1, 2, 3], "valid": true }, { "description": "ignores strings", "data": "foobarbaz", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true }, { "description": "patternProperties are not additional properties", "data": {"foo":1, "vroom": 2}, "valid": true } ] }, { "description": "non-ASCII pattern with additionalProperties", "specification": [ { "core":"10.3.2.3"} ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "patternProperties": {"^á": {}}, "additionalProperties": false }, "tests": [ { "description": "matching the pattern is valid", "data": {"ármányos": 2}, "valid": true }, { "description": "not matching the pattern is invalid", "data": {"élmény": 2}, "valid": false } ] }, { "description": "additionalProperties with schema", "specification": [ { "core":"10.3.2.3", "quote": "The value of \"additionalProperties\" MUST be a valid JSON Schema." } ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"foo": {}, "bar": {}}, "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "no additional properties is valid", "data": {"foo": 1}, "valid": true }, { "description": "an additional valid property is valid", "data": {"foo" : 1, "bar" : 2, "quux" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1, "bar" : 2, "quux" : 12}, "valid": false } ] }, { "description": "additionalProperties can exist by itself", "specification": [ { "core":"10.3.2.3", "quote": "With no other applicator applying to object instances. This validates all the instance values irrespective of their property names" } ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "an additional valid property is valid", "data": {"foo" : true}, "valid": true }, { "description": "an additional invalid property is invalid", "data": {"foo" : 1}, "valid": false } ] }, { "description": "additionalProperties are allowed by default", "specification": [ { "core":"10.3.2.3", "quote": "Omitting this keyword has the same assertion behavior as an empty schema." } ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"foo": {}, "bar": {}} }, "tests": [ { "description": "additional properties are allowed", "data": {"foo": 1, "bar": 2, "quux": true}, "valid": true } ] }, { "description": "additionalProperties does not look in applicators", "specification":[ { "core": "10.2", "quote": "Subschemas of applicator keywords evaluate the instance completely independently such that the results of one such subschema MUST NOT impact the results of sibling subschemas." } ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ {"properties": {"foo": {}}} ], "additionalProperties": {"type": "boolean"} }, "tests": [ { "description": "properties defined in allOf are not examined", "data": {"foo": 1, "bar": true}, "valid": false } ] }, { "description": "additionalProperties with null valued instance properties", "specification": [ { "core":"10.3.2.3" } ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": { "type": "null" } }, "tests": [ { "description": "allows null values", "data": {"foo": null}, "valid": true } ] }, { "description": "additionalProperties with propertyNames", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "propertyNames": { "maxLength": 5 }, "additionalProperties": { "type": "number" } }, "tests": [ { "description": "Valid against both keywords", "data": { "apple": 4 }, "valid": true }, { "description": "Valid against propertyNames, but not additionalProperties", "data": { "fig": 2, "pear": "available" }, "valid": false } ] }, { "description": "dependentSchemas with additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"foo2": {}}, "dependentSchemas": { "foo" : {}, "foo2": { "properties": { "bar": {} } } }, "additionalProperties": false }, "tests": [ { "description": "additionalProperties doesn't consider dependentSchemas", "data": {"foo": ""}, "valid": false }, { "description": "additionalProperties can't see bar", "data": {"bar": ""}, "valid": false }, { "description": "additionalProperties can't see bar even when foo2 is present", "data": {"foo2": "", "bar": ""}, "valid": false } ] } ] cross-draft.json100640000766000024 115415240201330 27134 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "refs to historic drafts are processed as historic drafts", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "array", "$ref": "http://localhost:1234/draft2019-09/ignore-prefixItems.json" }, "tests": [ { "description": "first item not a string is valid", "comment": "if the implementation is not processing the $ref as a 2019-09 schema, this test will fail", "data": [1, 2, 3], "valid": true } ] } ] date.json100640000766000024 3546515240201330 27146 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of date strings", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "date" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date string", "data": "1963-06-19", "valid": true }, { "description": "a valid date string with 31 days in January", "data": "2020-01-31", "valid": true }, { "description": "a invalid date string with 32 days in January", "data": "2020-01-32", "valid": false }, { "description": "a valid date string with 28 days in February (normal)", "data": "2021-02-28", "valid": true }, { "description": "a invalid date string with 30 days in February (leap)", "data": "2020-02-30", "valid": false }, { "description": "a valid date string with 31 days in March", "data": "2020-03-31", "valid": true }, { "description": "a invalid date string with 32 days in March", "data": "2020-03-32", "valid": false }, { "description": "a valid date string with 30 days in April", "data": "2020-04-30", "valid": true }, { "description": "a invalid date string with 31 days in April", "data": "2020-04-31", "valid": false }, { "description": "a valid date string with 31 days in May", "data": "2020-05-31", "valid": true }, { "description": "a invalid date string with 32 days in May", "data": "2020-05-32", "valid": false }, { "description": "a valid date string with 30 days in June", "data": "2020-06-30", "valid": true }, { "description": "a invalid date string with 31 days in June", "data": "2020-06-31", "valid": false }, { "description": "a valid date string with 31 days in July", "data": "2020-07-31", "valid": true }, { "description": "a invalid date string with 32 days in July", "data": "2020-07-32", "valid": false }, { "description": "a valid date string with 31 days in August", "data": "2020-08-31", "valid": true }, { "description": "a invalid date string with 32 days in August", "data": "2020-08-32", "valid": false }, { "description": "a valid date string with 30 days in September", "data": "2020-09-30", "valid": true }, { "description": "a invalid date string with 31 days in September", "data": "2020-09-31", "valid": false }, { "description": "a valid date string with 31 days in October", "data": "2020-10-31", "valid": true }, { "description": "a invalid date string with 32 days in October", "data": "2020-10-32", "valid": false }, { "description": "a valid date string with 30 days in November", "data": "2020-11-30", "valid": true }, { "description": "a invalid date string with 31 days in November", "data": "2020-11-31", "valid": false }, { "description": "a valid date string with 31 days in December", "data": "2020-12-31", "valid": true }, { "description": "a invalid date string with 32 days in December", "data": "2020-12-32", "valid": false }, { "description": "an invalid date string", "data": "06/19/1963", "valid": false }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350", "valid": false }, { "description": "non-padded month dates are not valid", "data": "1998-1-20", "valid": false }, { "description": "non-padded day dates are not valid", "data": "1998-01-1", "valid": false }, { "description": "invalid month", "data": "1998-13-01", "valid": false }, { "description": "2021 is not a leap year", "data": "2021-02-29", "valid": false }, { "description": "2020 is a leap year", "data": "2020-02-29", "valid": true }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1963-06-1৪", "valid": false }, { "description": "invalid: non-ASCII Bengali digit in month field", "data": "2020-0৪-01", "valid": false }, { "description": "ISO8601 / non-RFC3339: YYYYMMDD without dashes (2023-03-28)", "data": "20230328", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number implicit day of week (2023-01-02)", "data": "2023-W01", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number with day of week (2023-03-28)", "data": "2023-W13-2", "valid": false }, { "description": "ISO8601 / non-RFC3339: week number rollover to next year (2023-01-01)", "data": "2022W527", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false }, { "description": "century year 0100 is not a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — 100 % 100 == 0 but 100 % 400 != 0", "data": "0100-02-29", "valid": false }, { "description": "century year 0400 is a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — 400-year cycle boundary", "data": "0400-02-29", "valid": true }, { "description": "century year 2100 is not a leap year", "comment": "https://www.rfc-editor.org/rfc/rfc3339#appendix-C — future century year", "data": "2100-02-29", "valid": false }, { "description": "invalid: leading whitespace is not permitted", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — full-date grammar does not include whitespace", "data": " 2024-01-15", "valid": false }, { "description": "invalid: trailing whitespace is not permitted", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — full-date grammar does not include whitespace", "data": "2024-01-15 ", "valid": false }, { "description": "invalid: month 00 is not valid per date-month range 01-12", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — date-month = 2DIGIT ; 01-12", "data": "2024-00-15", "valid": false }, { "description": "invalid: day 00 is not valid per date-mday minimum of 01", "comment": "https://www.rfc-editor.org/rfc/rfc3339#section-5.6 — date-mday = 2DIGIT ; 01-28/29/30/31", "data": "2024-01-00", "valid": false }, { "description": "invalid: empty string", "data": "", "valid": false }, { "description": "invalid: embedded whitespace between year and month", "data": "2020 -01-01", "valid": false }, { "description": "invalid: trailing character after valid full-date", "data": "2020-01-01X", "valid": false }, { "description": "invalid: trailing Z after full-date", "data": "2020-01-01Z", "valid": false }, { "description": "invalid: full-date followed by space and time component", "data": "2020-01-01 00:00:00Z", "valid": false }, { "description": "valid: four-digit year 0001", "data": "0001-01-01", "valid": true }, { "description": "invalid: two-digit year (N-2 digits)", "data": "20-01-01", "valid": false }, { "description": "invalid: three-digit year (N-1 digits)", "data": "998-01-01", "valid": false }, { "description": "invalid: five-digit year (N+1 digits)", "data": "12020-01-01", "valid": false }, { "description": "invalid: positive sign prefix on year", "data": "+2020-01-01", "valid": false }, { "description": "invalid: negative sign prefix on year", "data": "-2020-01-01", "valid": false }, { "description": "invalid: non-ASCII Bengali digit in year field", "data": "২020-01-01", "valid": false }, { "description": "invalid: alphabetic characters in year field", "data": "YYYY-01-01", "valid": false }, { "description": "invalid: three-digit month (N+1 digits)", "data": "2020-001-01", "valid": false }, { "description": "invalid: alphabetic characters in month field", "data": "2020-MM-01", "valid": false }, { "description": "invalid: three-digit day (N+1 digits)", "data": "2020-01-001", "valid": false }, { "description": "invalid: alphabetic characters in day field", "data": "2020-01-DD", "valid": false }, { "description": "invalid: colon separators", "data": "2020:01:01", "valid": false }, { "description": "invalid: dot separators", "data": "2020.01.01", "valid": false }, { "description": "invalid: space separators", "data": "2020 01 01", "valid": false }, { "description": "invalid: mixed slash and hyphen separators", "data": "2020-01/01", "valid": false }, { "description": "invalid: duplicated first hyphen", "data": "2020--01-01", "valid": false }, { "description": "invalid: duplicated second hyphen", "data": "2020-01--01", "valid": false }, { "description": "valid: date inside the Julian to Gregorian reform gap", "data": "1582-10-10", "valid": true }, { "description": "invalid: year field numerically larger than a 32-bit signed integer", "data": "2147483648-01-01", "valid": false }, { "description": "invalid: character just above '9' as the second digit of the day", "data": "2020-01-0:", "valid": false }, { "description": "invalid: non-ASCII digit leaving ten UTF-8 bytes but eight characters", "data": "\u09e80-01-01", "valid": false }, { "description": "invalid: en dash separators instead of hyphen-minus", "data": "2020\u201301\u201301", "valid": false }, { "description": "invalid: NUL character after an otherwise valid full-date", "data": "2020-01-01\u0000", "valid": false } ] } ] ipv4.json100640000766000024 1624115240201330 27102 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of IP addresses", "comment": "RFC 2673, Section 3.2: dotted-quad = decbyte \".\" decbyte \".\" decbyte \".\" decbyte. A 'decbyte' (1*3DIGIT) restricts semantic values to 0-255, allows leading zeros, and strictly forbids symbols, alpha/hex, whitespace, and non-ASCII characters.", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "ipv4" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IP address", "data": "192.168.0.1", "valid": true }, { "description": "an IP address with too many components", "data": "127.0.0.0.1", "valid": false }, { "description": "an IP address with out-of-range values", "data": "256.256.256.256", "valid": false }, { "description": "an IP address without 4 components", "data": "127.0", "valid": false }, { "description": "a 2-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.1", "valid": false }, { "description": "a 3-part address resolving to a routable IP (inet_aton shorthand)", "data": "127.0.1", "valid": false }, { "description": "an IP address as an integer", "data": "0x7f000001", "valid": false }, { "description": "an IP address as an integer (decimal)", "data": "2130706433", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২7.0.0.1", "valid": false }, { "description": "invalid fullwidth digits (non-ASCII)", "data": "192.168.1.1", "valid": false }, { "description": "invalid mathematical bold digits (non-ASCII)", "data": "𝟏𝟗𝟐.𝟏𝟔𝟖.𝟏.𝟏", "valid": false }, { "description": "netmask is not a part of ipv4 address", "data": "192.168.1.0/24", "valid": false }, { "description": "leading whitespace is invalid", "data": " 192.168.0.1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "192.168.0.1 ", "valid": false }, { "description": "trailing newline is invalid", "data": "192.168.0.1\n", "valid": false }, { "description": "hexadecimal notation is invalid", "data": "0x7f.0.0.1", "valid": false }, { "description": "octal notation explicit is invalid", "data": "0o10.0.0.1", "valid": false }, { "description": "empty part (double dot) is invalid", "data": "192.168..1", "valid": false }, { "description": "leading dot is invalid", "data": ".192.168.0.1", "valid": false }, { "description": "trailing dot is invalid", "data": "192.168.0.1.", "valid": false }, { "description": "minimum valid IPv4 address", "data": "0.0.0.0", "valid": true }, { "description": "maximum valid IPv4 address", "data": "255.255.255.255", "valid": true }, { "description": "valid IPv4 with an octet in the 200 to 249 range", "data": "200.0.0.0", "valid": true }, { "description": "valid IPv4 with two-digit octets", "data": "10.20.30.40", "valid": true }, { "description": "empty string is invalid", "data": "", "valid": false }, { "description": "plus sign is invalid", "data": "+1.2.3.4", "valid": false }, { "description": "negative sign is invalid", "data": "-1.2.3.4", "valid": false }, { "description": "exponential notation is invalid", "data": "1e2.0.0.1", "valid": false }, { "description": "alpha characters are invalid", "data": "192.168.a.1", "valid": false }, { "description": "internal whitespace is invalid", "data": "192. 168.0.1", "valid": false }, { "description": "tab character is invalid", "data": "192.168.0.1\t", "valid": false }, { "description": "additional content after an embedded NUL byte", "data": "192.168.0.1\u0000.evil.com", "valid": false }, { "description": "with port number is invalid", "data": "192.168.0.1:80", "valid": false }, { "description": "an IPv4-mapped IPv6 address is invalid", "data": "::ffff:192.168.0.1", "valid": false }, { "description": "single octet out of range in last position", "data": "192.168.0.256", "valid": false } ] } ] ipv6.json100640000766000024 1556615240201330 27115 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of IPv6 addresses", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "ipv6" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IPv6 address", "data": "::1", "valid": true }, { "description": "a group with 5 hex digits is invalid", "data": "12345::", "valid": false }, { "description": "trailing 4 hex symbols is valid", "data": "::abef", "valid": true }, { "description": "trailing 5 hex symbols is invalid", "data": "::abcef", "valid": false }, { "description": "an IPv6 address with too many components", "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1", "valid": false }, { "description": "an IPv6 address containing illegal characters", "data": "::laptop", "valid": false }, { "description": "no digits is valid", "data": "::", "valid": true }, { "description": "leading colons is valid", "data": "::42:ff:1", "valid": true }, { "description": "trailing colons is valid", "data": "d6::", "valid": true }, { "description": "missing leading octet is invalid", "data": ":2:3:4:5:6:7:8", "valid": false }, { "description": "missing trailing octet is invalid", "data": "1:2:3:4:5:6:7:", "valid": false }, { "description": "missing leading octet with omitted octets later", "data": ":2:3:4::8", "valid": false }, { "description": "single set of double colons in the middle is valid", "data": "1:d6::42", "valid": true }, { "description": "two sets of double colons is invalid", "data": "1::d6::42", "valid": false }, { "description": "mixed format with the ipv4 section as decimal octets", "data": "1::d6:192.168.0.1", "valid": true }, { "description": "mixed format with double colons between the sections", "data": "1:2::192.168.0.1", "valid": true }, { "description": "mixed format with ipv4 section with octet out of range", "data": "1::2:192.168.256.1", "valid": false }, { "description": "mixed format with ipv4 section with a hex octet", "data": "1::2:192.168.ff.1", "valid": false }, { "description": "mixed format with leading double colons (ipv4-mapped ipv6 address)", "data": "::ffff:192.168.0.1", "valid": true }, { "description": "triple colons is invalid", "data": "1:2:3:4:5:::8", "valid": false }, { "description": "8 octets", "data": "1:2:3:4:5:6:7:8", "valid": true }, { "description": "insufficient octets without double colons", "data": "1:2:3:4:5:6:7", "valid": false }, { "description": "no colons is invalid", "data": "1", "valid": false }, { "description": "ipv4 is not ipv6", "data": "127.0.0.1", "valid": false }, { "description": "ipv4 segment must have 4 octets", "data": "1:2:3:4:1.2.3", "valid": false }, { "description": "leading whitespace is invalid", "data": " ::1", "valid": false }, { "description": "trailing whitespace is invalid", "data": "::1 ", "valid": false }, { "description": "netmask is not a part of ipv6 address", "data": "fe80::/64", "valid": false }, { "description": "zone id is not a part of ipv6 address", "data": "fe80::a%eth1", "valid": false }, { "description": "a long valid ipv6", "data": "1000:1000:1000:1000:1000:1000:255.255.255.255", "valid": true }, { "description": "a long invalid ipv6, below length limit, first", "data": "100:100:100:100:100:100:255.255.255.255.255", "valid": false }, { "description": "a long invalid ipv6, below length limit, second", "data": "100:100:100:100:100:100:100:255.255.255.255", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4)", "data": "1:2:3:4:5:6:7:৪", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in the IPv4 portion", "data": "1:2::192.16৪.0.1", "valid": false } ] } ] time.json100640000766000024 2052215240201330 27153 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of time strings", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid time string", "data": "08:30:06Z", "valid": true }, { "description": "invalid time string with extra leading zeros", "data": "008:030:006Z", "valid": false }, { "description": "invalid time string with no leading zero for single digit", "data": "8:3:6Z", "valid": false }, { "description": "hour, minute, second must be two digits", "data": "8:0030:6Z", "valid": false }, { "description": "a valid time string with leap second, Zulu", "data": "23:59:60Z", "valid": true }, { "description": "invalid leap second, Zulu (wrong hour)", "data": "22:59:60Z", "valid": false }, { "description": "invalid leap second, Zulu (wrong minute)", "data": "23:58:60Z", "valid": false }, { "description": "valid leap second, zero time-offset", "data": "23:59:60+00:00", "valid": true }, { "description": "invalid leap second, zero time-offset (wrong hour)", "data": "22:59:60+00:00", "valid": false }, { "description": "invalid leap second, zero time-offset (wrong minute)", "data": "23:58:60+00:00", "valid": false }, { "description": "valid leap second, positive time-offset", "data": "01:29:60+01:30", "valid": true }, { "description": "valid leap second, large positive time-offset", "data": "23:29:60+23:30", "valid": true }, { "description": "invalid leap second, positive time-offset (wrong hour)", "data": "23:59:60+01:00", "valid": false }, { "description": "invalid leap second, positive time-offset (wrong minute)", "data": "23:59:60+00:30", "valid": false }, { "description": "valid leap second, negative time-offset", "data": "15:59:60-08:00", "valid": true }, { "description": "valid leap second, large negative time-offset", "data": "00:29:60-23:30", "valid": true }, { "description": "invalid leap second, negative time-offset (wrong hour)", "data": "23:59:60-01:00", "valid": false }, { "description": "invalid leap second, negative time-offset (wrong minute)", "data": "23:59:60-00:30", "valid": false }, { "description": "a valid time string with second fraction", "data": "23:20:50.52Z", "valid": true }, { "description": "a valid time string with precise second fraction", "data": "08:30:06.283185Z", "valid": true }, { "description": "a valid time string with plus offset", "data": "08:30:06+00:20", "valid": true }, { "description": "a valid time string with minus offset", "data": "08:30:06-08:00", "valid": true }, { "description": "time with unknown local offset is valid", "comment": "RFC 3339 section 4.3 (unknown local offset)", "data": "12:34:56-00:00", "valid": true }, { "description": "hour, minute in time-offset must be two digits", "data": "08:30:06-8:000", "valid": false }, { "description": "a valid time string with case-insensitive Z", "data": "08:30:06z", "valid": true }, { "description": "an invalid time string with invalid hour", "data": "24:00:00Z", "valid": false }, { "description": "an invalid time string with invalid minute", "data": "00:60:00Z", "valid": false }, { "description": "an invalid time string with invalid second", "data": "00:00:61Z", "valid": false }, { "description": "an invalid time string with invalid leap second (wrong hour)", "data": "22:59:60Z", "valid": false }, { "description": "an invalid time string with invalid leap second (wrong minute)", "data": "23:58:60Z", "valid": false }, { "description": "an invalid time string with invalid time numoffset hour", "data": "01:02:03+24:00", "valid": false }, { "description": "an invalid time string with invalid time numoffset minute", "data": "01:02:03+00:60", "valid": false }, { "description": "an invalid time string with invalid time with both Z and numoffset", "data": "01:02:03Z+00:30", "valid": false }, { "description": "an invalid offset indicator", "data": "08:30:06 PST", "valid": false }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "01:01:01,1111", "valid": false }, { "description": "no time offset", "data": "12:00:00", "valid": false }, { "description": "no time offset with second fraction", "data": "12:00:00.52", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "1২:00:00Z", "valid": false }, { "description": "offset not starting with plus or minus", "data": "08:30:06#00:20", "valid": false }, { "description": "contains letters", "data": "ab:cd:ef", "valid": false }, { "description": "an invalid time string in date-time format", "data": "2020-11-28T23:55:45Z", "valid": false } ] } ] uuid.json100640000766000024 1206115240201330 27162 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "uuid format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "uuid" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "all upper-case", "data": "2EB8AA08-AA98-11EA-B4AA-73B441D16380", "valid": true }, { "description": "all lower-case", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d16380", "valid": true }, { "description": "mixed case", "data": "2eb8aa08-AA98-11ea-B4Aa-73B441D16380", "valid": true }, { "description": "all zeroes is valid", "data": "00000000-0000-0000-0000-000000000000", "valid": true }, { "description": "wrong length", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d1638", "valid": false }, { "description": "missing section", "data": "2eb8aa08-aa98-11ea-73b441d16380", "valid": false }, { "description": "bad characters (not hex)", "data": "2eb8aa08-aa98-11ea-b4ga-73b441d16380", "valid": false }, { "description": "no dashes", "data": "2eb8aa08aa9811eab4aa73b441d16380", "valid": false }, { "description": "too few dashes", "data": "2eb8aa08aa98-11ea-b4aa73b441d16380", "valid": false }, { "description": "too many dashes", "data": "2eb8-aa08-aa98-11ea-b4aa73b44-1d16380", "valid": false }, { "description": "dashes in the wrong spot", "data": "2eb8aa08aa9811eab4aa73b441d16380----", "valid": false }, { "description": "shifted dashes", "data": "2eb8aa0-8aa98-11e-ab4aa7-3b441d16380", "valid": false }, { "description": "valid version 4", "data": "98d80576-482e-427f-8434-7f86890ab222", "valid": true }, { "description": "valid version 5", "data": "99c17cbb-656f-564a-940f-1a4568f03487", "valid": true }, { "description": "hypothetical version 6", "data": "99c17cbb-656f-664a-940f-1a4568f03487", "valid": true }, { "description": "hypothetical version 15", "data": "99c17cbb-656f-f64a-940f-1a4568f03487", "valid": true }, { "description": "URN prefixed UUID is invalid", "data": "urn:uuid:2eb8aa08-aa98-11ea-b4aa-73b441d16380", "valid": false }, { "description": "trailing hyphen after a complete UUID is invalid", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d16380-", "valid": false }, { "description": "non-ASCII digit '২' (a Bengali 2) is invalid", "data": "২eb8aa08-aa98-11ea-b4aa-73b441d16380", "valid": false }, { "description": "an underscore in place of a hex digit is invalid", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d1_380", "valid": false }, { "description": "a trailing newline after a complete UUID is invalid", "data": "2eb8aa08-aa98-11ea-b4aa-73b441d16380\n", "valid": false }, { "description": "a variant nibble not defined by RFC 4122 is valid", "data": "2eb8aa08-aa98-11ea-f4aa-73b441d16380", "valid": true } ] } ] ip-address.json100640000766000024 120215240201330 27561 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "validation of IP addresses", "schema": { "format": "ip-address" }, "tests": [ { "description": "a valid IP address", "data": "192.168.0.1", "valid": true }, { "description": "an IP address with too many components", "data": "127.0.0.0.1", "valid": false }, { "description": "an IP address with out-of-range values", "data": "256.256.256.256", "valid": false } ] } ] escape.json100640000766000024 320315240201330 27343 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2019-09/content[ { "description": "tilde and forward slash in json-pointer", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://json-schema.org/tests/content/draft2019-09/escape/0", "properties": { "~a/b": {"type": "number"} } }, "tests": [ { "description": "incorrect type must be reported, but a message is not required", "data": {"~a/b": "foobar"}, "output": { "basic": { "$id": "https://json-schema.org/tests/content/draft2019-09/escape/0/tests/0/basic", "$ref": "/draft/2019-09/output/schema", "properties": { "errors": { "contains": { "properties": { "keywordLocation": {"const": "/properties/~0a~1b/type"}, "absoluteKeywordLocation": {"const": "https://json-schema.org/tests/content/draft2019-09/escape/0#/properties/~0a~1b/type"}, "instanceLocation": {"const": "/~0a~1b"}, "annotation": false }, "required": ["keywordLocation", "instanceLocation"] } } }, "required": ["errors"] } } } ] } ] escape.json100640000766000024 320315240201330 27325 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2020-12/content[ { "description": "tilde and forward slash in json-pointer", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://json-schema.org/tests/content/draft2020-12/escape/0", "properties": { "~a/b": {"type": "number"} } }, "tests": [ { "description": "incorrect type must be reported, but a message is not required", "data": {"~a/b": "foobar"}, "output": { "basic": { "$id": "https://json-schema.org/tests/content/draft2020-12/escape/0/tests/0/basic", "$ref": "/draft/2020-12/output/schema", "properties": { "errors": { "contains": { "properties": { "keywordLocation": {"const": "/properties/~0a~1b/type"}, "absoluteKeywordLocation": {"const": "https://json-schema.org/tests/content/draft2020-12/escape/0#/properties/~0a~1b/type"}, "instanceLocation": {"const": "/~0a~1b"}, "annotation": false }, "required": ["keywordLocation", "instanceLocation"] } } }, "required": ["errors"] } } } ] } ] detached-dynamicref.json100640000766000024 44215240201330 27233 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$id": "http://localhost:1234/draft2020-12/detached-dynamicref.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "foo": { "$dynamicRef": "#detached" }, "detached": { "$dynamicAnchor": "detached", "type": "integer" } } }locationIndependentIdentifier.json100640000766000024 33315240201330 30045 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$schema": "https://json-schema.org/v1", "$defs": { "refToInteger": { "$ref": "#foo" }, "A": { "$anchor": "foo", "type": "integer" } } } nested-absolute-ref-to-string.json100640000766000024 31615240201330 27651 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1{ "$defs": { "bar": { "$id": "http://localhost:1234/v1/the-nested-id.json", "type": "string" } }, "$ref": "http://localhost:1234/v1/the-nested-id.json" } email.json100640000766000024 705315240201330 27306 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of e-mail addresses", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "an invalid e-mail address", "data": "2962", "valid": false }, { "description": "tilde in local part is valid", "data": "te~st@example.com", "valid": true }, { "description": "tilde before local part is valid", "data": "~test@example.com", "valid": true }, { "description": "tilde after local part is valid", "data": "test~@example.com", "valid": true }, { "description": "dot before local part is not valid", "data": ".test@example.com", "valid": false }, { "description": "dot after local part is not valid", "data": "test.@example.com", "valid": false }, { "description": "two separated dots inside local part are valid", "data": "te.s.t@example.com", "valid": true }, { "description": "two subsequent dots inside local part are not valid", "data": "te..st@example.com", "valid": false }, { "description": "two email addresses is not valid", "data": "user1@oceania.org, user2@oceania.org", "valid": false }, { "description": "full \"From\" header is invalid", "data": "\"Winston Smith\" (Records Department)", "valid": false }, { "description": "local part is required", "data": "@example.com", "valid": false }, { "description": "domain is required", "data": "joe.bloggs@", "valid": false }, { "description": "unquoted space in local part is invalid", "data": "joe bloggs@example.com", "valid": false } ] } ] regex.json100640000766000024 275115240201330 27331 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of regular expressions", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "regex" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid regular expression", "data": "([abc])+\\s+$", "valid": true }, { "description": "a regular expression with unclosed parens is invalid", "data": "^(abc]", "valid": false } ] } ] unevaluatedProperties.json100640000766000024 14426215240201330 27540 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "unevaluatedProperties true", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "unevaluatedProperties": true }, "tests": [ { "description": "with no unevaluated properties", "data": {}, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo" }, "valid": true } ] }, { "description": "unevaluatedProperties schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "unevaluatedProperties": { "type": "string", "minLength": 3 } }, "tests": [ { "description": "with no unevaluated properties", "data": {}, "valid": true }, { "description": "with valid unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with invalid unevaluated properties", "data": { "foo": "fo" }, "valid": false } ] }, { "description": "unevaluatedProperties false", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": {}, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo" }, "valid": false } ] }, { "description": "unevaluatedProperties with adjacent properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with adjacent patternProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "patternProperties": { "^foo": { "type": "string" } }, "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with adjacent bool additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "additionalProperties": true, "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with adjacent non-bool additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "additionalProperties": {"type": "string"}, "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with nested properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "properties": { "bar": { "type": "string" } } } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with nested patternProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "patternProperties": { "^bar": { "type": "string" } } } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with nested additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "additionalProperties": true } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with nested unevaluatedProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "unevaluatedProperties": true } ], "unevaluatedProperties": { "type": "string", "maxLength": 2 } }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with anyOf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "anyOf": [ { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] }, { "properties": { "baz": { "const": "baz" } }, "required": ["baz"] }, { "properties": { "quux": { "const": "quux" } }, "required": ["quux"] } ], "unevaluatedProperties": false }, "tests": [ { "description": "when one matches and has no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "when one matches and has unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "not-baz" }, "valid": false }, { "description": "when two match and has no unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": true }, { "description": "when two match and has unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz", "quux": "not-quux" }, "valid": false } ] }, { "description": "unevaluatedProperties with oneOf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "oneOf": [ { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] }, { "properties": { "baz": { "const": "baz" } }, "required": ["baz"] } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "quux": "quux" }, "valid": false } ] }, { "description": "unevaluatedProperties with not", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "not": { "not": { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] } }, "unevaluatedProperties": false }, "tests": [ { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with if/then/else", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "if": { "properties": { "foo": { "const": "then" } }, "required": ["foo"] }, "then": { "properties": { "bar": { "type": "string" } }, "required": ["bar"] }, "else": { "properties": { "baz": { "type": "string" } }, "required": ["baz"] }, "unevaluatedProperties": false }, "tests": [ { "description": "when if is true and has no unevaluated properties", "data": { "foo": "then", "bar": "bar" }, "valid": true }, { "description": "when if is true and has unevaluated properties", "data": { "foo": "then", "bar": "bar", "baz": "baz" }, "valid": false }, { "description": "when if is false and has no unevaluated properties", "data": { "baz": "baz" }, "valid": true }, { "description": "when if is false and has unevaluated properties", "data": { "foo": "else", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with if/then/else, then not defined", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "if": { "properties": { "foo": { "const": "then" } }, "required": ["foo"] }, "else": { "properties": { "baz": { "type": "string" } }, "required": ["baz"] }, "unevaluatedProperties": false }, "tests": [ { "description": "when if is true and has no unevaluated properties", "data": { "foo": "then" }, "valid": true }, { "description": "when if is true and has unevaluated properties", "data": { "foo": "then", "bar": "bar" }, "valid": false }, { "description": "when if is false and has no unevaluated properties", "data": { "baz": "baz" }, "valid": true }, { "description": "when if is false and has unevaluated properties", "data": { "foo": "else", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with if/then/else, else not defined", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "if": { "properties": { "foo": { "const": "then" } }, "required": ["foo"] }, "then": { "properties": { "bar": { "type": "string" } }, "required": ["bar"] }, "unevaluatedProperties": false }, "tests": [ { "description": "when if is true and has no unevaluated properties", "data": { "foo": "then", "bar": "bar" }, "valid": true }, { "description": "when if is true and has unevaluated properties", "data": { "foo": "then", "bar": "bar", "baz": "baz" }, "valid": false }, { "description": "when if is false and has no unevaluated properties", "data": { "baz": "baz" }, "valid": false }, { "description": "when if is false and has unevaluated properties", "data": { "foo": "else", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with dependentSchemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "dependentSchemas": { "foo": { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] } }, "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with boolean schemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [true], "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with unevaluated properties", "data": { "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "$ref": "#/$defs/bar", "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false, "$defs": { "bar": { "properties": { "bar": { "type": "string" } } } } }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties before $ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "unevaluatedProperties": false, "properties": { "foo": { "type": "string" } }, "$ref": "#/$defs/bar", "$defs": { "bar": { "properties": { "bar": { "type": "string" } } } } }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with $recursiveRef", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://example.com/unevaluated-properties-with-recursive-ref/extended-tree", "$recursiveAnchor": true, "$ref": "./tree", "properties": { "name": { "type": "string" } }, "$defs": { "tree": { "$id": "./tree", "$recursiveAnchor": true, "type": "object", "properties": { "node": true, "branches": { "$comment": "unevaluatedProperties comes first so it's more likely to bugs errors with implementations that are sensitive to keyword ordering", "unevaluatedProperties": false, "$recursiveRef": "#" } }, "required": ["node"] } } }, "tests": [ { "description": "with no unevaluated properties", "data": { "name": "a", "node": 1, "branches": { "name": "b", "node": 2 } }, "valid": true }, { "description": "with unevaluated properties", "data": { "name": "a", "node": 1, "branches": { "foo": "b", "node": 2 } }, "valid": false } ] }, { "description": "unevaluatedProperties can't see inside cousins", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "properties": { "foo": true } }, { "unevaluatedProperties": false } ] }, "tests": [ { "description": "always fails", "data": { "foo": 1 }, "valid": false } ] }, { "description": "unevaluatedProperties can't see inside cousins (reverse order)", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "allOf": [ { "unevaluatedProperties": false }, { "properties": { "foo": true } } ] }, "tests": [ { "description": "always fails", "data": { "foo": 1 }, "valid": false } ] }, { "description": "nested unevaluatedProperties, outer false, inner true, properties outside", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "unevaluatedProperties": true } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "nested unevaluatedProperties, outer false, inner true, properties inside", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "allOf": [ { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": true } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "nested unevaluatedProperties, outer true, inner false, properties outside", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "allOf": [ { "unevaluatedProperties": false } ], "unevaluatedProperties": true }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": false }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "nested unevaluatedProperties, outer true, inner false, properties inside", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "allOf": [ { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false } ], "unevaluatedProperties": true }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "cousin unevaluatedProperties, true and false, true with properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "allOf": [ { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": true }, { "unevaluatedProperties": false } ] }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": false }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "cousin unevaluatedProperties, true and false, false with properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "allOf": [ { "unevaluatedProperties": true }, { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false } ] }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "property is evaluated in an uncle schema to unevaluatedProperties", "comment": "see https://stackoverflow.com/questions/66936884/deeply-nested-unevaluatedproperties-and-their-expectations", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": { "type": "object", "properties": { "bar": { "type": "string" } }, "unevaluatedProperties": false } }, "anyOf": [ { "properties": { "foo": { "properties": { "faz": { "type": "string" } } } } } ] }, "tests": [ { "description": "no extra properties", "data": { "foo": { "bar": "test" } }, "valid": true }, { "description": "uncle keyword evaluation is not significant", "data": { "foo": { "bar": "test", "faz": "test" } }, "valid": false } ] }, { "description": "in-place applicator siblings, allOf has unevaluated", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "allOf": [ { "properties": { "foo": true }, "unevaluatedProperties": false } ], "anyOf": [ { "properties": { "bar": true } } ] }, "tests": [ { "description": "base case: both properties present", "data": { "foo": 1, "bar": 1 }, "valid": false }, { "description": "in place applicator siblings, bar is missing", "data": { "foo": 1 }, "valid": true }, { "description": "in place applicator siblings, foo is missing", "data": { "bar": 1 }, "valid": false } ] }, { "description": "in-place applicator siblings, anyOf has unevaluated", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "allOf": [ { "properties": { "foo": true } } ], "anyOf": [ { "properties": { "bar": true }, "unevaluatedProperties": false } ] }, "tests": [ { "description": "base case: both properties present", "data": { "foo": 1, "bar": 1 }, "valid": false }, { "description": "in place applicator siblings, bar is missing", "data": { "foo": 1 }, "valid": false }, { "description": "in place applicator siblings, foo is missing", "data": { "bar": 1 }, "valid": true } ] }, { "description": "unevaluatedProperties + single cyclic ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "x": { "$ref": "#" } }, "unevaluatedProperties": false }, "tests": [ { "description": "Empty is valid", "data": {}, "valid": true }, { "description": "Single is valid", "data": { "x": {} }, "valid": true }, { "description": "Unevaluated on 1st level is invalid", "data": { "x": {}, "y": {} }, "valid": false }, { "description": "Nested is valid", "data": { "x": { "x": {} } }, "valid": true }, { "description": "Unevaluated on 2nd level is invalid", "data": { "x": { "x": {}, "y": {} } }, "valid": false }, { "description": "Deep nested is valid", "data": { "x": { "x": { "x": {} } } }, "valid": true }, { "description": "Unevaluated on 3rd level is invalid", "data": { "x": { "x": { "x": {}, "y": {} } } }, "valid": false } ] }, { "description": "unevaluatedProperties + ref inside allOf / oneOf", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "one": { "properties": { "a": true } }, "two": { "required": ["x"], "properties": { "x": true } } }, "allOf": [ { "$ref": "#/$defs/one" }, { "properties": { "b": true } }, { "oneOf": [ { "$ref": "#/$defs/two" }, { "required": ["y"], "properties": { "y": true } } ] } ], "unevaluatedProperties": false }, "tests": [ { "description": "Empty is invalid (no x or y)", "data": {}, "valid": false }, { "description": "a and b are invalid (no x or y)", "data": { "a": 1, "b": 1 }, "valid": false }, { "description": "x and y are invalid", "data": { "x": 1, "y": 1 }, "valid": false }, { "description": "a and x are valid", "data": { "a": 1, "x": 1 }, "valid": true }, { "description": "a and y are valid", "data": { "a": 1, "y": 1 }, "valid": true }, { "description": "a and b and x are valid", "data": { "a": 1, "b": 1, "x": 1 }, "valid": true }, { "description": "a and b and y are valid", "data": { "a": 1, "b": 1, "y": 1 }, "valid": true }, { "description": "a and b and x and y are invalid", "data": { "a": 1, "b": 1, "x": 1, "y": 1 }, "valid": false } ] }, { "description": "dynamic evalation inside nested refs", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "one": { "oneOf": [ { "$ref": "#/$defs/two" }, { "required": ["b"], "properties": { "b": true } }, { "required": ["xx"], "patternProperties": { "x": true } }, { "required": ["all"], "unevaluatedProperties": true } ] }, "two": { "oneOf": [ { "required": ["c"], "properties": { "c": true } }, { "required": ["d"], "properties": { "d": true } } ] } }, "oneOf": [ { "$ref": "#/$defs/one" }, { "required": ["a"], "properties": { "a": true } } ], "unevaluatedProperties": false }, "tests": [ { "description": "Empty is invalid", "data": {}, "valid": false }, { "description": "a is valid", "data": { "a": 1 }, "valid": true }, { "description": "b is valid", "data": { "b": 1 }, "valid": true }, { "description": "c is valid", "data": { "c": 1 }, "valid": true }, { "description": "d is valid", "data": { "d": 1 }, "valid": true }, { "description": "a + b is invalid", "data": { "a": 1, "b": 1 }, "valid": false }, { "description": "a + c is invalid", "data": { "a": 1, "c": 1 }, "valid": false }, { "description": "a + d is invalid", "data": { "a": 1, "d": 1 }, "valid": false }, { "description": "b + c is invalid", "data": { "b": 1, "c": 1 }, "valid": false }, { "description": "b + d is invalid", "data": { "b": 1, "d": 1 }, "valid": false }, { "description": "c + d is invalid", "data": { "c": 1, "d": 1 }, "valid": false }, { "description": "xx is valid", "data": { "xx": 1 }, "valid": true }, { "description": "xx + foox is valid", "data": { "xx": 1, "foox": 1 }, "valid": true }, { "description": "xx + foo is invalid", "data": { "xx": 1, "foo": 1 }, "valid": false }, { "description": "xx + a is invalid", "data": { "xx": 1, "a": 1 }, "valid": false }, { "description": "xx + b is invalid", "data": { "xx": 1, "b": 1 }, "valid": false }, { "description": "xx + c is invalid", "data": { "xx": 1, "c": 1 }, "valid": false }, { "description": "xx + d is invalid", "data": { "xx": 1, "d": 1 }, "valid": false }, { "description": "all is valid", "data": { "all": 1 }, "valid": true }, { "description": "all + foo is valid", "data": { "all": 1, "foo": 1 }, "valid": true }, { "description": "all + a is invalid", "data": { "all": 1, "a": 1 }, "valid": false } ] }, { "description": "non-object instances are valid", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unevaluatedProperties": false }, "tests": [ { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "unevaluatedProperties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unevaluatedProperties": { "type": "null" } }, "tests": [ { "description": "allows null valued properties", "data": {"foo": null}, "valid": true } ] }, { "description": "unevaluatedProperties not affected by propertyNames", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "propertyNames": {"maxLength": 1}, "unevaluatedProperties": { "type": "number" } }, "tests": [ { "description": "allows only number properties", "data": {"a": 1}, "valid": true }, { "description": "string property is invalid", "data": {"a": "b"}, "valid": false } ] }, { "description": "unevaluatedProperties can see annotations from if without then and else", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "if": { "patternProperties": { "foo": { "type": "string" } } }, "unevaluatedProperties": false }, "tests": [ { "description": "valid in case if is evaluated", "data": { "foo": "a" }, "valid": true }, { "description": "invalid in case if is evaluated", "data": { "bar": "a" }, "valid": false } ] }, { "description": "dependentSchemas with unevaluatedProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": {"foo2": {}}, "dependentSchemas": { "foo" : {}, "foo2": { "properties": { "bar":{} } } }, "unevaluatedProperties": false }, "tests": [ { "description": "unevaluatedProperties doesn't consider dependentSchemas", "data": {"foo": ""}, "valid": false }, { "description": "unevaluatedProperties doesn't see bar when foo2 is absent", "data": {"bar": ""}, "valid": false }, { "description": "unevaluatedProperties sees bar when foo2 is present", "data": { "foo2": "", "bar": ""}, "valid": true } ] }, { "description": "Evaluated properties collection needs to consider instance location", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": { "properties": { "bar": { "type": "string" } } } }, "unevaluatedProperties": false }, "tests": [ { "description": "with an unevaluated property that exists at another location", "data": { "foo": { "bar": "foo" }, "bar": "bar" }, "valid": false } ] }, { "description": "Evaluated properties collection needs to consider instance location with patternProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": { "patternProperties": { "^bar$": { "type": "string" } } } }, "unevaluatedProperties": false }, "tests": [ { "description": "with only the nested evaluated property", "data": { "foo": { "bar": "foo" } }, "valid": true }, { "description": "with an unevaluated property that exists at another location", "data": { "foo": { "bar": "foo" }, "bar": "bar" }, "valid": false } ] }, { "description": "Evaluated properties collection needs to consider instance location with additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": { "additionalProperties": { "type": "string" } } }, "unevaluatedProperties": false }, "tests": [ { "description": "with only the nested evaluated property", "data": { "foo": { "bar": "foo" } }, "valid": true }, { "description": "with an unevaluated property that exists at another location", "data": { "foo": { "bar": "foo" }, "bar": "bar" }, "valid": false } ] } ] email.json100640000766000024 1154015240201330 27304 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of e-mail addresses", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "an invalid e-mail address", "data": "2962", "valid": false }, { "description": "tilde in local part is valid", "data": "te~st@example.com", "valid": true }, { "description": "tilde before local part is valid", "data": "~test@example.com", "valid": true }, { "description": "tilde after local part is valid", "data": "test~@example.com", "valid": true }, { "description": "a quoted string with a space in the local part is valid", "data": "\"joe bloggs\"@example.com", "valid": true }, { "description": "a quoted string with a double dot in the local part is valid", "data": "\"joe..bloggs\"@example.com", "valid": true }, { "description": "a quoted string with a @ in the local part is valid", "data": "\"joe@bloggs\"@example.com", "valid": true }, { "description": "an IPv4-address-literal after the @ is valid", "data": "joe.bloggs@[127.0.0.1]", "valid": true }, { "description": "an IPv6-address-literal after the @ is valid", "data": "joe.bloggs@[IPv6:::1]", "valid": true }, { "description": "dot before local part is not valid", "data": ".test@example.com", "valid": false }, { "description": "dot after local part is not valid", "data": "test.@example.com", "valid": false }, { "description": "two separated dots inside local part are valid", "data": "te.s.t@example.com", "valid": true }, { "description": "two subsequent dots inside local part are not valid", "data": "te..st@example.com", "valid": false }, { "description": "an invalid domain", "data": "joe.bloggs@invalid=domain.com", "valid": false }, { "description": "an invalid IPv4-address-literal", "data": "joe.bloggs@[127.0.0.300]", "valid": false }, { "description": "two email addresses is not valid", "data": "user1@oceania.org, user2@oceania.org", "valid": false }, { "description": "full \"From\" header is invalid", "data": "\"Winston Smith\" (Records Department)", "valid": false }, { "description": "local part is required", "data": "@example.com", "valid": false }, { "description": "domain is required", "data": "joe.bloggs@", "valid": false }, { "description": "unquoted space in local part is invalid", "data": "joe bloggs@example.com", "valid": false } ] } ] regex.json100640000766000024 275115240201330 27313 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of regular expressions", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "regex" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid regular expression", "data": "([abc])+\\s+$", "valid": true }, { "description": "a regular expression with unclosed parens is invalid", "data": "^(abc]", "valid": false } ] } ] unevaluatedProperties.json100640000766000024 14236715240201330 27526 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "unevaluatedProperties true", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedProperties": true }, "tests": [ { "description": "with no unevaluated properties", "data": {}, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo" }, "valid": true } ] }, { "description": "unevaluatedProperties schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedProperties": { "type": "string", "minLength": 3 } }, "tests": [ { "description": "with no unevaluated properties", "data": {}, "valid": true }, { "description": "with valid unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with invalid unevaluated properties", "data": { "foo": "fo" }, "valid": false } ] }, { "description": "unevaluatedProperties false", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": {}, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo" }, "valid": false } ] }, { "description": "unevaluatedProperties with adjacent properties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with adjacent patternProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "patternProperties": { "^foo": { "type": "string" } }, "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with adjacent bool additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "additionalProperties": true, "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with adjacent non-bool additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "foo": { "type": "string" } }, "additionalProperties": {"type": "string"}, "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with nested properties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "allOf": [ { "properties": { "bar": { "type": "string" } } } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with nested patternProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "allOf": [ { "patternProperties": { "^bar": { "type": "string" } } } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with nested additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "allOf": [ { "additionalProperties": true } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no additional properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with additional properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with nested unevaluatedProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "allOf": [ { "unevaluatedProperties": true } ], "unevaluatedProperties": { "type": "string", "maxLength": 2 } }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "unevaluatedProperties with anyOf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "anyOf": [ { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] }, { "properties": { "baz": { "const": "baz" } }, "required": ["baz"] }, { "properties": { "quux": { "const": "quux" } }, "required": ["quux"] } ], "unevaluatedProperties": false }, "tests": [ { "description": "when one matches and has no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "when one matches and has unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "not-baz" }, "valid": false }, { "description": "when two match and has no unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": true }, { "description": "when two match and has unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz", "quux": "not-quux" }, "valid": false } ] }, { "description": "unevaluatedProperties with oneOf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "oneOf": [ { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] }, { "properties": { "baz": { "const": "baz" } }, "required": ["baz"] } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "quux": "quux" }, "valid": false } ] }, { "description": "unevaluatedProperties with not", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "not": { "not": { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] } }, "unevaluatedProperties": false }, "tests": [ { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with if/then/else", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "properties": { "foo": { "const": "then" } }, "required": ["foo"] }, "then": { "properties": { "bar": { "type": "string" } }, "required": ["bar"] }, "else": { "properties": { "baz": { "type": "string" } }, "required": ["baz"] }, "unevaluatedProperties": false }, "tests": [ { "description": "when if is true and has no unevaluated properties", "data": { "foo": "then", "bar": "bar" }, "valid": true }, { "description": "when if is true and has unevaluated properties", "data": { "foo": "then", "bar": "bar", "baz": "baz" }, "valid": false }, { "description": "when if is false and has no unevaluated properties", "data": { "baz": "baz" }, "valid": true }, { "description": "when if is false and has unevaluated properties", "data": { "foo": "else", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with if/then/else, then not defined", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "properties": { "foo": { "const": "then" } }, "required": ["foo"] }, "else": { "properties": { "baz": { "type": "string" } }, "required": ["baz"] }, "unevaluatedProperties": false }, "tests": [ { "description": "when if is true and has no unevaluated properties", "data": { "foo": "then" }, "valid": true }, { "description": "when if is true and has unevaluated properties", "data": { "foo": "then", "bar": "bar" }, "valid": false }, { "description": "when if is false and has no unevaluated properties", "data": { "baz": "baz" }, "valid": true }, { "description": "when if is false and has unevaluated properties", "data": { "foo": "else", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with if/then/else, else not defined", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "properties": { "foo": { "const": "then" } }, "required": ["foo"] }, "then": { "properties": { "bar": { "type": "string" } }, "required": ["bar"] }, "unevaluatedProperties": false }, "tests": [ { "description": "when if is true and has no unevaluated properties", "data": { "foo": "then", "bar": "bar" }, "valid": true }, { "description": "when if is true and has unevaluated properties", "data": { "foo": "then", "bar": "bar", "baz": "baz" }, "valid": false }, { "description": "when if is false and has no unevaluated properties", "data": { "baz": "baz" }, "valid": false }, { "description": "when if is false and has unevaluated properties", "data": { "foo": "else", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with dependentSchemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "dependentSchemas": { "foo": { "properties": { "bar": { "const": "bar" } }, "required": ["bar"] } }, "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with boolean schemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "allOf": [true], "unevaluatedProperties": false }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with unevaluated properties", "data": { "bar": "bar" }, "valid": false } ] }, { "description": "unevaluatedProperties with $ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$ref": "#/$defs/bar", "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false, "$defs": { "bar": { "properties": { "bar": { "type": "string" } } } } }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties before $ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedProperties": false, "properties": { "foo": { "type": "string" } }, "$ref": "#/$defs/bar", "$defs": { "bar": { "properties": { "bar": { "type": "string" } } } } }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties with $dynamicRef", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/unevaluated-properties-with-dynamic-ref/derived", "$ref": "./baseSchema", "$defs": { "derived": { "$dynamicAnchor": "addons", "properties": { "bar": { "type": "string" } } }, "baseSchema": { "$id": "./baseSchema", "$comment": "unevaluatedProperties comes first so it's more likely to catch bugs with implementations that are sensitive to keyword ordering", "unevaluatedProperties": false, "properties": { "foo": { "type": "string" } }, "$dynamicRef": "#addons", "$defs": { "defaultAddons": { "$comment": "Needed to satisfy the bookending requirement", "$dynamicAnchor": "addons" } } } } }, "tests": [ { "description": "with no unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true }, { "description": "with unevaluated properties", "data": { "foo": "foo", "bar": "bar", "baz": "baz" }, "valid": false } ] }, { "description": "unevaluatedProperties can't see inside cousins", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "properties": { "foo": true } }, { "unevaluatedProperties": false } ] }, "tests": [ { "description": "always fails", "data": { "foo": 1 }, "valid": false } ] }, { "description": "unevaluatedProperties can't see inside cousins (reverse order)", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "unevaluatedProperties": false }, { "properties": { "foo": true } } ] }, "tests": [ { "description": "always fails", "data": { "foo": 1 }, "valid": false } ] }, { "description": "nested unevaluatedProperties, outer false, inner true, properties outside", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "allOf": [ { "unevaluatedProperties": true } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "nested unevaluatedProperties, outer false, inner true, properties inside", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": true } ], "unevaluatedProperties": false }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": true } ] }, { "description": "nested unevaluatedProperties, outer true, inner false, properties outside", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "type": "string" } }, "allOf": [ { "unevaluatedProperties": false } ], "unevaluatedProperties": true }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": false }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "nested unevaluatedProperties, outer true, inner false, properties inside", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false } ], "unevaluatedProperties": true }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "cousin unevaluatedProperties, true and false, true with properties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": true }, { "unevaluatedProperties": false } ] }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": false }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "cousin unevaluatedProperties, true and false, false with properties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "unevaluatedProperties": true }, { "properties": { "foo": { "type": "string" } }, "unevaluatedProperties": false } ] }, "tests": [ { "description": "with no nested unevaluated properties", "data": { "foo": "foo" }, "valid": true }, { "description": "with nested unevaluated properties", "data": { "foo": "foo", "bar": "bar" }, "valid": false } ] }, { "description": "property is evaluated in an uncle schema to unevaluatedProperties", "comment": "see https://stackoverflow.com/questions/66936884/deeply-nested-unevaluatedproperties-and-their-expectations", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "properties": { "bar": { "type": "string" } }, "unevaluatedProperties": false } }, "anyOf": [ { "properties": { "foo": { "properties": { "faz": { "type": "string" } } } } } ] }, "tests": [ { "description": "no extra properties", "data": { "foo": { "bar": "test" } }, "valid": true }, { "description": "uncle keyword evaluation is not significant", "data": { "foo": { "bar": "test", "faz": "test" } }, "valid": false } ] }, { "description": "in-place applicator siblings, allOf has unevaluated", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "properties": { "foo": true }, "unevaluatedProperties": false } ], "anyOf": [ { "properties": { "bar": true } } ] }, "tests": [ { "description": "base case: both properties present", "data": { "foo": 1, "bar": 1 }, "valid": false }, { "description": "in place applicator siblings, bar is missing", "data": { "foo": 1 }, "valid": true }, { "description": "in place applicator siblings, foo is missing", "data": { "bar": 1 }, "valid": false } ] }, { "description": "in-place applicator siblings, anyOf has unevaluated", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "properties": { "foo": true } } ], "anyOf": [ { "properties": { "bar": true }, "unevaluatedProperties": false } ] }, "tests": [ { "description": "base case: both properties present", "data": { "foo": 1, "bar": 1 }, "valid": false }, { "description": "in place applicator siblings, bar is missing", "data": { "foo": 1 }, "valid": false }, { "description": "in place applicator siblings, foo is missing", "data": { "bar": 1 }, "valid": true } ] }, { "description": "unevaluatedProperties + single cyclic ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "x": { "$ref": "#" } }, "unevaluatedProperties": false }, "tests": [ { "description": "Empty is valid", "data": {}, "valid": true }, { "description": "Single is valid", "data": { "x": {} }, "valid": true }, { "description": "Unevaluated on 1st level is invalid", "data": { "x": {}, "y": {} }, "valid": false }, { "description": "Nested is valid", "data": { "x": { "x": {} } }, "valid": true }, { "description": "Unevaluated on 2nd level is invalid", "data": { "x": { "x": {}, "y": {} } }, "valid": false }, { "description": "Deep nested is valid", "data": { "x": { "x": { "x": {} } } }, "valid": true }, { "description": "Unevaluated on 3rd level is invalid", "data": { "x": { "x": { "x": {}, "y": {} } } }, "valid": false } ] }, { "description": "unevaluatedProperties + ref inside allOf / oneOf", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "one": { "properties": { "a": true } }, "two": { "required": ["x"], "properties": { "x": true } } }, "allOf": [ { "$ref": "#/$defs/one" }, { "properties": { "b": true } }, { "oneOf": [ { "$ref": "#/$defs/two" }, { "required": ["y"], "properties": { "y": true } } ] } ], "unevaluatedProperties": false }, "tests": [ { "description": "Empty is invalid (no x or y)", "data": {}, "valid": false }, { "description": "a and b are invalid (no x or y)", "data": { "a": 1, "b": 1 }, "valid": false }, { "description": "x and y are invalid", "data": { "x": 1, "y": 1 }, "valid": false }, { "description": "a and x are valid", "data": { "a": 1, "x": 1 }, "valid": true }, { "description": "a and y are valid", "data": { "a": 1, "y": 1 }, "valid": true }, { "description": "a and b and x are valid", "data": { "a": 1, "b": 1, "x": 1 }, "valid": true }, { "description": "a and b and y are valid", "data": { "a": 1, "b": 1, "y": 1 }, "valid": true }, { "description": "a and b and x and y are invalid", "data": { "a": 1, "b": 1, "x": 1, "y": 1 }, "valid": false } ] }, { "description": "dynamic evalation inside nested refs", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "one": { "oneOf": [ { "$ref": "#/$defs/two" }, { "required": ["b"], "properties": { "b": true } }, { "required": ["xx"], "patternProperties": { "x": true } }, { "required": ["all"], "unevaluatedProperties": true } ] }, "two": { "oneOf": [ { "required": ["c"], "properties": { "c": true } }, { "required": ["d"], "properties": { "d": true } } ] } }, "oneOf": [ { "$ref": "#/$defs/one" }, { "required": ["a"], "properties": { "a": true } } ], "unevaluatedProperties": false }, "tests": [ { "description": "Empty is invalid", "data": {}, "valid": false }, { "description": "a is valid", "data": { "a": 1 }, "valid": true }, { "description": "b is valid", "data": { "b": 1 }, "valid": true }, { "description": "c is valid", "data": { "c": 1 }, "valid": true }, { "description": "d is valid", "data": { "d": 1 }, "valid": true }, { "description": "a + b is invalid", "data": { "a": 1, "b": 1 }, "valid": false }, { "description": "a + c is invalid", "data": { "a": 1, "c": 1 }, "valid": false }, { "description": "a + d is invalid", "data": { "a": 1, "d": 1 }, "valid": false }, { "description": "b + c is invalid", "data": { "b": 1, "c": 1 }, "valid": false }, { "description": "b + d is invalid", "data": { "b": 1, "d": 1 }, "valid": false }, { "description": "c + d is invalid", "data": { "c": 1, "d": 1 }, "valid": false }, { "description": "xx is valid", "data": { "xx": 1 }, "valid": true }, { "description": "xx + foox is valid", "data": { "xx": 1, "foox": 1 }, "valid": true }, { "description": "xx + foo is invalid", "data": { "xx": 1, "foo": 1 }, "valid": false }, { "description": "xx + a is invalid", "data": { "xx": 1, "a": 1 }, "valid": false }, { "description": "xx + b is invalid", "data": { "xx": 1, "b": 1 }, "valid": false }, { "description": "xx + c is invalid", "data": { "xx": 1, "c": 1 }, "valid": false }, { "description": "xx + d is invalid", "data": { "xx": 1, "d": 1 }, "valid": false }, { "description": "all is valid", "data": { "all": 1 }, "valid": true }, { "description": "all + foo is valid", "data": { "all": 1, "foo": 1 }, "valid": true }, { "description": "all + a is invalid", "data": { "all": 1, "a": 1 }, "valid": false } ] }, { "description": "non-object instances are valid", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedProperties": false }, "tests": [ { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores strings", "data": "foo", "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "unevaluatedProperties with null valued instance properties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unevaluatedProperties": { "type": "null" } }, "tests": [ { "description": "allows null valued properties", "data": {"foo": null}, "valid": true } ] }, { "description": "unevaluatedProperties not affected by propertyNames", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "propertyNames": {"maxLength": 1}, "unevaluatedProperties": { "type": "number" } }, "tests": [ { "description": "allows only number properties", "data": {"a": 1}, "valid": true }, { "description": "string property is invalid", "data": {"a": "b"}, "valid": false } ] }, { "description": "unevaluatedProperties can see annotations from if without then and else", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "if": { "patternProperties": { "foo": { "type": "string" } } }, "unevaluatedProperties": false }, "tests": [ { "description": "valid in case if is evaluated", "data": { "foo": "a" }, "valid": true }, { "description": "invalid in case if is evaluated", "data": { "bar": "a" }, "valid": false } ] }, { "description": "dependentSchemas with unevaluatedProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {"foo2": {}}, "dependentSchemas": { "foo" : {}, "foo2": { "properties": { "bar":{} } } }, "unevaluatedProperties": false }, "tests": [ { "description": "unevaluatedProperties doesn't consider dependentSchemas", "data": {"foo": ""}, "valid": false }, { "description": "unevaluatedProperties doesn't see bar when foo2 is absent", "data": {"bar": ""}, "valid": false }, { "description": "unevaluatedProperties sees bar when foo2 is present", "data": { "foo2": "", "bar": ""}, "valid": true } ] }, { "description": "Evaluated properties collection needs to consider instance location", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "properties": { "bar": { "type": "string" } } } }, "unevaluatedProperties": false }, "tests": [ { "description": "with an unevaluated property that exists at another location", "data": { "foo": { "bar": "foo" }, "bar": "bar" }, "valid": false } ] }, { "description": "Evaluated properties collection needs to consider instance location with patternProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "patternProperties": { "^bar$": { "type": "string" } } } }, "unevaluatedProperties": false }, "tests": [ { "description": "with only the nested evaluated property", "data": { "foo": { "bar": "foo" } }, "valid": true }, { "description": "with an unevaluated property that exists at another location", "data": { "foo": { "bar": "foo" }, "bar": "bar" }, "valid": false } ] }, { "description": "Evaluated properties collection needs to consider instance location with additionalProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": { "additionalProperties": { "type": "string" } } }, "unevaluatedProperties": false }, "tests": [ { "description": "with only the nested evaluated property", "data": { "foo": { "bar": "foo" } }, "valid": true }, { "description": "with an unevaluated property that exists at another location", "data": { "foo": { "bar": "foo" }, "bar": "bar" }, "valid": false } ] } ] subfolder000755000766000024 015240201330 25447 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource/remotesremote2.json100644000766000024 5615240201330 30020 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource/remotes/subfolder{ "$defs": { "bar": false } } general.json100640000766000024 227215240201330 27525 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2019-09/content[ { "description": "failed validation produces no annotations", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://json-schema.org/tests/content/draft2019-09/general/0", "type": "string", "readOnly": true }, "tests": [ { "description": "readOnly annotation is dropped", "data": 1, "output": { "basic": { "$id": "https://json-schema.org/tests/content/draft2019-09/general/0/tests/0/basic", "$ref": "/draft/2019-09/output/schema", "properties": { "errors": { "items": { "properties": { "annotation": false } } }, "annotations": false }, "required": ["errors"] } } } ] } ] general.json100640000766000024 227215240201330 27507 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2020-12/content[ { "description": "failed validation produces no annotations", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://json-schema.org/tests/content/draft2020-12/general/0", "type": "string", "readOnly": true }, "tests": [ { "description": "readOnly annotation is dropped", "data": 1, "output": { "basic": { "$id": "https://json-schema.org/tests/content/draft2020-12/general/0/tests/0/basic", "$ref": "/draft/2020-12/output/schema", "properties": { "errors": { "items": { "properties": { "annotation": false } } }, "annotations": false }, "required": ["errors"] } } } ] } ] baseUriChangeFolder000755000766000024 015240201330 24354 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotesfolderInteger.json100640000766000024 3215240201330 30127 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/baseUriChangeFolder{ "type": "integer" } non-bmp-regex.json100640000766000024 500015240201330 27373 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "Proper UTF-16 surrogate pair handling: pattern", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "pattern": "^🐲*$" }, "tests": [ { "description": "matches empty", "data": "", "valid": true }, { "description": "matches single", "data": "🐲", "valid": true }, { "description": "matches two", "data": "🐲🐲", "valid": true }, { "description": "doesn't match one", "data": "🐉", "valid": false }, { "description": "doesn't match two", "data": "🐉🐉", "valid": false }, { "description": "doesn't match one ASCII", "data": "D", "valid": false }, { "description": "doesn't match two ASCII", "data": "DD", "valid": false } ] }, { "description": "Proper UTF-16 surrogate pair handling: patternProperties", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "patternProperties": { "^🐲*$": { "type": "integer" } } }, "tests": [ { "description": "matches empty", "data": { "": 1 }, "valid": true }, { "description": "matches single", "data": { "🐲": 1 }, "valid": true }, { "description": "matches two", "data": { "🐲🐲": 1 }, "valid": true }, { "description": "doesn't match one", "data": { "🐲": "hello" }, "valid": false }, { "description": "doesn't match two", "data": { "🐲🐲": "hello" }, "valid": false } ] } ] non-bmp-regex.json100640000766000024 500015240201330 27355 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "Proper UTF-16 surrogate pair handling: pattern", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "pattern": "^🐲*$" }, "tests": [ { "description": "matches empty", "data": "", "valid": true }, { "description": "matches single", "data": "🐲", "valid": true }, { "description": "matches two", "data": "🐲🐲", "valid": true }, { "description": "doesn't match one", "data": "🐉", "valid": false }, { "description": "doesn't match two", "data": "🐉🐉", "valid": false }, { "description": "doesn't match one ASCII", "data": "D", "valid": false }, { "description": "doesn't match two ASCII", "data": "DD", "valid": false } ] }, { "description": "Proper UTF-16 surrogate pair handling: patternProperties", "comment": "Optional because .Net doesn't correctly handle 32-bit Unicode characters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "patternProperties": { "^🐲*$": { "type": "integer" } } }, "tests": [ { "description": "matches empty", "data": { "": 1 }, "valid": true }, { "description": "matches single", "data": { "🐲": 1 }, "valid": true }, { "description": "matches two", "data": { "🐲🐲": 1 }, "valid": true }, { "description": "doesn't match one", "data": { "🐲": "hello" }, "valid": false }, { "description": "doesn't match two", "data": { "🐲🐲": "hello" }, "valid": false } ] } ] json-pointer.json100640000766000024 1571015240201330 30211 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "validation of JSON-pointers (JSON String Representation)", "schema": { "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid JSON-pointer", "data": "/foo/bar~0/baz~1/%a", "valid": true }, { "description": "not a valid JSON-pointer (~ not escaped)", "data": "/foo/bar~", "valid": false }, { "description": "valid JSON-pointer with empty segment", "data": "/foo//bar", "valid": true }, { "description": "valid JSON-pointer with the last empty segment", "data": "/foo/bar/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #1", "data": "", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #2", "data": "/foo", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #3", "data": "/foo/0", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #4", "data": "/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #5", "data": "/a~1b", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #6", "data": "/c%d", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #7", "data": "/e^f", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #8", "data": "/g|h", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #9", "data": "/i\\j", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #10", "data": "/k\"l", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #11", "data": "/ ", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #12", "data": "/m~0n", "valid": true }, { "description": "valid JSON-pointer used adding to the last array position", "data": "/foo/-", "valid": true }, { "description": "valid JSON-pointer (- used as object member name)", "data": "/foo/-/bar", "valid": true }, { "description": "valid JSON-pointer (multiple escaped characters)", "data": "/~1~0~0~1~1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #1", "data": "/~1.1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #2", "data": "/~0.1", "valid": true }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #1", "data": "#", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #2", "data": "#/", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #3", "data": "#a", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #1", "data": "/~0~", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #2", "data": "/~0/~", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #1", "data": "/~2", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #2", "data": "/~-1", "valid": false }, { "description": "not a valid JSON-pointer (multiple characters not escaped)", "data": "/~~", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #1", "data": "a", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #2", "data": "0", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #3", "data": "a/a", "valid": false }, { "description": "valid JSON-pointer (Unicode characters allowed by RFC 6901)", "data": "/foo/bar/😎", "valid": true }, { "description": "valid JSON-pointer (control characters allowed after JSON unescaping)", "data": "/foo\u0000bar\n\tbaz", "valid": true } ] } ] uri-template.json100640000766000024 1455615240201330 30201 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "format: uri-template", "schema": { "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid uri-template", "data": "http://example.com/dictionary/{term:1}/{term}", "valid": true }, { "description": "an invalid uri-template", "data": "http://example.com/dictionary/{term:1}/{term", "valid": false }, { "description": "a valid uri-template without variables", "data": "http://example.com/dictionary", "valid": true }, { "description": "a valid relative uri-template", "data": "dictionary/{term:1}/{term}", "valid": true }, { "description": "an empty expression is invalid", "data": "{}", "valid": false }, { "description": "an empty varspec inside the variable list is invalid", "data": "{a,,b}", "valid": false }, { "description": "a zero prefix max-length is invalid", "data": "{v:0}", "valid": false }, { "description": "a five-digit prefix max-length is invalid", "data": "{v:10000}", "valid": false }, { "description": "an empty string is a valid uri-template", "data": "", "valid": true }, { "description": "an unmatched closing brace is invalid", "data": "foo}bar", "valid": false }, { "description": "a percent-encoded triplet in a literal is valid", "data": "a%41b", "valid": true }, { "description": "a supplementary plane character in a literal is valid", "data": "a\ud83d\ude00b", "valid": true }, { "description": "reserved expansion operator", "data": "{+var}", "valid": true }, { "description": "fragment expansion operator", "data": "{#var}", "valid": true }, { "description": "label expansion operator", "data": "{.var}", "valid": true }, { "description": "path segment expansion operator", "data": "{/var}", "valid": true }, { "description": "path style parameter expansion operator", "data": "{;var}", "valid": true }, { "description": "form style query expansion operator", "data": "{?var}", "valid": true }, { "description": "form style query continuation operator", "data": "{&var}", "valid": true }, { "description": "the explode modifier is valid", "data": "{var*}", "valid": true }, { "description": "a variable list with more than one varspec is valid", "data": "{x,y}", "valid": true }, { "description": "a dotted variable name is valid", "data": "{a.b}", "valid": true }, { "description": "a double dot in a variable name is invalid", "data": "{a..b}", "valid": false }, { "description": "a variable name may start with a percent-encoded triplet", "data": "{%41}", "valid": true }, { "description": "a four-digit prefix max-length is valid", "data": "{v:1000}", "valid": true }, { "description": "a leading zero in the prefix max-length is invalid", "data": "{v:01}", "valid": false }, { "description": "a space in a literal is invalid", "data": "a b", "valid": false }, { "description": "a delete character in a literal is invalid", "data": "a\u007fb", "valid": false }, { "description": "a trailing comma in the variable list is invalid", "data": "{a,}", "valid": false }, { "description": "a default value in a varspec is invalid", "data": "{var=def}", "valid": false }, { "description": "an operator in place of the first varspec is invalid", "data": "{,+var}", "valid": false }, { "description": "an apostrophe in a literal is valid", "data": "a'b", "valid": true } ] } ] idn-hostname.json100640000766000024 5631615240201330 30160 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of internationalized host names", "schema": { "format": "idn-hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name (example.test in Hangul)", "data": "실례.테스트", "valid": true }, { "description": "illegal first char U+302E Hangul single dot tone mark", "data": "〮실례.테스트", "valid": false }, { "description": "contains illegal char U+302E Hangul single dot tone mark", "data": "실〮례.테스트", "valid": false }, { "description": "a single label of 63 characters is valid", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": true }, { "description": "a single label of 64 characters is too long", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": false }, { "description": "invalid label, correct Punycode", "comment": "https://tools.ietf.org/html/rfc5890#section-2.3.2.1 https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc3492#section-7.1", "data": "-> $1.00 <--", "valid": false }, { "description": "valid Chinese Punycode", "comment": "https://tools.ietf.org/html/rfc5890#section-2.3.2.1 https://tools.ietf.org/html/rfc5891#section-4.4", "data": "xn--ihqwcrb4cv8a8dqg056pqjye", "valid": true }, { "description": "invalid Punycode", "comment": "https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "xn--X", "valid": false }, { "description": "U-label contains \"--\" in the 3rd and 4th position", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "XN--aa---o47jg78q", "valid": false }, { "description": "U-label starts with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "-hello", "valid": false }, { "description": "U-label ends with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "hello-", "valid": false }, { "description": "U-label starts and ends with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "-hello-", "valid": false }, { "description": "Begins with a Spacing Combining Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0903hello", "valid": false }, { "description": "Begins with a Nonspacing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0300hello", "valid": false }, { "description": "Begins with an Enclosing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0488hello", "valid": false }, { "description": "Exceptions that are PVALID, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u00df\u03c2\u0f0b\u3007", "valid": true }, { "description": "Exceptions that are PVALID, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u06fd\u06fe", "valid": true }, { "description": "Exceptions that are DISALLOWED, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u0640\u07fa", "valid": false }, { "description": "Exceptions that are DISALLOWED, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6 Note: The two combining marks (U+302E and U+302F) are in the middle and not at the start", "data": "\u3031\u3032\u3033\u3034\u3035\u302e\u302f\u303b", "valid": false }, { "description": "MIDDLE DOT with no preceding 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "a\u00b7l", "valid": false }, { "description": "MIDDLE DOT with nothing preceding", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "\u00b7l", "valid": false }, { "description": "MIDDLE DOT with no following 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7a", "valid": false }, { "description": "MIDDLE DOT with nothing following", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7", "valid": false }, { "description": "MIDDLE DOT with surrounding 'l's", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7l", "valid": true }, { "description": "Greek KERAIA not followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375S", "valid": false }, { "description": "Greek KERAIA not followed by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375", "valid": false }, { "description": "Greek KERAIA followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375\u03b2", "valid": true }, { "description": "Hebrew GERESH not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "A\u05f3\u05d1", "valid": false }, { "description": "Hebrew GERESH not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "\u05f3\u05d1", "valid": false }, { "description": "Hebrew GERESH preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "\u05d0\u05f3\u05d1", "valid": true }, { "description": "Hebrew GERSHAYIM not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "A\u05f4\u05d1", "valid": false }, { "description": "Hebrew GERSHAYIM not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "\u05f4\u05d1", "valid": false }, { "description": "Hebrew GERSHAYIM preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "\u05d0\u05f4\u05d1", "valid": true }, { "description": "KATAKANA MIDDLE DOT with no Hiragana, Katakana, or Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "def\u30fbabc", "valid": false }, { "description": "KATAKANA MIDDLE DOT with no other characters", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb", "valid": false }, { "description": "KATAKANA MIDDLE DOT with Hiragana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u3041", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Katakana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u30a1", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u4e08", "valid": true }, { "description": "Arabic-Indic digits mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "\u0628\u0660\u06f0", "valid": false }, { "description": "Arabic-Indic digits not mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "\u0628\u0660\u0628", "valid": true }, { "description": "Extended Arabic-Indic digits not mixed with Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.9", "data": "\u06f00", "valid": true }, { "description": "ZERO WIDTH JOINER not preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u0915\u200d\u0937", "valid": false }, { "description": "ZERO WIDTH JOINER not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u200d\u0937", "valid": false }, { "description": "ZERO WIDTH JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u0915\u094d\u200d\u0937", "valid": true }, { "description": "ZERO WIDTH NON-JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1", "data": "\u0915\u094d\u200c\u0937", "valid": true }, { "description": "ZERO WIDTH NON-JOINER not preceded by Virama but matches regexp", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1 https://www.w3.org/TR/alreq/#h_disjoining_enforcement", "data": "\u0628\u064a\u200c\u0628\u064a", "valid": true }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "zero width non-joiner must pass at every occurrence", "comment": "https://www.rfc-editor.org/rfc/rfc5892#appendix-A.1", "data": "\u0915\u094d\u200c\u0937x\u200cy", "valid": false }, { "description": "Bidi domain name with a digit-first label is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2 a label in a Bidi domain name must start with an L, R or AL character", "data": "0a.\u05d0", "valid": false }, { "description": "label starting with a digit before a right-to-left letter is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "0\u0627", "valid": false }, { "description": "left-to-right label containing a right-to-left letter is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "a\u05d0", "valid": false }, { "description": "right-to-left label mixing both digit types is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "\u05d00\u0660", "valid": false }, { "description": "A-label that decodes to a disallowed code point is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 https://www.rfc-editor.org/rfc/rfc5892#section-2.6", "data": "xn--7a", "valid": false }, { "description": "A-label that decodes to a Bidi rule violation is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 https://www.rfc-editor.org/rfc/rfc5893", "data": "xn--0ca24w", "valid": false }, { "description": "a U-label whose A-label form is longer than 63 octets is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5891#section-4.2.4 the 63-octet limit is on the A-label form, not the code point count", "data": "\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc", "valid": false }, { "description": "empty label between two dots is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc1034#section-3.1", "data": "a..b", "valid": false }, { "description": "a name longer than 253 characters is invalid", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": false }, { "description": "A-label that decodes to only ASCII is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 a U-label must have at least one non-ASCII character", "data": "xn--example-", "valid": false }, { "description": "non-canonical Punycode that does not re-encode to itself is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5891#section-5.4 a label decoded from Punycode must be identical to the original A-label", "data": "xn---9uc", "valid": false } ] }, { "description": "validation of separators in internationalized host names", "specification": [ {"rfc3490": "3.1", "quote": "Whenever dots are used as label separators, the following characters MUST be recognized as dots: U+002E (full stop), U+3002 (ideographic full stop), U+FF0E (fullwidth full stop), U+FF61(halfwidth ideographic full stop)"} ], "schema": { "format": "idn-hostname" }, "tests": [ { "description": "single dot", "data": ".", "valid": false }, { "description": "single ideographic full stop", "data": "\u3002", "valid": false }, { "description": "single fullwidth full stop", "data": "\uff0e", "valid": false }, { "description": "single halfwidth ideographic full stop", "data": "\uff61", "valid": false }, { "description": "dot as label separator", "data": "a.b", "valid": true }, { "description": "ideographic full stop as label separator", "data": "a\u3002b", "valid": true }, { "description": "fullwidth full stop as label separator", "data": "a\uff0eb", "valid": true }, { "description": "halfwidth ideographic full stop as label separator", "data": "a\uff61b", "valid": true }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "leading ideographic full stop", "data": "\u3002example", "valid": false }, { "description": "leading fullwidth full stop", "data": "\uff0eexample", "valid": false }, { "description": "leading halfwidth ideographic full stop", "data": "\uff61example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "trailing ideographic full stop", "data": "example\u3002", "valid": false }, { "description": "trailing fullwidth full stop", "data": "example\uff0e", "valid": false }, { "description": "trailing halfwidth ideographic full stop", "data": "example\uff61", "valid": false }, { "description": "label too long if separator ignored (full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα.com", "valid": true }, { "description": "label too long if separator ignored (ideographic full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\u3002com", "valid": true }, { "description": "label too long if separator ignored (fullwidth full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\uff0ecom", "valid": true }, { "description": "label too long if separator ignored (halfwidth ideographic full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\uff61com", "valid": true } ] } ] json-pointer.json100640000766000024 1571015240201330 30212 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of JSON-pointers (JSON String Representation)", "schema": { "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid JSON-pointer", "data": "/foo/bar~0/baz~1/%a", "valid": true }, { "description": "not a valid JSON-pointer (~ not escaped)", "data": "/foo/bar~", "valid": false }, { "description": "valid JSON-pointer with empty segment", "data": "/foo//bar", "valid": true }, { "description": "valid JSON-pointer with the last empty segment", "data": "/foo/bar/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #1", "data": "", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #2", "data": "/foo", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #3", "data": "/foo/0", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #4", "data": "/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #5", "data": "/a~1b", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #6", "data": "/c%d", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #7", "data": "/e^f", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #8", "data": "/g|h", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #9", "data": "/i\\j", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #10", "data": "/k\"l", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #11", "data": "/ ", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #12", "data": "/m~0n", "valid": true }, { "description": "valid JSON-pointer used adding to the last array position", "data": "/foo/-", "valid": true }, { "description": "valid JSON-pointer (- used as object member name)", "data": "/foo/-/bar", "valid": true }, { "description": "valid JSON-pointer (multiple escaped characters)", "data": "/~1~0~0~1~1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #1", "data": "/~1.1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #2", "data": "/~0.1", "valid": true }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #1", "data": "#", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #2", "data": "#/", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #3", "data": "#a", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #1", "data": "/~0~", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #2", "data": "/~0/~", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #1", "data": "/~2", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #2", "data": "/~-1", "valid": false }, { "description": "not a valid JSON-pointer (multiple characters not escaped)", "data": "/~~", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #1", "data": "a", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #2", "data": "0", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #3", "data": "a/a", "valid": false }, { "description": "valid JSON-pointer (Unicode characters allowed by RFC 6901)", "data": "/foo/bar/😎", "valid": true }, { "description": "valid JSON-pointer (control characters allowed after JSON unescaping)", "data": "/foo\u0000bar\n\tbaz", "valid": true } ] } ] uri-template.json100640000766000024 1455615240201330 30202 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "format: uri-template", "schema": { "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid uri-template", "data": "http://example.com/dictionary/{term:1}/{term}", "valid": true }, { "description": "an invalid uri-template", "data": "http://example.com/dictionary/{term:1}/{term", "valid": false }, { "description": "a valid uri-template without variables", "data": "http://example.com/dictionary", "valid": true }, { "description": "a valid relative uri-template", "data": "dictionary/{term:1}/{term}", "valid": true }, { "description": "an empty expression is invalid", "data": "{}", "valid": false }, { "description": "an empty varspec inside the variable list is invalid", "data": "{a,,b}", "valid": false }, { "description": "a zero prefix max-length is invalid", "data": "{v:0}", "valid": false }, { "description": "a five-digit prefix max-length is invalid", "data": "{v:10000}", "valid": false }, { "description": "an empty string is a valid uri-template", "data": "", "valid": true }, { "description": "an unmatched closing brace is invalid", "data": "foo}bar", "valid": false }, { "description": "a percent-encoded triplet in a literal is valid", "data": "a%41b", "valid": true }, { "description": "a supplementary plane character in a literal is valid", "data": "a\ud83d\ude00b", "valid": true }, { "description": "reserved expansion operator", "data": "{+var}", "valid": true }, { "description": "fragment expansion operator", "data": "{#var}", "valid": true }, { "description": "label expansion operator", "data": "{.var}", "valid": true }, { "description": "path segment expansion operator", "data": "{/var}", "valid": true }, { "description": "path style parameter expansion operator", "data": "{;var}", "valid": true }, { "description": "form style query expansion operator", "data": "{?var}", "valid": true }, { "description": "form style query continuation operator", "data": "{&var}", "valid": true }, { "description": "the explode modifier is valid", "data": "{var*}", "valid": true }, { "description": "a variable list with more than one varspec is valid", "data": "{x,y}", "valid": true }, { "description": "a dotted variable name is valid", "data": "{a.b}", "valid": true }, { "description": "a double dot in a variable name is invalid", "data": "{a..b}", "valid": false }, { "description": "a variable name may start with a percent-encoded triplet", "data": "{%41}", "valid": true }, { "description": "a four-digit prefix max-length is valid", "data": "{v:1000}", "valid": true }, { "description": "a leading zero in the prefix max-length is invalid", "data": "{v:01}", "valid": false }, { "description": "a space in a literal is invalid", "data": "a b", "valid": false }, { "description": "a delete character in a literal is invalid", "data": "a\u007fb", "valid": false }, { "description": "a trailing comma in the variable list is invalid", "data": "{a,}", "valid": false }, { "description": "a default value in a varspec is invalid", "data": "{var=def}", "valid": false }, { "description": "an operator in place of the first varspec is invalid", "data": "{,+var}", "valid": false }, { "description": "an apostrophe in a literal is valid", "data": "a'b", "valid": true } ] } ] readOnly.json100640000766000024 317215240201330 27665 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2019-09/content[ { "description": "readOnly generates its value as an annotation", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://json-schema.org/tests/content/draft2019-09/readOnly/0", "readOnly": true }, "tests": [ { "description": "readOnly is true", "data": 1, "output": { "basic": { "$id": "https://json-schema.org/tests/content/draft2019-09/readOnly/0/tests/0/basic", "$ref": "/draft/2019-09/output/schema", "properties": { "annotations": { "contains": { "type": "object", "properties": { "keywordLocation": {"const": "/readOnly"}, "absoluteKeywordLocation": {"const": "https://json-schema.org/tests/content/draft2019-09/readOnly/0#/readOnly"}, "instanceLocation": {"const": ""}, "annotation": {"const": true} }, "required": ["keywordLocation", "instanceLocation", "annotation"] } }, "errors": false }, "required": ["annotations"] } } } ] } ] readOnly.json100640000766000024 310415240201330 27642 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/output-tests/draft2020-12/content[ { "description": "readOnly generates its value as an annotation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://json-schema.org/tests/content/draft2020-12/readOnly/0", "readOnly": true }, "tests": [ { "description": "readOnly is true", "data": 1, "output": { "basic": { "$id": "https://json-schema.org/tests/content/draft2020-12/readOnly/0/tests/0/basic", "$ref": "/draft/2020-12/output/schema", "properties": { "annotations": { "contains": { "properties": { "keywordLocation": {"const": "/readOnly"}, "absoluteKeywordLocation": {"const": "https://json-schema.org/tests/content/draft2020-12/readOnly/0#/readOnly"}, "instanceLocation": {"const": ""}, "annotation": {"const": true} }, "required": ["keywordLocation", "instanceLocation", "annotation"] } }, "errors": false }, "required": ["annotations"] } } } ] } ] foo-ref-string.json100640000766000024 23215240201330 27511 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09/nested{ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "foo": {"$ref": "string.json"} } } format-assertion-true.json100640000766000024 100615240201330 27642 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$id": "http://localhost:1234/draft2020-12/format-assertion-true.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "$vocabulary": { "https://json-schema.org/draft/2020-12/vocab/core": true, "https://json-schema.org/draft/2020-12/vocab/format-assertion": true }, "$dynamicAnchor": "meta", "allOf": [ { "$ref": "https://json-schema.org/draft/2020-12/meta/core" }, { "$ref": "https://json-schema.org/draft/2020-12/meta/format-assertion" } ] } foo-ref-string.json100640000766000024 23215240201330 27473 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12/nested{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "foo": {"$ref": "string.json"} } } infinite-loop-detection.json100640000766000024 203315240201330 27623 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09[ { "description": "evaluating the same schema location against the same data location twice is not a sign of an infinite loop", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "int": { "type": "integer" } }, "allOf": [ { "properties": { "foo": { "$ref": "#/$defs/int" } } }, { "additionalProperties": { "$ref": "#/$defs/int" } } ] }, "tests": [ { "description": "passing case", "data": { "foo": 1 }, "valid": true }, { "description": "failing case", "data": { "foo": "a string" }, "valid": false } ] } ] float-overflow.json100640000766000024 70615240201330 27653 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "all integers are multiples of 0.5, if overflow is handled", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer", "multipleOf": 0.5 }, "tests": [ { "description": "valid if optional overflow handling is implemented", "data": 1e308, "valid": true } ] } ] unknown.json100640000766000024 241615240201330 27714 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "unknown format", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "unknown" }, "tests": [ { "description": "unknown formats ignore integers", "data": 12, "valid": true }, { "description": "unknown formats ignore floats", "data": 13.7, "valid": true }, { "description": "unknown formats ignore objects", "data": {}, "valid": true }, { "description": "unknown formats ignore arrays", "data": [], "valid": true }, { "description": "unknown formats ignore booleans", "data": false, "valid": true }, { "description": "unknown formats ignore nulls", "data": null, "valid": true }, { "description": "unknown formats ignore strings", "data": "string", "valid": true } ] } ] unknownKeyword.json100640000766000024 411315240201330 27765 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "$id inside an unknown keyword is not a real identifier", "comment": "the implementation must not be confused by an $id in locations we do not know how to parse", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "id_in_unknown0": { "not": { "array_of_schemas": [ { "$id": "https://localhost:1234/draft2019-09/unknownKeyword/my_identifier.json", "type": "null" } ] } }, "real_id_in_schema": { "$id": "https://localhost:1234/draft2019-09/unknownKeyword/my_identifier.json", "type": "string" }, "id_in_unknown1": { "not": { "object_of_schemas": { "foo": { "$id": "https://localhost:1234/draft2019-09/unknownKeyword/my_identifier.json", "type": "integer" } } } } }, "anyOf": [ { "$ref": "#/$defs/id_in_unknown0" }, { "$ref": "#/$defs/id_in_unknown1" }, { "$ref": "https://localhost:1234/draft2019-09/unknownKeyword/my_identifier.json" } ] }, "tests": [ { "description": "type matches second anyOf, which has a real schema in it", "data": "a string", "valid": true }, { "description": "type matches non-schema in first anyOf", "data": null, "valid": false }, { "description": "type matches non-schema in third anyOf", "data": 1, "valid": false } ] } ] infinite-loop-detection.json100640000766000024 203315240201330 27605 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12[ { "description": "evaluating the same schema location against the same data location twice is not a sign of an infinite loop", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "int": { "type": "integer" } }, "allOf": [ { "properties": { "foo": { "$ref": "#/$defs/int" } } }, { "additionalProperties": { "$ref": "#/$defs/int" } } ] }, "tests": [ { "description": "passing case", "data": { "foo": 1 }, "valid": true }, { "description": "failing case", "data": { "foo": "a string" }, "valid": false } ] } ] float-overflow.json100640000766000024 72215240201330 27633 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "all integers are multiples of 0.5, if overflow is handled", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer", "multipleOf": 0.5 }, "tests": [ { "description": "valid if optional overflow handling is implemented", "data": 1e308, "valid": true } ] } ] unknown.json100640000766000024 241615240201330 27676 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "unknown format", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "unknown" }, "tests": [ { "description": "unknown formats ignore integers", "data": 12, "valid": true }, { "description": "unknown formats ignore floats", "data": 13.7, "valid": true }, { "description": "unknown formats ignore objects", "data": {}, "valid": true }, { "description": "unknown formats ignore arrays", "data": [], "valid": true }, { "description": "unknown formats ignore booleans", "data": false, "valid": true }, { "description": "unknown formats ignore nulls", "data": null, "valid": true }, { "description": "unknown formats ignore strings", "data": "string", "valid": true } ] } ] unknownKeyword.json100640000766000024 411315240201330 27747 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "$id inside an unknown keyword is not a real identifier", "comment": "the implementation must not be confused by an $id in locations we do not know how to parse", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "id_in_unknown0": { "not": { "array_of_schemas": [ { "$id": "https://localhost:1234/draft2020-12/unknownKeyword/my_identifier.json", "type": "null" } ] } }, "real_id_in_schema": { "$id": "https://localhost:1234/draft2020-12/unknownKeyword/my_identifier.json", "type": "string" }, "id_in_unknown1": { "not": { "object_of_schemas": { "foo": { "$id": "https://localhost:1234/draft2020-12/unknownKeyword/my_identifier.json", "type": "integer" } } } } }, "anyOf": [ { "$ref": "#/$defs/id_in_unknown0" }, { "$ref": "#/$defs/id_in_unknown1" }, { "$ref": "https://localhost:1234/draft2020-12/unknownKeyword/my_identifier.json" } ] }, "tests": [ { "description": "type matches second anyOf, which has a real schema in it", "data": "a string", "valid": true }, { "description": "type matches non-schema in first anyOf", "data": null, "valid": false }, { "description": "type matches non-schema in third anyOf", "data": 1, "valid": false } ] } ] zeroTerminatedFloats.json100640000766000024 60015240201330 30364 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional[ { "description": "some languages do not distinguish between different types of numeric value", "schema": { "type": "integer" }, "tests": [ { "description": "a float is not an integer even without fractional part", "data": 1.0, "valid": false } ] } ] zeroTerminatedFloats.json100640000766000024 60015240201330 30365 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft4/optional[ { "description": "some languages do not distinguish between different types of numeric value", "schema": { "type": "integer" }, "tests": [ { "description": "a float is not an integer even without fractional part", "data": 1.0, "valid": false } ] } ] uri-reference.json100640000766000024 1546415240201330 30323 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft6/optional/format[ { "description": "validation of URI References", "schema": { "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URI", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid relative URI Reference", "data": "/abc", "valid": true }, { "description": "an invalid URI Reference", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "a valid URI Reference", "data": "abc", "valid": true }, { "description": "a valid URI fragment", "data": "#fragment", "valid": true }, { "description": "an invalid URI fragment", "data": "#frag\\ment", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "an empty URI reference", "comment": "RFC 3986, Section 4.2: relative-part includes path-empty, which is zero characters.", "data": "", "valid": true }, { "description": "a query-only reference", "comment": "RFC 3986, Section 4.2: relative-ref = relative-part [ \"?\" query ] [ \"#\" fragment ], so a query with an empty path is a reference.", "data": "?query=1", "valid": true }, { "description": "a network-path reference with an empty authority", "comment": "RFC 3986, Section 3.2.2: host = IP-literal / IPv4address / reg-name, and reg-name may be empty.", "data": "//", "valid": true }, { "description": "an incomplete percent-encoding", "comment": "RFC 3986, Section 2.1: pct-encoded = \"%\" HEXDIG HEXDIG.", "data": "/%zz", "valid": false }, { "description": "a double quote in a path", "comment": "RFC 3986, Appendix A: pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\", and the double quote is in none of them.", "data": "/a\"b", "valid": false }, { "description": "square brackets outside an authority", "comment": "RFC 3986, Section 3.2.2: square brackets are reserved for an IP-literal inside the authority. path-absolute is built from pchar, which excludes them.", "data": "/[::1]", "valid": false }, { "description": "a non-numeric port in a network-path reference", "comment": "RFC 3986, Section 3.2.3: port = *DIGIT. reg-name admits no colon, so the text after the colon can only be a port.", "data": "//example.com:abc/p", "valid": false }, { "description": "more than one at-sign in the authority", "comment": "RFC 3986, Section 3.2: authority = [ userinfo \"@\" ] host [ \":\" port ]. Neither userinfo nor host admits a literal at-sign.", "data": "//a@b@example.com/", "valid": false }, { "description": "a leading zero in the IPv4 part of an IPv6 literal", "comment": "RFC 3986, Section 3.2.2: inside an IP-literal the dotted quad must be an IPv4address, and dec-octet has no leading-zero alternative. There is no reg-name fallback inside brackets.", "data": "//[::ffff:192.168.0.01]/p", "valid": false }, { "description": "a colon in the first segment of a relative-path reference", "comment": "RFC 3986, Section 4.2: relative-part uses path-noscheme, whose first segment is segment-nz-nc - a non-zero-length segment without any colon. A scheme must start with ALPHA, so 1:b cannot be read as a URI either.", "data": "1:b", "valid": false }, { "description": "a colon in the first segment preceded by a dot-segment", "comment": "RFC 3986, Section 4.2: \"Such a segment must be preceded by a dot-segment (e.g., \\\"./this:that\\\") to make a relative-path reference.\"", "data": "./this:that", "valid": true } ] } ] iri-reference.json100640000766000024 431215240201330 30256 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of IRI References", "schema": { "format": "iri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IRI", "data": "http://ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid protocol-relative IRI Reference", "data": "//ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid relative IRI Reference", "data": "/âππ", "valid": true }, { "description": "an invalid IRI Reference", "data": "\\\\WINDOWS\\filëßåré", "valid": false }, { "description": "a valid IRI Reference", "data": "âππ", "valid": true }, { "description": "a valid IRI fragment", "data": "#ƒrägmênt", "valid": true }, { "description": "an invalid IRI fragment", "data": "#ƒräg\\mênt", "valid": false } ] } ] uri-reference.json100640000766000024 1546415240201330 30324 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of URI References", "schema": { "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URI", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid relative URI Reference", "data": "/abc", "valid": true }, { "description": "an invalid URI Reference", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "a valid URI Reference", "data": "abc", "valid": true }, { "description": "a valid URI fragment", "data": "#fragment", "valid": true }, { "description": "an invalid URI fragment", "data": "#frag\\ment", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "an empty URI reference", "comment": "RFC 3986, Section 4.2: relative-part includes path-empty, which is zero characters.", "data": "", "valid": true }, { "description": "a query-only reference", "comment": "RFC 3986, Section 4.2: relative-ref = relative-part [ \"?\" query ] [ \"#\" fragment ], so a query with an empty path is a reference.", "data": "?query=1", "valid": true }, { "description": "a network-path reference with an empty authority", "comment": "RFC 3986, Section 3.2.2: host = IP-literal / IPv4address / reg-name, and reg-name may be empty.", "data": "//", "valid": true }, { "description": "an incomplete percent-encoding", "comment": "RFC 3986, Section 2.1: pct-encoded = \"%\" HEXDIG HEXDIG.", "data": "/%zz", "valid": false }, { "description": "a double quote in a path", "comment": "RFC 3986, Appendix A: pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\", and the double quote is in none of them.", "data": "/a\"b", "valid": false }, { "description": "square brackets outside an authority", "comment": "RFC 3986, Section 3.2.2: square brackets are reserved for an IP-literal inside the authority. path-absolute is built from pchar, which excludes them.", "data": "/[::1]", "valid": false }, { "description": "a non-numeric port in a network-path reference", "comment": "RFC 3986, Section 3.2.3: port = *DIGIT. reg-name admits no colon, so the text after the colon can only be a port.", "data": "//example.com:abc/p", "valid": false }, { "description": "more than one at-sign in the authority", "comment": "RFC 3986, Section 3.2: authority = [ userinfo \"@\" ] host [ \":\" port ]. Neither userinfo nor host admits a literal at-sign.", "data": "//a@b@example.com/", "valid": false }, { "description": "a leading zero in the IPv4 part of an IPv6 literal", "comment": "RFC 3986, Section 3.2.2: inside an IP-literal the dotted quad must be an IPv4address, and dec-octet has no leading-zero alternative. There is no reg-name fallback inside brackets.", "data": "//[::ffff:192.168.0.01]/p", "valid": false }, { "description": "a colon in the first segment of a relative-path reference", "comment": "RFC 3986, Section 4.2: relative-part uses path-noscheme, whose first segment is segment-nz-nc - a non-zero-length segment without any colon. A scheme must start with ALPHA, so 1:b cannot be read as a URI either.", "data": "1:b", "valid": false }, { "description": "a colon in the first segment preceded by a dot-segment", "comment": "RFC 3986, Section 4.2: \"Such a segment must be preceded by a dot-segment (e.g., \\\"./this:that\\\") to make a relative-path reference.\"", "data": "./this:that", "valid": true } ] } ] extendible-dynamic-ref.json100640000766000024 102415240201330 27725 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "description": "extendible array", "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/extendible-dynamic-ref.json", "type": "object", "properties": { "elements": { "type": "array", "items": { "$dynamicRef": "#elements" } } }, "required": ["elements"], "additionalProperties": false, "$defs": { "elements": { "$dynamicAnchor": "elements" } } } extendible-dynamic-ref.json100640000766000024 102415240201330 27707 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "description": "extendible array", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/extendible-dynamic-ref.json", "type": "object", "properties": { "elements": { "type": "array", "items": { "$dynamicRef": "#elements" } } }, "required": ["elements"], "additionalProperties": false, "$defs": { "elements": { "$dynamicAnchor": "elements" } } } format-assertion-false.json100640000766000024 101015240201330 27750 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$id": "http://localhost:1234/draft2020-12/format-assertion-false.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "$vocabulary": { "https://json-schema.org/draft/2020-12/vocab/core": true, "https://json-schema.org/draft/2020-12/vocab/format-assertion": false }, "$dynamicAnchor": "meta", "allOf": [ { "$ref": "https://json-schema.org/draft/2020-12/meta/core" }, { "$ref": "https://json-schema.org/draft/2020-12/meta/format-assertion" } ] } duration.json100640000766000024 2120615240201330 30060 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of duration strings", "comment": "RFC 3339 Appendix A defines the ABNF grammar for ISO-8601 durations used by JSON Schema format 'duration'. These tests enforce only the syntax defined by that grammar.", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "duration" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid duration string", "data": "P4DT12H30M5S", "valid": true }, { "description": "an invalid duration string", "data": "PT1D", "valid": false }, { "description": "must start with P", "data": "4DT12H30M5S", "valid": false }, { "description": "no elements present", "data": "P", "valid": false }, { "description": "no time elements present", "data": "P1YT", "valid": false }, { "description": "no date or time elements present", "data": "PT", "valid": false }, { "description": "elements out of order", "data": "P2D1Y", "valid": false }, { "description": "missing time separator", "data": "P1D2H", "valid": false }, { "description": "time element in the date position", "data": "P2S", "valid": false }, { "description": "four years duration", "data": "P4Y", "valid": true }, { "description": "zero time, in seconds", "data": "PT0S", "valid": true }, { "description": "zero time, in days", "data": "P0D", "valid": true }, { "description": "one month duration", "data": "P1M", "valid": true }, { "description": "one minute duration", "data": "PT1M", "valid": true }, { "description": "one and a half days, in hours", "data": "PT36H", "valid": true }, { "description": "one and a half days, in days and hours", "data": "P1DT12H", "valid": true }, { "description": "two weeks", "data": "P2W", "valid": true }, { "description": "weeks cannot be combined with other units", "data": "P1Y2W", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "P২Y", "valid": false }, { "description": "element without unit", "data": "P1", "valid": false }, { "description": "all date and time components", "data": "P1Y2M3DT4H5M6S", "valid": true }, { "description": "date components only", "data": "P1Y2M3D", "valid": true }, { "description": "time components only", "data": "PT1H2M3S", "valid": true }, { "description": "month and day", "data": "P1M2D", "valid": true }, { "description": "hour and minute", "data": "PT1H30M", "valid": true }, { "description": "multi-digit values in all components", "data": "P10Y10M10DT10H10M10S", "valid": true }, { "description": "fractional duration is not allowed by RFC 3339 ABNF", "comment": "numeric components use 1*DIGIT where DIGIT = %x30-39; '.' is not allowed", "data": "PT0.5S", "valid": false }, { "description": "leading whitespace is invalid", "data": " P1D", "valid": false }, { "description": "trailing whitespace is invalid", "data": "P1D ", "valid": false }, { "description": "empty string is invalid", "data": "", "valid": false }, { "description": "years and months can appear without days", "data": "P1Y2M", "valid": true }, { "description": "years and days cannot appear without months", "data": "P1Y2D", "valid": false }, { "description": "months and days can appear without years", "data": "P1M2D", "valid": true }, { "description": "hours and minutes can appear without seconds", "data": "PT1H2M", "valid": true }, { "description": "hours and seconds cannot appear without minutes", "data": "PT1H2S", "valid": false }, { "description": "minutes and seconds can appear without hour", "data": "PT1M2S", "valid": true }, { "description": "a leading sign is not allowed", "data": "-P1D", "valid": false }, { "description": "a number before the time separator has no unit", "data": "P1D2T3H", "valid": false }, { "description": "exponent notation is not allowed in a component", "data": "P1e2D", "valid": false }, { "description": "a trailing newline is invalid", "data": "P1D\n", "valid": false }, { "description": "weeks cannot be combined with a time component", "data": "P1WT1H", "valid": false }, { "description": "weeks cannot be combined with a zero-valued component", "data": "P0Y1W", "valid": false }, { "description": "a leading zero in a component is valid", "data": "P01D", "valid": true }, { "description": "a component with many digits is valid", "data": "P999999999999999999999999999999999999999999999999999999999999999999999999999999D", "valid": true }, { "description": "a comma as the decimal separator is invalid", "data": "PT0,5S", "valid": false }, { "description": "a sign inside a component is invalid", "data": "P-1D", "valid": false } ] } ] hostname.json100640000766000024 3771415240201330 30064 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of host names", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name", "data": "www.example.com", "valid": true }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label starting with digit", "data": "1host", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "single dot", "data": ".", "valid": false }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "IDN label separator", "data": "example\uff0ecom", "valid": false }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "starts with hyphen", "data": "-hostname", "valid": false }, { "description": "ends with hyphen", "data": "hostname-", "valid": false }, { "description": "contains underscore", "data": "host_name", "valid": false }, { "description": "exceeds maximum overall length (256)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": false }, { "description": "maximum label length (63)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": true }, { "description": "exceeds maximum label length (63)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl.com", "valid": false }, { "description": "trailing newline is invalid", "data": "example.com\n", "valid": false }, { "description": "invalid non-ASCII KELVIN SIGN (U+212A)", "data": "\u212Aelvin.example.com", "valid": false }, { "description": "consecutive hyphens inside a label", "data": "a--b.com", "valid": true } ] }, { "description": "validation of A-label (punycode) host names", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "hostname" }, "tests": [ { "description": "invalid Punycode", "comment": "https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "xn--X", "valid": false }, { "description": "a valid host name (example.test in Hangul)", "data": "xn--9n2bp8q.xn--9t4b11yi5a", "valid": true }, { "description": "contains illegal char U+302E Hangul single dot tone mark", "data": "xn--07jt112bpxg.xn--9t4b11yi5a", "valid": false }, { "description": "Begins with a Spacing Combining Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-txk", "valid": false }, { "description": "Begins with a Nonspacing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-zed", "valid": false }, { "description": "Begins with an Enclosing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-6bf", "valid": false }, { "description": "Exceptions that are PVALID, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--zca29lwxobi7a", "valid": true }, { "description": "Exceptions that are PVALID, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--qmbc", "valid": true }, { "description": "Exceptions that are DISALLOWED, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--chb89f", "valid": false }, { "description": "Exceptions that are DISALLOWED, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6 Note: The two combining marks (U+302E and U+302F) are in the middle and not at the start", "data": "xn--07jceefgh4c", "valid": false }, { "description": "MIDDLE DOT with no preceding 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--al-0ea", "valid": false }, { "description": "MIDDLE DOT with nothing preceding", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--l-fda", "valid": false }, { "description": "MIDDLE DOT with no following 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--la-0ea", "valid": false }, { "description": "MIDDLE DOT with nothing following", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--l-gda", "valid": false }, { "description": "MIDDLE DOT with surrounding 'l's", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--ll-0ea", "valid": true }, { "description": "Greek KERAIA not followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--S-jib3p", "valid": false }, { "description": "Greek KERAIA not followed by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--wva3j", "valid": false }, { "description": "Greek KERAIA followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--wva3je", "valid": true }, { "description": "Hebrew GERESH not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--A-2hc5h", "valid": false }, { "description": "Hebrew GERESH not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--5db1e", "valid": false }, { "description": "Hebrew GERESH preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--4dbc5h", "valid": true }, { "description": "Hebrew GERSHAYIM not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--A-2hc8h", "valid": false }, { "description": "Hebrew GERSHAYIM not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--5db3e", "valid": false }, { "description": "Hebrew GERSHAYIM preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--4dbc8h", "valid": true }, { "description": "KATAKANA MIDDLE DOT with no Hiragana, Katakana, or Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--defabc-k64e", "valid": false }, { "description": "KATAKANA MIDDLE DOT with no other characters", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--vek", "valid": false }, { "description": "KATAKANA MIDDLE DOT with Hiragana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--k8j5u", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Katakana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--bck0j", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--vek778f", "valid": true }, { "description": "Arabic-Indic digits mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "xn--ngb6iyr", "valid": false }, { "description": "Arabic-Indic digits not mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "xn--ngba1o", "valid": true }, { "description": "Extended Arabic-Indic digits not mixed with Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.9", "data": "xn--0-gyc", "valid": true }, { "description": "ZERO WIDTH JOINER not preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--11b2er09f", "valid": false }, { "description": "ZERO WIDTH JOINER not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--02b508i", "valid": false }, { "description": "ZERO WIDTH JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--11b2ezcw70k", "valid": true }, { "description": "ZERO WIDTH NON-JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1", "data": "xn--11b2ezcs70k", "valid": true }, { "description": "ZERO WIDTH NON-JOINER not preceded by Virama but matches regexp", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1 https://www.w3.org/TR/alreq/#h_disjoining_enforcement", "data": "xn--ngba5hb2804a", "valid": true }, { "description": "contains \"--\" in the 3rd and 4th position", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "XN--aa---o47jg78q", "valid": false } ] } ] duration.json100640000766000024 2120615240201330 30042 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of duration strings", "comment": "RFC 3339 Appendix A defines the ABNF grammar for ISO-8601 durations used by JSON Schema format 'duration'. These tests enforce only the syntax defined by that grammar.", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "duration" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid duration string", "data": "P4DT12H30M5S", "valid": true }, { "description": "an invalid duration string", "data": "PT1D", "valid": false }, { "description": "must start with P", "data": "4DT12H30M5S", "valid": false }, { "description": "no elements present", "data": "P", "valid": false }, { "description": "no time elements present", "data": "P1YT", "valid": false }, { "description": "no date or time elements present", "data": "PT", "valid": false }, { "description": "elements out of order", "data": "P2D1Y", "valid": false }, { "description": "missing time separator", "data": "P1D2H", "valid": false }, { "description": "time element in the date position", "data": "P2S", "valid": false }, { "description": "four years duration", "data": "P4Y", "valid": true }, { "description": "zero time, in seconds", "data": "PT0S", "valid": true }, { "description": "zero time, in days", "data": "P0D", "valid": true }, { "description": "one month duration", "data": "P1M", "valid": true }, { "description": "one minute duration", "data": "PT1M", "valid": true }, { "description": "one and a half days, in hours", "data": "PT36H", "valid": true }, { "description": "one and a half days, in days and hours", "data": "P1DT12H", "valid": true }, { "description": "two weeks", "data": "P2W", "valid": true }, { "description": "weeks cannot be combined with other units", "data": "P1Y2W", "valid": false }, { "description": "invalid non-ASCII '২' (a Bengali 2)", "data": "P২Y", "valid": false }, { "description": "element without unit", "data": "P1", "valid": false }, { "description": "all date and time components", "data": "P1Y2M3DT4H5M6S", "valid": true }, { "description": "date components only", "data": "P1Y2M3D", "valid": true }, { "description": "time components only", "data": "PT1H2M3S", "valid": true }, { "description": "month and day", "data": "P1M2D", "valid": true }, { "description": "hour and minute", "data": "PT1H30M", "valid": true }, { "description": "multi-digit values in all components", "data": "P10Y10M10DT10H10M10S", "valid": true }, { "description": "fractional duration is not allowed by RFC 3339 ABNF", "comment": "numeric components use 1*DIGIT where DIGIT = %x30-39; '.' is not allowed", "data": "PT0.5S", "valid": false }, { "description": "leading whitespace is invalid", "data": " P1D", "valid": false }, { "description": "trailing whitespace is invalid", "data": "P1D ", "valid": false }, { "description": "empty string is invalid", "data": "", "valid": false }, { "description": "years and months can appear without days", "data": "P1Y2M", "valid": true }, { "description": "years and days cannot appear without months", "data": "P1Y2D", "valid": false }, { "description": "months and days can appear without years", "data": "P1M2D", "valid": true }, { "description": "hours and minutes can appear without seconds", "data": "PT1H2M", "valid": true }, { "description": "hours and seconds cannot appear without minutes", "data": "PT1H2S", "valid": false }, { "description": "minutes and seconds can appear without hour", "data": "PT1M2S", "valid": true }, { "description": "a leading sign is not allowed", "data": "-P1D", "valid": false }, { "description": "a number before the time separator has no unit", "data": "P1D2T3H", "valid": false }, { "description": "exponent notation is not allowed in a component", "data": "P1e2D", "valid": false }, { "description": "a trailing newline is invalid", "data": "P1D\n", "valid": false }, { "description": "weeks cannot be combined with a time component", "data": "P1WT1H", "valid": false }, { "description": "weeks cannot be combined with a zero-valued component", "data": "P0Y1W", "valid": false }, { "description": "a leading zero in a component is valid", "data": "P01D", "valid": true }, { "description": "a component with many digits is valid", "data": "P999999999999999999999999999999999999999999999999999999999999999999999999999999D", "valid": true }, { "description": "a comma as the decimal separator is invalid", "data": "PT0,5S", "valid": false }, { "description": "a sign inside a component is invalid", "data": "P-1D", "valid": false } ] } ] hostname.json100640000766000024 3771415240201330 30046 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of host names", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name", "data": "www.example.com", "valid": true }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label starting with digit", "data": "1host", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "single dot", "data": ".", "valid": false }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "IDN label separator", "data": "example\uff0ecom", "valid": false }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "starts with hyphen", "data": "-hostname", "valid": false }, { "description": "ends with hyphen", "data": "hostname-", "valid": false }, { "description": "contains underscore", "data": "host_name", "valid": false }, { "description": "exceeds maximum overall length (256)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": false }, { "description": "maximum label length (63)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com", "valid": true }, { "description": "exceeds maximum label length (63)", "data": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl.com", "valid": false }, { "description": "trailing newline is invalid", "data": "example.com\n", "valid": false }, { "description": "invalid non-ASCII KELVIN SIGN (U+212A)", "data": "\u212Aelvin.example.com", "valid": false }, { "description": "consecutive hyphens inside a label", "data": "a--b.com", "valid": true } ] }, { "description": "validation of A-label (punycode) host names", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "hostname" }, "tests": [ { "description": "invalid Punycode", "comment": "https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "xn--X", "valid": false }, { "description": "a valid host name (example.test in Hangul)", "data": "xn--9n2bp8q.xn--9t4b11yi5a", "valid": true }, { "description": "contains illegal char U+302E Hangul single dot tone mark", "data": "xn--07jt112bpxg.xn--9t4b11yi5a", "valid": false }, { "description": "Begins with a Spacing Combining Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-txk", "valid": false }, { "description": "Begins with a Nonspacing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-zed", "valid": false }, { "description": "Begins with an Enclosing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "xn--hello-6bf", "valid": false }, { "description": "Exceptions that are PVALID, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--zca29lwxobi7a", "valid": true }, { "description": "Exceptions that are PVALID, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--qmbc", "valid": true }, { "description": "Exceptions that are DISALLOWED, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "xn--chb89f", "valid": false }, { "description": "Exceptions that are DISALLOWED, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6 Note: The two combining marks (U+302E and U+302F) are in the middle and not at the start", "data": "xn--07jceefgh4c", "valid": false }, { "description": "MIDDLE DOT with no preceding 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--al-0ea", "valid": false }, { "description": "MIDDLE DOT with nothing preceding", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--l-fda", "valid": false }, { "description": "MIDDLE DOT with no following 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--la-0ea", "valid": false }, { "description": "MIDDLE DOT with nothing following", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--l-gda", "valid": false }, { "description": "MIDDLE DOT with surrounding 'l's", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "xn--ll-0ea", "valid": true }, { "description": "Greek KERAIA not followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--S-jib3p", "valid": false }, { "description": "Greek KERAIA not followed by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--wva3j", "valid": false }, { "description": "Greek KERAIA followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "xn--wva3je", "valid": true }, { "description": "Hebrew GERESH not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--A-2hc5h", "valid": false }, { "description": "Hebrew GERESH not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--5db1e", "valid": false }, { "description": "Hebrew GERESH preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "xn--4dbc5h", "valid": true }, { "description": "Hebrew GERSHAYIM not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--A-2hc8h", "valid": false }, { "description": "Hebrew GERSHAYIM not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--5db3e", "valid": false }, { "description": "Hebrew GERSHAYIM preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "xn--4dbc8h", "valid": true }, { "description": "KATAKANA MIDDLE DOT with no Hiragana, Katakana, or Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--defabc-k64e", "valid": false }, { "description": "KATAKANA MIDDLE DOT with no other characters", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--vek", "valid": false }, { "description": "KATAKANA MIDDLE DOT with Hiragana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--k8j5u", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Katakana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--bck0j", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "xn--vek778f", "valid": true }, { "description": "Arabic-Indic digits mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "xn--ngb6iyr", "valid": false }, { "description": "Arabic-Indic digits not mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "xn--ngba1o", "valid": true }, { "description": "Extended Arabic-Indic digits not mixed with Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.9", "data": "xn--0-gyc", "valid": true }, { "description": "ZERO WIDTH JOINER not preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--11b2er09f", "valid": false }, { "description": "ZERO WIDTH JOINER not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--02b508i", "valid": false }, { "description": "ZERO WIDTH JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "xn--11b2ezcw70k", "valid": true }, { "description": "ZERO WIDTH NON-JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1", "data": "xn--11b2ezcs70k", "valid": true }, { "description": "ZERO WIDTH NON-JOINER not preceded by Virama but matches regexp", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1 https://www.w3.org/TR/alreq/#h_disjoining_enforcement", "data": "xn--ngba5hb2804a", "valid": true }, { "description": "contains \"--\" in the 3rd and 4th position", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "XN--aa---o47jg78q", "valid": false } ] } ] locationIndependentIdentifierDraft4.json100644000766000024 215240201330 30521 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}draft2019-09000755000766000024 015240201330 25324 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource/remotesremote4.json100640000766000024 5715240201330 27674 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource/remotes/draft2019-09{ "$defs": { "quux": false } } draft2020-12000755000766000024 015240201330 25306 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource/remotesremote3.json100640000766000024 5615240201330 27654 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/t/tests/add_resource/remotes/draft2020-12{ "$defs": { "baz": false } } different-id-ref-string.json100640000766000024 22115240201330 30002 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$id": "http://localhost:1234/draft2019-09/real-id-ref-string.json", "$defs": {"bar": {"type": "string"}}, "$ref": "#/$defs/bar" } different-id-ref-string.json100640000766000024 22115240201330 27764 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$id": "http://localhost:1234/draft2020-12/real-id-ref-string.json", "$defs": {"bar": {"type": "string"}}, "$ref": "#/$defs/bar" } locationIndependentIdentifier.json100640000766000024 26015240201330 30702 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft4{ "definitions": { "refToInteger": { "$ref": "#foo" }, "A": { "id": "#foo", "type": "integer" } } } locationIndependentIdentifier.json100640000766000024 26115240201330 30705 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft6{ "definitions": { "refToInteger": { "$ref": "#foo" }, "A": { "$id": "#foo", "type": "integer" } } } locationIndependentIdentifier.json100640000766000024 26115240201330 30706 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft7{ "definitions": { "refToInteger": { "$ref": "#foo" }, "A": { "$id": "#foo", "type": "integer" } } } baseUriChangeFolder000755000766000024 015240201330 24702 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1folderInteger.json100640000766000024 10715240201330 30500 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1/baseUriChangeFolder{ "$schema": "https://json-schema.org/v1", "type": "integer" } ecmascript-regex.json100640000766000024 4706115240201330 30214 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "ECMA 262 regex $ does not match trailing newline", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^abc$" }, "tests": [ { "description": "matches in Python, but not in ECMA 262", "data": "abc\\n", "valid": false }, { "description": "matches", "data": "abc", "valid": true } ] }, { "description": "ECMA 262 regex converts \\t to horizontal tab", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^\\t$" }, "tests": [ { "description": "does not match", "data": "\\t", "valid": false }, { "description": "matches", "data": "\u0009", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and upper letter", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^\\cC$" }, "tests": [ { "description": "does not match", "data": "\\cC", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and lower letter", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^\\cc$" }, "tests": [ { "description": "does not match", "data": "\\cc", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 \\d matches ascii digits only", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^\\d$" }, "tests": [ { "description": "ASCII zero matches", "data": "0", "valid": true }, { "description": "NKO DIGIT ZERO does not match (unlike e.g. Python)", "data": "߀", "valid": false }, { "description": "NKO DIGIT ZERO (as \\u escape) does not match", "data": "\u07c0", "valid": false } ] }, { "description": "ECMA 262 \\D matches everything but ascii digits", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^\\D$" }, "tests": [ { "description": "ASCII zero does not match", "data": "0", "valid": false }, { "description": "NKO DIGIT ZERO matches (unlike e.g. Python)", "data": "߀", "valid": true }, { "description": "NKO DIGIT ZERO (as \\u escape) matches", "data": "\u07c0", "valid": true } ] }, { "description": "ECMA 262 \\w matches ascii letters only", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^\\w$" }, "tests": [ { "description": "ASCII 'a' matches", "data": "a", "valid": true }, { "description": "latin-1 e-acute does not match (unlike e.g. Python)", "data": "é", "valid": false } ] }, { "description": "ECMA 262 \\W matches everything but ascii letters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^\\W$" }, "tests": [ { "description": "ASCII 'a' does not match", "data": "a", "valid": false }, { "description": "latin-1 e-acute matches (unlike e.g. Python)", "data": "é", "valid": true } ] }, { "description": "ECMA 262 \\s matches whitespace", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^\\s$" }, "tests": [ { "description": "ASCII space matches", "data": " ", "valid": true }, { "description": "Character tabulation matches", "data": "\t", "valid": true }, { "description": "Line tabulation matches", "data": "\u000b", "valid": true }, { "description": "Form feed matches", "data": "\u000c", "valid": true }, { "description": "latin-1 non-breaking-space matches", "data": "\u00a0", "valid": true }, { "description": "zero-width whitespace matches", "data": "\ufeff", "valid": true }, { "description": "line feed matches (line terminator)", "data": "\u000a", "valid": true }, { "description": "paragraph separator matches (line terminator)", "data": "\u2029", "valid": true }, { "description": "EM SPACE matches (Space_Separator)", "data": "\u2003", "valid": true }, { "description": "Non-whitespace control does not match", "data": "\u0001", "valid": false }, { "description": "Non-whitespace does not match", "data": "\u2013", "valid": false } ] }, { "description": "ECMA 262 \\S matches everything but whitespace", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "string", "pattern": "^\\S$" }, "tests": [ { "description": "ASCII space does not match", "data": " ", "valid": false }, { "description": "Character tabulation does not match", "data": "\t", "valid": false }, { "description": "Line tabulation does not match", "data": "\u000b", "valid": false }, { "description": "Form feed does not match", "data": "\u000c", "valid": false }, { "description": "latin-1 non-breaking-space does not match", "data": "\u00a0", "valid": false }, { "description": "zero-width whitespace does not match", "data": "\ufeff", "valid": false }, { "description": "line feed does not match (line terminator)", "data": "\u000a", "valid": false }, { "description": "paragraph separator does not match (line terminator)", "data": "\u2029", "valid": false }, { "description": "EM SPACE does not match (Space_Separator)", "data": "\u2003", "valid": false }, { "description": "Non-whitespace control matches", "data": "\u0001", "valid": true }, { "description": "Non-whitespace matches", "data": "\u2013", "valid": true } ] }, { "description": "patterns always use unicode semantics with pattern", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "pattern": "\\p{Letter}cole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "\\w in patterns matches [A-Za-z0-9_], not unicode letters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "pattern": "\\wcole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "pattern with ASCII ranges", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "pattern": "[a-z]cole" }, "tests": [ { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "ascii characters match", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true } ] }, { "description": "\\d in pattern matches [0-9], not unicode digits", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "pattern": "^\\d+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": false } ] }, { "description": "pattern with non-ASCII digits", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "pattern": "^\\p{digit}+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": true } ] }, { "description": "patterns always use unicode semantics with patternProperties", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "patternProperties": { "\\p{Letter}cole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": true }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": true }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "\\w in patternProperties matches [A-Za-z0-9_], not unicode letters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "patternProperties": { "\\wcole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "patternProperties with ASCII ranges", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "patternProperties": { "[a-z]cole": true }, "additionalProperties": false }, "tests": [ { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "ascii characters match", "data": { "l'ecole": "pas de vraie vie" }, "valid": true } ] }, { "description": "\\d in patternProperties matches [0-9], not unicode digits", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "patternProperties": { "^\\d+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": false } ] }, { "description": "patternProperties with non-ASCII digits", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "patternProperties": { "^\\p{digit}+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": true } ] } ] date-time.json100640000766000024 1411715240201330 30107 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of date-time strings", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date-time string", "data": "1963-06-19T08:30:06.283185Z", "valid": true }, { "description": "a valid date-time string without second fraction", "data": "1963-06-19T08:30:06Z", "valid": true }, { "description": "a valid date-time string with plus offset", "data": "1937-01-01T12:00:27.87+00:20", "valid": true }, { "description": "a valid date-time string with minus offset", "data": "1990-12-31T15:59:50.123-08:00", "valid": true }, { "description": "a valid date-time with a leap second, UTC", "data": "1998-12-31T23:59:60Z", "valid": true }, { "description": "a valid date-time with a leap second, with minus offset", "data": "1998-12-31T15:59:60.123-08:00", "valid": true }, { "description": "an invalid date-time past leap second, UTC", "data": "1998-12-31T23:59:61Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong minute, UTC", "data": "1998-12-31T23:58:60Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong hour, UTC", "data": "1998-12-31T22:59:60Z", "valid": false }, { "description": "an invalid day in date-time string", "data": "1990-02-31T15:59:59.123-08:00", "valid": false }, { "description": "an invalid offset in date-time string", "data": "1990-12-31T15:59:59-24:00", "valid": false }, { "description": "an invalid closing Z after time-zone offset", "data": "1963-06-19T08:30:06.28123+01:00Z", "valid": false }, { "description": "an invalid hour in date-time string", "data": "1990-12-31T24:00:00Z", "valid": false }, { "description": "an invalid minute in date-time string", "data": "1990-12-31T15:60:00Z", "valid": false }, { "description": "an invalid offset minute in date-time string", "data": "1990-12-31T10:00:00+10:60", "valid": false }, { "description": "an invalid date-time string", "data": "06/19/1963 08:30:06 PST", "valid": false }, { "description": "case-insensitive T and Z", "data": "1963-06-19t08:30:06.283185z", "valid": true }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350T01:01:01", "valid": false }, { "description": "invalid non-padded month dates", "data": "1963-6-19T08:30:06.283185Z", "valid": false }, { "description": "invalid non-padded day dates", "data": "1963-06-1T08:30:06.283185Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in date portion", "data": "1963-06-1৪T00:00:00Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in time portion", "data": "1963-06-11T0৪:00:00Z", "valid": false }, { "description": "invalid extended year", "data": "+11963-06-19T08:30:06.283185Z", "valid": false }, { "description": "a numeric offset without minutes is invalid", "data": "1985-04-12T23:20:50+01", "valid": false }, { "description": "hour 24 is invalid even with a leap second", "data": "2016-12-31T24:59:60+01:00", "valid": false }, { "description": "a second fraction of fifteen nines is valid", "data": "1985-04-12T00:59:59.999999999999999Z", "valid": true }, { "description": "a trailing newline is invalid", "data": "1985-04-12T23:20:50Z\n", "valid": false } ] } ] idn-email.json100640000766000024 1054515240201330 30076 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of an internationalized e-mail addresses", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "idn-email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid idn e-mail (example@example.test in Hangul)", "data": "실례@실례.테스트", "valid": true }, { "description": "an invalid e-mail/idn e-mail address", "data": "2962", "valid": false }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "a non-ASCII local part with an ASCII domain is valid", "data": "δοκιμή@example.com", "valid": true }, { "description": "a non-ASCII quoted local part is valid", "data": "\"δοκιμή\"@example.com", "valid": true }, { "description": "a domain label that is not in Unicode NFC is valid", "data": "user@cafe\u0301.com", "valid": true }, { "description": "a local part that is not in Unicode NFC is valid", "data": "cafe\u0301@example.com", "valid": true }, { "description": "a C1 control in the local part is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii; https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-2 admits U+0085", "data": "\u0085@example.com", "valid": true }, { "description": "a noncharacter in the local part is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii; https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-3 admits U+FFFF", "data": "\uffff@example.com", "valid": true }, { "description": "a local part at the 64-octet limit is valid", "comment": "https://www.rfc-editor.org/rfc/rfc5321#section-4.5.3.1 every implementation must be able to receive a local part of 64 octets", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com", "valid": true }, { "description": "a fullwidth commercial at is not a local-part separator", "comment": "https://www.rfc-editor.org/rfc/rfc5321#section-4.1.2 Mailbox = Local-part \"@\" ( Domain / address-literal ) splits on U+0040, and any IDN mapping applies only to the domain that split produces, so U+FF20 cannot become the delimiter", "data": "user\uff20example.com", "valid": false }, { "description": "a local part with a supplementary-plane character is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii, and https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-4 covers U+10000 and above", "data": "\ud835\udd4f@example.com", "valid": true } ] } ] ecmascript-regex.json100640000766000024 4706115240201330 30176 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "ECMA 262 regex $ does not match trailing newline", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^abc$" }, "tests": [ { "description": "matches in Python, but not in ECMA 262", "data": "abc\\n", "valid": false }, { "description": "matches", "data": "abc", "valid": true } ] }, { "description": "ECMA 262 regex converts \\t to horizontal tab", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\t$" }, "tests": [ { "description": "does not match", "data": "\\t", "valid": false }, { "description": "matches", "data": "\u0009", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and upper letter", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\cC$" }, "tests": [ { "description": "does not match", "data": "\\cC", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 regex escapes control codes with \\c and lower letter", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\cc$" }, "tests": [ { "description": "does not match", "data": "\\cc", "valid": false }, { "description": "matches", "data": "\u0003", "valid": true } ] }, { "description": "ECMA 262 \\d matches ascii digits only", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\d$" }, "tests": [ { "description": "ASCII zero matches", "data": "0", "valid": true }, { "description": "NKO DIGIT ZERO does not match (unlike e.g. Python)", "data": "߀", "valid": false }, { "description": "NKO DIGIT ZERO (as \\u escape) does not match", "data": "\u07c0", "valid": false } ] }, { "description": "ECMA 262 \\D matches everything but ascii digits", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\D$" }, "tests": [ { "description": "ASCII zero does not match", "data": "0", "valid": false }, { "description": "NKO DIGIT ZERO matches (unlike e.g. Python)", "data": "߀", "valid": true }, { "description": "NKO DIGIT ZERO (as \\u escape) matches", "data": "\u07c0", "valid": true } ] }, { "description": "ECMA 262 \\w matches ascii letters only", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\w$" }, "tests": [ { "description": "ASCII 'a' matches", "data": "a", "valid": true }, { "description": "latin-1 e-acute does not match (unlike e.g. Python)", "data": "é", "valid": false } ] }, { "description": "ECMA 262 \\W matches everything but ascii letters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\W$" }, "tests": [ { "description": "ASCII 'a' does not match", "data": "a", "valid": false }, { "description": "latin-1 e-acute matches (unlike e.g. Python)", "data": "é", "valid": true } ] }, { "description": "ECMA 262 \\s matches whitespace", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\s$" }, "tests": [ { "description": "ASCII space matches", "data": " ", "valid": true }, { "description": "Character tabulation matches", "data": "\t", "valid": true }, { "description": "Line tabulation matches", "data": "\u000b", "valid": true }, { "description": "Form feed matches", "data": "\u000c", "valid": true }, { "description": "latin-1 non-breaking-space matches", "data": "\u00a0", "valid": true }, { "description": "zero-width whitespace matches", "data": "\ufeff", "valid": true }, { "description": "line feed matches (line terminator)", "data": "\u000a", "valid": true }, { "description": "paragraph separator matches (line terminator)", "data": "\u2029", "valid": true }, { "description": "EM SPACE matches (Space_Separator)", "data": "\u2003", "valid": true }, { "description": "Non-whitespace control does not match", "data": "\u0001", "valid": false }, { "description": "Non-whitespace does not match", "data": "\u2013", "valid": false } ] }, { "description": "ECMA 262 \\S matches everything but whitespace", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "pattern": "^\\S$" }, "tests": [ { "description": "ASCII space does not match", "data": " ", "valid": false }, { "description": "Character tabulation does not match", "data": "\t", "valid": false }, { "description": "Line tabulation does not match", "data": "\u000b", "valid": false }, { "description": "Form feed does not match", "data": "\u000c", "valid": false }, { "description": "latin-1 non-breaking-space does not match", "data": "\u00a0", "valid": false }, { "description": "zero-width whitespace does not match", "data": "\ufeff", "valid": false }, { "description": "line feed does not match (line terminator)", "data": "\u000a", "valid": false }, { "description": "paragraph separator does not match (line terminator)", "data": "\u2029", "valid": false }, { "description": "EM SPACE does not match (Space_Separator)", "data": "\u2003", "valid": false }, { "description": "Non-whitespace control matches", "data": "\u0001", "valid": true }, { "description": "Non-whitespace matches", "data": "\u2013", "valid": true } ] }, { "description": "patterns always use unicode semantics with pattern", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "pattern": "\\p{Letter}cole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": true }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "\\w in patterns matches [A-Za-z0-9_], not unicode letters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "pattern": "\\wcole" }, "tests": [ { "description": "ascii character in json string", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true }, { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode matching is case-sensitive", "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", "valid": false } ] }, { "description": "pattern with ASCII ranges", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "pattern": "[a-z]cole" }, "tests": [ { "description": "literal unicode character in json string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "unicode character in hex format in string", "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", "valid": false }, { "description": "ascii characters match", "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", "valid": true } ] }, { "description": "\\d in pattern matches [0-9], not unicode digits", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "pattern": "^\\d+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": false } ] }, { "description": "pattern with non-ASCII digits", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "pattern": "^\\p{digit}+$" }, "tests": [ { "description": "ascii digits", "data": "42", "valid": true }, { "description": "ascii non-digits", "data": "-%#", "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": "৪২", "valid": true } ] }, { "description": "patterns always use unicode semantics with patternProperties", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "patternProperties": { "\\p{Letter}cole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": true }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": true }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "\\w in patternProperties matches [A-Za-z0-9_], not unicode letters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "patternProperties": { "\\wcole": true }, "additionalProperties": false }, "tests": [ { "description": "ascii character in json string", "data": { "l'ecole": "pas de vraie vie" }, "valid": true }, { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "unicode matching is case-sensitive", "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, "valid": false } ] }, { "description": "patternProperties with ASCII ranges", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "patternProperties": { "[a-z]cole": true }, "additionalProperties": false }, "tests": [ { "description": "literal unicode character in json string", "data": { "l'école": "pas de vraie vie" }, "valid": false }, { "description": "unicode character in hex format in string", "data": { "l'\u00e9cole": "pas de vraie vie" }, "valid": false }, { "description": "ascii characters match", "data": { "l'ecole": "pas de vraie vie" }, "valid": true } ] }, { "description": "\\d in patternProperties matches [0-9], not unicode digits", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "patternProperties": { "^\\d+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": false } ] }, { "description": "patternProperties with non-ASCII digits", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "patternProperties": { "^\\p{digit}+$": true }, "additionalProperties": false }, "tests": [ { "description": "ascii digits", "data": { "42": "life, the universe, and everything" }, "valid": true }, { "description": "ascii non-digits", "data": { "-%#": "spending the year dead for tax reasons" }, "valid": false }, { "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", "data": { "৪২": "khajit has wares if you have coin" }, "valid": true } ] } ] format-assertion.json100640000766000024 345715240201330 30212 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "schema that uses custom metaschema with format-assertion: false", "comment": "The true/false boolean in $vocabulary only controls behavior for implementations that do not recognize the vocabulary. For implementations that do understand format-assertion, the boolean has no impact on validation behavior — hence both test groups produce identical results.", "schema": { "$id": "https://schema/using/format-assertion/false", "$schema": "http://localhost:1234/draft2020-12/format-assertion-false.json", "format": "ipv4" }, "tests": [ { "description": "format-assertion: false: valid string", "data": "127.0.0.1", "valid": true }, { "description": "format-assertion: false: invalid string", "comment": "valid: false is intentional — the false value in $vocabulary only affects unknown vocabulary handling, not validation behavior itself", "data": "not-an-ipv4", "valid": false } ] }, { "description": "schema that uses custom metaschema with format-assertion: true", "schema": { "$id": "https://schema/using/format-assertion/true", "$schema": "http://localhost:1234/draft2020-12/format-assertion-true.json", "format": "ipv4" }, "tests": [ { "description": "format-assertion: true: valid string", "data": "127.0.0.1", "valid": true }, { "description": "format-assertion: true: invalid string", "data": "not-an-ipv4", "valid": false } ] } ] date-time.json100640000766000024 1411715240201330 30071 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of date-time strings", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "date-time" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid date-time string", "data": "1963-06-19T08:30:06.283185Z", "valid": true }, { "description": "a valid date-time string without second fraction", "data": "1963-06-19T08:30:06Z", "valid": true }, { "description": "a valid date-time string with plus offset", "data": "1937-01-01T12:00:27.87+00:20", "valid": true }, { "description": "a valid date-time string with minus offset", "data": "1990-12-31T15:59:50.123-08:00", "valid": true }, { "description": "a valid date-time with a leap second, UTC", "data": "1998-12-31T23:59:60Z", "valid": true }, { "description": "a valid date-time with a leap second, with minus offset", "data": "1998-12-31T15:59:60.123-08:00", "valid": true }, { "description": "an invalid date-time past leap second, UTC", "data": "1998-12-31T23:59:61Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong minute, UTC", "data": "1998-12-31T23:58:60Z", "valid": false }, { "description": "an invalid date-time with leap second on a wrong hour, UTC", "data": "1998-12-31T22:59:60Z", "valid": false }, { "description": "an invalid day in date-time string", "data": "1990-02-31T15:59:59.123-08:00", "valid": false }, { "description": "an invalid offset in date-time string", "data": "1990-12-31T15:59:59-24:00", "valid": false }, { "description": "an invalid closing Z after time-zone offset", "data": "1963-06-19T08:30:06.28123+01:00Z", "valid": false }, { "description": "an invalid hour in date-time string", "data": "1990-12-31T24:00:00Z", "valid": false }, { "description": "an invalid minute in date-time string", "data": "1990-12-31T15:60:00Z", "valid": false }, { "description": "an invalid offset minute in date-time string", "data": "1990-12-31T10:00:00+10:60", "valid": false }, { "description": "an invalid date-time string", "data": "06/19/1963 08:30:06 PST", "valid": false }, { "description": "case-insensitive T and Z", "data": "1963-06-19t08:30:06.283185z", "valid": true }, { "description": "only RFC3339 not all of ISO 8601 are valid", "data": "2013-350T01:01:01", "valid": false }, { "description": "invalid non-padded month dates", "data": "1963-6-19T08:30:06.283185Z", "valid": false }, { "description": "invalid non-padded day dates", "data": "1963-06-1T08:30:06.283185Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in date portion", "data": "1963-06-1৪T00:00:00Z", "valid": false }, { "description": "invalid non-ASCII '৪' (a Bengali 4) in time portion", "data": "1963-06-11T0৪:00:00Z", "valid": false }, { "description": "invalid extended year", "data": "+11963-06-19T08:30:06.283185Z", "valid": false }, { "description": "a numeric offset without minutes is invalid", "data": "1985-04-12T23:20:50+01", "valid": false }, { "description": "hour 24 is invalid even with a leap second", "data": "2016-12-31T24:59:60+01:00", "valid": false }, { "description": "a second fraction of fifteen nines is valid", "data": "1985-04-12T00:59:59.999999999999999Z", "valid": true }, { "description": "a trailing newline is invalid", "data": "1985-04-12T23:20:50Z\n", "valid": false } ] } ] idn-email.json100640000766000024 1054515240201330 30060 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of an internationalized e-mail addresses", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "idn-email" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid idn e-mail (example@example.test in Hangul)", "data": "실례@실례.테스트", "valid": true }, { "description": "an invalid e-mail/idn e-mail address", "data": "2962", "valid": false }, { "description": "a valid e-mail address", "data": "joe.bloggs@example.com", "valid": true }, { "description": "a non-ASCII local part with an ASCII domain is valid", "data": "δοκιμή@example.com", "valid": true }, { "description": "a non-ASCII quoted local part is valid", "data": "\"δοκιμή\"@example.com", "valid": true }, { "description": "a domain label that is not in Unicode NFC is valid", "data": "user@cafe\u0301.com", "valid": true }, { "description": "a local part that is not in Unicode NFC is valid", "data": "cafe\u0301@example.com", "valid": true }, { "description": "a C1 control in the local part is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii; https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-2 admits U+0085", "data": "\u0085@example.com", "valid": true }, { "description": "a noncharacter in the local part is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii; https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-3 admits U+FFFF", "data": "\uffff@example.com", "valid": true }, { "description": "a local part at the 64-octet limit is valid", "comment": "https://www.rfc-editor.org/rfc/rfc5321#section-4.5.3.1 every implementation must be able to receive a local part of 64 octets", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com", "valid": true }, { "description": "a fullwidth commercial at is not a local-part separator", "comment": "https://www.rfc-editor.org/rfc/rfc5321#section-4.1.2 Mailbox = Local-part \"@\" ( Domain / address-literal ) splits on U+0040, and any IDN mapping applies only to the domain that split produces, so U+FF20 cannot become the delimiter", "data": "user\uff20example.com", "valid": false }, { "description": "a local part with a supplementary-plane character is valid", "comment": "https://www.rfc-editor.org/rfc/rfc6531#section-3.3 atext =/ UTF8-non-ascii, and https://www.rfc-editor.org/rfc/rfc3629#section-4 UTF8-4 covers U+10000 and above", "data": "\ud835\udd4f@example.com", "valid": true } ] } ] dependencies-compatibility.json100640000766000024 1752215240201330 30732 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/optional[ { "description": "single dependency", "schema": { "$schema": "https://json-schema.org/v1", "dependencies": {"bar": ["foo"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "empty dependents", "schema": { "$schema": "https://json-schema.org/v1", "dependencies": {"bar": []} }, "tests": [ { "description": "empty object", "data": {}, "valid": true }, { "description": "object with one property", "data": {"bar": 2}, "valid": true }, { "description": "non-object is valid", "data": 1, "valid": true } ] }, { "description": "multiple dependents required", "schema": { "$schema": "https://json-schema.org/v1", "dependencies": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/v1", "dependencies": { "foo\nbar": ["foo\rbar"], "foo\"bar": ["foo'bar"] } }, "tests": [ { "description": "CRLF", "data": { "foo\nbar": 1, "foo\rbar": 2 }, "valid": true }, { "description": "quoted quotes", "data": { "foo'bar": 1, "foo\"bar": 2 }, "valid": true }, { "description": "CRLF missing dependent", "data": { "foo\nbar": 1, "foo": 2 }, "valid": false }, { "description": "quoted quotes missing dependent", "data": { "foo\"bar": 2 }, "valid": false } ] }, { "description": "single schema dependency", "schema": { "$schema": "https://json-schema.org/v1", "dependencies": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "boolean subschemas", "schema": { "$schema": "https://json-schema.org/v1", "dependencies": { "foo": true, "bar": false } }, "tests": [ { "description": "object with property having schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property having schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "schema dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/v1", "dependencies": { "foo\tbar": {"minProperties": 4}, "foo'bar": {"required": ["foo\"bar"]} } }, "tests": [ { "description": "quoted tab", "data": { "foo\tbar": 1, "a": 2, "b": 3, "c": 4 }, "valid": true }, { "description": "quoted quote", "data": { "foo'bar": {"foo\"bar": 1} }, "valid": false }, { "description": "quoted tab invalid under dependent schema", "data": { "foo\tbar": 1, "a": 2 }, "valid": false }, { "description": "quoted quote invalid under dependent schema", "data": {"foo'bar": 1}, "valid": false } ] } ] locationIndependentIdentifierPre2019.json100644000766000024 215240201330 30437 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes{}metaschema-no-validation.json100640000766000024 77515240201330 30253 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/metaschema-no-validation.json", "$vocabulary": { "https://json-schema.org/draft/2019-09/vocab/applicator": true, "https://json-schema.org/draft/2019-09/vocab/core": true }, "$recursiveAnchor": true, "allOf": [ { "$ref": "https://json-schema.org/draft/2019-09/meta/applicator" }, { "$ref": "https://json-schema.org/draft/2019-09/meta/core" } ] } metaschema-no-validation.json100640000766000024 77515240201330 30235 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/metaschema-no-validation.json", "$vocabulary": { "https://json-schema.org/draft/2020-12/vocab/applicator": true, "https://json-schema.org/draft/2020-12/vocab/core": true }, "$dynamicAnchor": "meta", "allOf": [ { "$ref": "https://json-schema.org/draft/2020-12/meta/applicator" }, { "$ref": "https://json-schema.org/draft/2020-12/meta/core" } ] } ecmascript-regex.json100640000766000024 121215240201330 30771 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft3/optional/format[ { "description": "ECMA 262 regex dialect recognition", "schema": { "format": "regex" }, "tests": [ { "description": "[^] is a valid regex", "data": "[^]", "valid": true }, { "description": "ECMA 262 supports lookbehind since ES2018", "data": "(?<=foo)bar", "valid": true }, { "description": "ECMA 262 does not support Python-style named groups", "data": "(?Px)", "valid": false } ] } ] ecmascript-regex.json100640000766000024 565515240201330 31014 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "\\a is not an ECMA 262 control escape", "schema": { "format": "regex" }, "tests": [ { "description": "when used as a pattern", "data": "\\a", "valid": false } ] }, { "description": "Python-specific regular expression syntax is not valid ECMA 262", "schema": { "format": "regex" }, "tests": [ { "description": "Python named group (?P...) is not ECMA 262", "data": "(?Px)", "valid": false }, { "description": "Python named backreference (?P=name) is not ECMA 262", "data": "(?Pa)(?P=n)", "valid": false }, { "description": "inline comment group (?#...) is not ECMA 262", "data": "(?#comment)a", "valid": false } ] }, { "description": "global inline flag groups are not valid ECMA 262", "schema": { "format": "regex" }, "tests": [ { "description": "a single global inline flag (?i)", "data": "(?i)abc", "valid": false }, { "description": "multiple global inline flags (?ims)", "data": "(?ims)abc", "valid": false } ] }, { "description": "ECMA 262 named groups and backreferences are valid", "schema": { "format": "regex" }, "tests": [ { "description": "an ECMA 262 named group (?...)", "data": "(?x)", "valid": true }, { "description": "an ECMA 262 named backreference \\k", "data": "(?a)\\k", "valid": true } ] }, { "description": "ECMA 262 lookbehind is valid, including variable width", "schema": { "format": "regex" }, "tests": [ { "description": "a variable-width lookbehind (ES2018)", "data": "(?<=a+)b", "valid": true } ] }, { "description": "ECMA 262 character classes and escapes", "schema": { "format": "regex" }, "tests": [ { "description": "an empty character class is valid ECMA 262", "data": "[]", "valid": true }, { "description": "a negated empty character class is valid ECMA 262", "data": "[^]", "valid": true }, { "description": "a control escape \\cA is valid ECMA 262", "data": "\\cA", "valid": true } ] } ] idn-hostname.json100640000766000024 5704315240201330 30631 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of internationalized host names", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "idn-hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name (example.test in Hangul)", "data": "실례.테스트", "valid": true }, { "description": "illegal first char U+302E Hangul single dot tone mark", "data": "〮실례.테스트", "valid": false }, { "description": "contains illegal char U+302E Hangul single dot tone mark", "data": "실〮례.테스트", "valid": false }, { "description": "a single label of 63 characters is valid", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": true }, { "description": "a single label of 64 characters is too long", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": false }, { "description": "invalid label, correct Punycode", "comment": "https://tools.ietf.org/html/rfc5890#section-2.3.2.1 https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc3492#section-7.1", "data": "-> $1.00 <--", "valid": false }, { "description": "valid Chinese Punycode", "comment": "https://tools.ietf.org/html/rfc5890#section-2.3.2.1 https://tools.ietf.org/html/rfc5891#section-4.4", "data": "xn--ihqwcrb4cv8a8dqg056pqjye", "valid": true }, { "description": "invalid Punycode", "comment": "https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "xn--X", "valid": false }, { "description": "U-label contains \"--\" in the 3rd and 4th position", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "XN--aa---o47jg78q", "valid": false }, { "description": "U-label starts with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "-hello", "valid": false }, { "description": "U-label ends with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "hello-", "valid": false }, { "description": "U-label starts and ends with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "-hello-", "valid": false }, { "description": "Begins with a Spacing Combining Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0903hello", "valid": false }, { "description": "Begins with a Nonspacing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0300hello", "valid": false }, { "description": "Begins with an Enclosing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0488hello", "valid": false }, { "description": "Exceptions that are PVALID, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u00df\u03c2\u0f0b\u3007", "valid": true }, { "description": "Exceptions that are PVALID, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u06fd\u06fe", "valid": true }, { "description": "Exceptions that are DISALLOWED, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u0640\u07fa", "valid": false }, { "description": "Exceptions that are DISALLOWED, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6 Note: The two combining marks (U+302E and U+302F) are in the middle and not at the start", "data": "\u3031\u3032\u3033\u3034\u3035\u302e\u302f\u303b", "valid": false }, { "description": "MIDDLE DOT with no preceding 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "a\u00b7l", "valid": false }, { "description": "MIDDLE DOT with nothing preceding", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "\u00b7l", "valid": false }, { "description": "MIDDLE DOT with no following 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7a", "valid": false }, { "description": "MIDDLE DOT with nothing following", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7", "valid": false }, { "description": "MIDDLE DOT with surrounding 'l's", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7l", "valid": true }, { "description": "Greek KERAIA not followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375S", "valid": false }, { "description": "Greek KERAIA not followed by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375", "valid": false }, { "description": "Greek KERAIA followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375\u03b2", "valid": true }, { "description": "Hebrew GERESH not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "A\u05f3\u05d1", "valid": false }, { "description": "Hebrew GERESH not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "\u05f3\u05d1", "valid": false }, { "description": "Hebrew GERESH preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "\u05d0\u05f3\u05d1", "valid": true }, { "description": "Hebrew GERSHAYIM not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "A\u05f4\u05d1", "valid": false }, { "description": "Hebrew GERSHAYIM not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "\u05f4\u05d1", "valid": false }, { "description": "Hebrew GERSHAYIM preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "\u05d0\u05f4\u05d1", "valid": true }, { "description": "KATAKANA MIDDLE DOT with no Hiragana, Katakana, or Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "def\u30fbabc", "valid": false }, { "description": "KATAKANA MIDDLE DOT with no other characters", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb", "valid": false }, { "description": "KATAKANA MIDDLE DOT with Hiragana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u3041", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Katakana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u30a1", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u4e08", "valid": true }, { "description": "Arabic-Indic digits mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "\u0628\u0660\u06f0", "valid": false }, { "description": "Arabic-Indic digits not mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "\u0628\u0660\u0628", "valid": true }, { "description": "Extended Arabic-Indic digits not mixed with Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.9", "data": "\u06f00", "valid": true }, { "description": "ZERO WIDTH JOINER not preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u0915\u200d\u0937", "valid": false }, { "description": "ZERO WIDTH JOINER not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u200d\u0937", "valid": false }, { "description": "ZERO WIDTH JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u0915\u094d\u200d\u0937", "valid": true }, { "description": "ZERO WIDTH NON-JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1", "data": "\u0915\u094d\u200c\u0937", "valid": true }, { "description": "ZERO WIDTH NON-JOINER not preceded by Virama but matches regexp", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1 https://www.w3.org/TR/alreq/#h_disjoining_enforcement", "data": "\u0628\u064a\u200c\u0628\u064a", "valid": true }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label starting with digit", "data": "1host", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "zero width non-joiner must pass at every occurrence", "comment": "https://www.rfc-editor.org/rfc/rfc5892#appendix-A.1", "data": "\u0915\u094d\u200c\u0937x\u200cy", "valid": false }, { "description": "Bidi domain name with a digit-first label is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2 a label in a Bidi domain name must start with an L, R or AL character", "data": "0a.\u05d0", "valid": false }, { "description": "label starting with a digit before a right-to-left letter is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "0\u0627", "valid": false }, { "description": "left-to-right label containing a right-to-left letter is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "a\u05d0", "valid": false }, { "description": "right-to-left label mixing both digit types is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "\u05d00\u0660", "valid": false }, { "description": "A-label that decodes to a disallowed code point is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 https://www.rfc-editor.org/rfc/rfc5892#section-2.6", "data": "xn--7a", "valid": false }, { "description": "A-label that decodes to a Bidi rule violation is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 https://www.rfc-editor.org/rfc/rfc5893", "data": "xn--0ca24w", "valid": false }, { "description": "a U-label whose A-label form is longer than 63 octets is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5891#section-4.2.4 the 63-octet limit is on the A-label form, not the code point count", "data": "\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc", "valid": false }, { "description": "empty label between two dots is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc1034#section-3.1", "data": "a..b", "valid": false }, { "description": "a name longer than 253 characters is invalid", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": false }, { "description": "A-label that decodes to only ASCII is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 a U-label must have at least one non-ASCII character", "data": "xn--example-", "valid": false }, { "description": "non-canonical Punycode that does not re-encode to itself is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5891#section-5.4 a label decoded from Punycode must be identical to the original A-label", "data": "xn---9uc", "valid": false } ] }, { "description": "validation of separators in internationalized host names", "specification": [ {"rfc3490": "3.1", "quote": "Whenever dots are used as label separators, the following characters MUST be recognized as dots: U+002E (full stop), U+3002 (ideographic full stop), U+FF0E (fullwidth full stop), U+FF61(halfwidth ideographic full stop)"} ], "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "idn-hostname" }, "tests": [ { "description": "single dot", "data": ".", "valid": false }, { "description": "single ideographic full stop", "data": "\u3002", "valid": false }, { "description": "single fullwidth full stop", "data": "\uff0e", "valid": false }, { "description": "single halfwidth ideographic full stop", "data": "\uff61", "valid": false }, { "description": "dot as label separator", "data": "a.b", "valid": true }, { "description": "ideographic full stop as label separator", "data": "a\u3002b", "valid": true }, { "description": "fullwidth full stop as label separator", "data": "a\uff0eb", "valid": true }, { "description": "halfwidth ideographic full stop as label separator", "data": "a\uff61b", "valid": true }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "leading ideographic full stop", "data": "\u3002example", "valid": false }, { "description": "leading fullwidth full stop", "data": "\uff0eexample", "valid": false }, { "description": "leading halfwidth ideographic full stop", "data": "\uff61example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "trailing ideographic full stop", "data": "example\u3002", "valid": false }, { "description": "trailing fullwidth full stop", "data": "example\uff0e", "valid": false }, { "description": "trailing halfwidth ideographic full stop", "data": "example\uff61", "valid": false }, { "description": "label too long if separator ignored (full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα.com", "valid": true }, { "description": "label too long if separator ignored (ideographic full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\u3002com", "valid": true }, { "description": "label too long if separator ignored (fullwidth full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\uff0ecom", "valid": true }, { "description": "label too long if separator ignored (halfwidth ideographic full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\uff61com", "valid": true } ] } ] json-pointer.json100640000766000024 1604315240201330 30665 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of JSON-pointers (JSON String Representation)", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid JSON-pointer", "data": "/foo/bar~0/baz~1/%a", "valid": true }, { "description": "not a valid JSON-pointer (~ not escaped)", "data": "/foo/bar~", "valid": false }, { "description": "valid JSON-pointer with empty segment", "data": "/foo//bar", "valid": true }, { "description": "valid JSON-pointer with the last empty segment", "data": "/foo/bar/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #1", "data": "", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #2", "data": "/foo", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #3", "data": "/foo/0", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #4", "data": "/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #5", "data": "/a~1b", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #6", "data": "/c%d", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #7", "data": "/e^f", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #8", "data": "/g|h", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #9", "data": "/i\\j", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #10", "data": "/k\"l", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #11", "data": "/ ", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #12", "data": "/m~0n", "valid": true }, { "description": "valid JSON-pointer used adding to the last array position", "data": "/foo/-", "valid": true }, { "description": "valid JSON-pointer (- used as object member name)", "data": "/foo/-/bar", "valid": true }, { "description": "valid JSON-pointer (multiple escaped characters)", "data": "/~1~0~0~1~1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #1", "data": "/~1.1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #2", "data": "/~0.1", "valid": true }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #1", "data": "#", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #2", "data": "#/", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #3", "data": "#a", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #1", "data": "/~0~", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #2", "data": "/~0/~", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #1", "data": "/~2", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #2", "data": "/~-1", "valid": false }, { "description": "not a valid JSON-pointer (multiple characters not escaped)", "data": "/~~", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #1", "data": "a", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #2", "data": "0", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #3", "data": "a/a", "valid": false }, { "description": "valid JSON-pointer (Unicode characters allowed by RFC 6901)", "data": "/foo/bar/😎", "valid": true }, { "description": "valid JSON-pointer (control characters allowed after JSON unescaping)", "data": "/foo\u0000bar\n\tbaz", "valid": true } ] } ] uri-template.json100640000766000024 1471115240201330 30646 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "format: uri-template", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid uri-template", "data": "http://example.com/dictionary/{term:1}/{term}", "valid": true }, { "description": "an invalid uri-template", "data": "http://example.com/dictionary/{term:1}/{term", "valid": false }, { "description": "a valid uri-template without variables", "data": "http://example.com/dictionary", "valid": true }, { "description": "a valid relative uri-template", "data": "dictionary/{term:1}/{term}", "valid": true }, { "description": "an empty expression is invalid", "data": "{}", "valid": false }, { "description": "an empty varspec inside the variable list is invalid", "data": "{a,,b}", "valid": false }, { "description": "a zero prefix max-length is invalid", "data": "{v:0}", "valid": false }, { "description": "a five-digit prefix max-length is invalid", "data": "{v:10000}", "valid": false }, { "description": "an empty string is a valid uri-template", "data": "", "valid": true }, { "description": "an unmatched closing brace is invalid", "data": "foo}bar", "valid": false }, { "description": "a percent-encoded triplet in a literal is valid", "data": "a%41b", "valid": true }, { "description": "a supplementary plane character in a literal is valid", "data": "a\ud83d\ude00b", "valid": true }, { "description": "reserved expansion operator", "data": "{+var}", "valid": true }, { "description": "fragment expansion operator", "data": "{#var}", "valid": true }, { "description": "label expansion operator", "data": "{.var}", "valid": true }, { "description": "path segment expansion operator", "data": "{/var}", "valid": true }, { "description": "path style parameter expansion operator", "data": "{;var}", "valid": true }, { "description": "form style query expansion operator", "data": "{?var}", "valid": true }, { "description": "form style query continuation operator", "data": "{&var}", "valid": true }, { "description": "the explode modifier is valid", "data": "{var*}", "valid": true }, { "description": "a variable list with more than one varspec is valid", "data": "{x,y}", "valid": true }, { "description": "a dotted variable name is valid", "data": "{a.b}", "valid": true }, { "description": "a double dot in a variable name is invalid", "data": "{a..b}", "valid": false }, { "description": "a variable name may start with a percent-encoded triplet", "data": "{%41}", "valid": true }, { "description": "a four-digit prefix max-length is valid", "data": "{v:1000}", "valid": true }, { "description": "a leading zero in the prefix max-length is invalid", "data": "{v:01}", "valid": false }, { "description": "a space in a literal is invalid", "data": "a b", "valid": false }, { "description": "a delete character in a literal is invalid", "data": "a\u007fb", "valid": false }, { "description": "a trailing comma in the variable list is invalid", "data": "{a,}", "valid": false }, { "description": "a default value in a varspec is invalid", "data": "{var=def}", "valid": false }, { "description": "an operator in place of the first varspec is invalid", "data": "{,+var}", "valid": false }, { "description": "an apostrophe in a literal is valid", "data": "a'b", "valid": true } ] } ] refOfUnknownKeyword.json100640000766000024 624215240201330 30714 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "reference of a root arbitrary keyword ", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unknown-keyword": {"type": "integer"}, "properties": { "bar": {"$ref": "#/unknown-keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "reference of a root arbitrary keyword with encoded ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "unknown/keyword": {"type": "integer"}, "properties": { "bar": {"$ref": "#/unknown~1keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "reference of an arbitrary keyword of a sub-schema", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {"unknown-keyword": {"type": "integer"}}, "bar": {"$ref": "#/properties/foo/unknown-keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "reference internals of known non-applicator", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "examples": [ { "type": "string" } ], "$ref": "#/examples/0" }, "tests": [ { "description": "match", "data": "a string", "valid": true }, { "description": "mismatch", "data": 42, "valid": false } ] }, { "description": "reference of an arbitrary keyword of a sub-schema with encoded ref", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "properties": { "foo": {"unknown/keyword": {"type": "integer"}}, "bar": {"$ref": "#/properties/foo/unknown~1keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] } ] idn-hostname.json100640000766000024 5704315240201330 30613 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of internationalized host names", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "idn-hostname" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid host name (example.test in Hangul)", "data": "실례.테스트", "valid": true }, { "description": "illegal first char U+302E Hangul single dot tone mark", "data": "〮실례.테스트", "valid": false }, { "description": "contains illegal char U+302E Hangul single dot tone mark", "data": "실〮례.테스트", "valid": false }, { "description": "a single label of 63 characters is valid", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": true }, { "description": "a single label of 64 characters is too long", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": false }, { "description": "invalid label, correct Punycode", "comment": "https://tools.ietf.org/html/rfc5890#section-2.3.2.1 https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc3492#section-7.1", "data": "-> $1.00 <--", "valid": false }, { "description": "valid Chinese Punycode", "comment": "https://tools.ietf.org/html/rfc5890#section-2.3.2.1 https://tools.ietf.org/html/rfc5891#section-4.4", "data": "xn--ihqwcrb4cv8a8dqg056pqjye", "valid": true }, { "description": "invalid Punycode", "comment": "https://tools.ietf.org/html/rfc5891#section-4.4 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "xn--X", "valid": false }, { "description": "U-label contains \"--\" in the 3rd and 4th position", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1 https://tools.ietf.org/html/rfc5890#section-2.3.2.1", "data": "XN--aa---o47jg78q", "valid": false }, { "description": "U-label starts with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "-hello", "valid": false }, { "description": "U-label ends with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "hello-", "valid": false }, { "description": "U-label starts and ends with a dash", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.1", "data": "-hello-", "valid": false }, { "description": "Begins with a Spacing Combining Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0903hello", "valid": false }, { "description": "Begins with a Nonspacing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0300hello", "valid": false }, { "description": "Begins with an Enclosing Mark", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.2", "data": "\u0488hello", "valid": false }, { "description": "Exceptions that are PVALID, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u00df\u03c2\u0f0b\u3007", "valid": true }, { "description": "Exceptions that are PVALID, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u06fd\u06fe", "valid": true }, { "description": "Exceptions that are DISALLOWED, right-to-left chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6", "data": "\u0640\u07fa", "valid": false }, { "description": "Exceptions that are DISALLOWED, left-to-right chars", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.2 https://tools.ietf.org/html/rfc5892#section-2.6 Note: The two combining marks (U+302E and U+302F) are in the middle and not at the start", "data": "\u3031\u3032\u3033\u3034\u3035\u302e\u302f\u303b", "valid": false }, { "description": "MIDDLE DOT with no preceding 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "a\u00b7l", "valid": false }, { "description": "MIDDLE DOT with nothing preceding", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "\u00b7l", "valid": false }, { "description": "MIDDLE DOT with no following 'l'", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7a", "valid": false }, { "description": "MIDDLE DOT with nothing following", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7", "valid": false }, { "description": "MIDDLE DOT with surrounding 'l's", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.3", "data": "l\u00b7l", "valid": true }, { "description": "Greek KERAIA not followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375S", "valid": false }, { "description": "Greek KERAIA not followed by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375", "valid": false }, { "description": "Greek KERAIA followed by Greek", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.4", "data": "\u03b1\u0375\u03b2", "valid": true }, { "description": "Hebrew GERESH not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "A\u05f3\u05d1", "valid": false }, { "description": "Hebrew GERESH not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "\u05f3\u05d1", "valid": false }, { "description": "Hebrew GERESH preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.5", "data": "\u05d0\u05f3\u05d1", "valid": true }, { "description": "Hebrew GERSHAYIM not preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "A\u05f4\u05d1", "valid": false }, { "description": "Hebrew GERSHAYIM not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "\u05f4\u05d1", "valid": false }, { "description": "Hebrew GERSHAYIM preceded by Hebrew", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.6", "data": "\u05d0\u05f4\u05d1", "valid": true }, { "description": "KATAKANA MIDDLE DOT with no Hiragana, Katakana, or Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "def\u30fbabc", "valid": false }, { "description": "KATAKANA MIDDLE DOT with no other characters", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb", "valid": false }, { "description": "KATAKANA MIDDLE DOT with Hiragana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u3041", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Katakana", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u30a1", "valid": true }, { "description": "KATAKANA MIDDLE DOT with Han", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.7", "data": "\u30fb\u4e08", "valid": true }, { "description": "Arabic-Indic digits mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "\u0628\u0660\u06f0", "valid": false }, { "description": "Arabic-Indic digits not mixed with Extended Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.8", "data": "\u0628\u0660\u0628", "valid": true }, { "description": "Extended Arabic-Indic digits not mixed with Arabic-Indic digits", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.9", "data": "\u06f00", "valid": true }, { "description": "ZERO WIDTH JOINER not preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u0915\u200d\u0937", "valid": false }, { "description": "ZERO WIDTH JOINER not preceded by anything", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u200d\u0937", "valid": false }, { "description": "ZERO WIDTH JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.2 https://www.unicode.org/review/pr-37.pdf", "data": "\u0915\u094d\u200d\u0937", "valid": true }, { "description": "ZERO WIDTH NON-JOINER preceded by Virama", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1", "data": "\u0915\u094d\u200c\u0937", "valid": true }, { "description": "ZERO WIDTH NON-JOINER not preceded by Virama but matches regexp", "comment": "https://tools.ietf.org/html/rfc5891#section-4.2.3.3 https://tools.ietf.org/html/rfc5892#appendix-A.1 https://www.w3.org/TR/alreq/#h_disjoining_enforcement", "data": "\u0628\u064a\u200c\u0628\u064a", "valid": true }, { "description": "single label", "data": "hostname", "valid": true }, { "description": "single label with hyphen", "data": "host-name", "valid": true }, { "description": "single label with digits", "data": "h0stn4me", "valid": true }, { "description": "single label starting with digit", "data": "1host", "valid": true }, { "description": "single label ending with digit", "data": "hostnam3", "valid": true }, { "description": "empty string", "data": "", "valid": false }, { "description": "zero width non-joiner must pass at every occurrence", "comment": "https://www.rfc-editor.org/rfc/rfc5892#appendix-A.1", "data": "\u0915\u094d\u200c\u0937x\u200cy", "valid": false }, { "description": "Bidi domain name with a digit-first label is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2 a label in a Bidi domain name must start with an L, R or AL character", "data": "0a.\u05d0", "valid": false }, { "description": "label starting with a digit before a right-to-left letter is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "0\u0627", "valid": false }, { "description": "left-to-right label containing a right-to-left letter is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "a\u05d0", "valid": false }, { "description": "right-to-left label mixing both digit types is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5893#section-2", "data": "\u05d00\u0660", "valid": false }, { "description": "A-label that decodes to a disallowed code point is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 https://www.rfc-editor.org/rfc/rfc5892#section-2.6", "data": "xn--7a", "valid": false }, { "description": "A-label that decodes to a Bidi rule violation is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 https://www.rfc-editor.org/rfc/rfc5893", "data": "xn--0ca24w", "valid": false }, { "description": "a U-label whose A-label form is longer than 63 octets is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5891#section-4.2.4 the 63-octet limit is on the A-label form, not the code point count", "data": "\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc", "valid": false }, { "description": "empty label between two dots is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc1034#section-3.1", "data": "a..b", "valid": false }, { "description": "a name longer than 253 characters is invalid", "data": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "valid": false }, { "description": "A-label that decodes to only ASCII is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5890#section-2.3.2.1 a U-label must have at least one non-ASCII character", "data": "xn--example-", "valid": false }, { "description": "non-canonical Punycode that does not re-encode to itself is invalid", "comment": "https://www.rfc-editor.org/rfc/rfc5891#section-5.4 a label decoded from Punycode must be identical to the original A-label", "data": "xn---9uc", "valid": false } ] }, { "description": "validation of separators in internationalized host names", "specification": [ {"rfc3490": "3.1", "quote": "Whenever dots are used as label separators, the following characters MUST be recognized as dots: U+002E (full stop), U+3002 (ideographic full stop), U+FF0E (fullwidth full stop), U+FF61(halfwidth ideographic full stop)"} ], "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "idn-hostname" }, "tests": [ { "description": "single dot", "data": ".", "valid": false }, { "description": "single ideographic full stop", "data": "\u3002", "valid": false }, { "description": "single fullwidth full stop", "data": "\uff0e", "valid": false }, { "description": "single halfwidth ideographic full stop", "data": "\uff61", "valid": false }, { "description": "dot as label separator", "data": "a.b", "valid": true }, { "description": "ideographic full stop as label separator", "data": "a\u3002b", "valid": true }, { "description": "fullwidth full stop as label separator", "data": "a\uff0eb", "valid": true }, { "description": "halfwidth ideographic full stop as label separator", "data": "a\uff61b", "valid": true }, { "description": "leading dot", "data": ".example", "valid": false }, { "description": "leading ideographic full stop", "data": "\u3002example", "valid": false }, { "description": "leading fullwidth full stop", "data": "\uff0eexample", "valid": false }, { "description": "leading halfwidth ideographic full stop", "data": "\uff61example", "valid": false }, { "description": "trailing dot", "data": "example.", "valid": false }, { "description": "trailing ideographic full stop", "data": "example\u3002", "valid": false }, { "description": "trailing fullwidth full stop", "data": "example\uff0e", "valid": false }, { "description": "trailing halfwidth ideographic full stop", "data": "example\uff61", "valid": false }, { "description": "label too long if separator ignored (full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα.com", "valid": true }, { "description": "label too long if separator ignored (ideographic full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\u3002com", "valid": true }, { "description": "label too long if separator ignored (fullwidth full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\uff0ecom", "valid": true }, { "description": "label too long if separator ignored (halfwidth ideographic full stop)", "data": "παράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπαράδειγμαπα\uff61com", "valid": true } ] } ] json-pointer.json100640000766000024 1604315240201330 30647 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of JSON-pointers (JSON String Representation)", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid JSON-pointer", "data": "/foo/bar~0/baz~1/%a", "valid": true }, { "description": "not a valid JSON-pointer (~ not escaped)", "data": "/foo/bar~", "valid": false }, { "description": "valid JSON-pointer with empty segment", "data": "/foo//bar", "valid": true }, { "description": "valid JSON-pointer with the last empty segment", "data": "/foo/bar/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #1", "data": "", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #2", "data": "/foo", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #3", "data": "/foo/0", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #4", "data": "/", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #5", "data": "/a~1b", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #6", "data": "/c%d", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #7", "data": "/e^f", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #8", "data": "/g|h", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #9", "data": "/i\\j", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #10", "data": "/k\"l", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #11", "data": "/ ", "valid": true }, { "description": "valid JSON-pointer as stated in RFC 6901 #12", "data": "/m~0n", "valid": true }, { "description": "valid JSON-pointer used adding to the last array position", "data": "/foo/-", "valid": true }, { "description": "valid JSON-pointer (- used as object member name)", "data": "/foo/-/bar", "valid": true }, { "description": "valid JSON-pointer (multiple escaped characters)", "data": "/~1~0~0~1~1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #1", "data": "/~1.1", "valid": true }, { "description": "valid JSON-pointer (escaped with fraction part) #2", "data": "/~0.1", "valid": true }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #1", "data": "#", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #2", "data": "#/", "valid": false }, { "description": "not a valid JSON-pointer (URI Fragment Identifier) #3", "data": "#a", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #1", "data": "/~0~", "valid": false }, { "description": "not a valid JSON-pointer (some escaped, but not all) #2", "data": "/~0/~", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #1", "data": "/~2", "valid": false }, { "description": "not a valid JSON-pointer (wrong escape character) #2", "data": "/~-1", "valid": false }, { "description": "not a valid JSON-pointer (multiple characters not escaped)", "data": "/~~", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #1", "data": "a", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #2", "data": "0", "valid": false }, { "description": "not a valid JSON-pointer (isn't empty nor starts with /) #3", "data": "a/a", "valid": false }, { "description": "valid JSON-pointer (Unicode characters allowed by RFC 6901)", "data": "/foo/bar/😎", "valid": true }, { "description": "valid JSON-pointer (control characters allowed after JSON unescaping)", "data": "/foo\u0000bar\n\tbaz", "valid": true } ] } ] uri-template.json100640000766000024 1471115240201330 30630 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "format: uri-template", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "uri-template" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid uri-template", "data": "http://example.com/dictionary/{term:1}/{term}", "valid": true }, { "description": "an invalid uri-template", "data": "http://example.com/dictionary/{term:1}/{term", "valid": false }, { "description": "a valid uri-template without variables", "data": "http://example.com/dictionary", "valid": true }, { "description": "a valid relative uri-template", "data": "dictionary/{term:1}/{term}", "valid": true }, { "description": "an empty expression is invalid", "data": "{}", "valid": false }, { "description": "an empty varspec inside the variable list is invalid", "data": "{a,,b}", "valid": false }, { "description": "a zero prefix max-length is invalid", "data": "{v:0}", "valid": false }, { "description": "a five-digit prefix max-length is invalid", "data": "{v:10000}", "valid": false }, { "description": "an empty string is a valid uri-template", "data": "", "valid": true }, { "description": "an unmatched closing brace is invalid", "data": "foo}bar", "valid": false }, { "description": "a percent-encoded triplet in a literal is valid", "data": "a%41b", "valid": true }, { "description": "a supplementary plane character in a literal is valid", "data": "a\ud83d\ude00b", "valid": true }, { "description": "reserved expansion operator", "data": "{+var}", "valid": true }, { "description": "fragment expansion operator", "data": "{#var}", "valid": true }, { "description": "label expansion operator", "data": "{.var}", "valid": true }, { "description": "path segment expansion operator", "data": "{/var}", "valid": true }, { "description": "path style parameter expansion operator", "data": "{;var}", "valid": true }, { "description": "form style query expansion operator", "data": "{?var}", "valid": true }, { "description": "form style query continuation operator", "data": "{&var}", "valid": true }, { "description": "the explode modifier is valid", "data": "{var*}", "valid": true }, { "description": "a variable list with more than one varspec is valid", "data": "{x,y}", "valid": true }, { "description": "a dotted variable name is valid", "data": "{a.b}", "valid": true }, { "description": "a double dot in a variable name is invalid", "data": "{a..b}", "valid": false }, { "description": "a variable name may start with a percent-encoded triplet", "data": "{%41}", "valid": true }, { "description": "a four-digit prefix max-length is valid", "data": "{v:1000}", "valid": true }, { "description": "a leading zero in the prefix max-length is invalid", "data": "{v:01}", "valid": false }, { "description": "a space in a literal is invalid", "data": "a b", "valid": false }, { "description": "a delete character in a literal is invalid", "data": "a\u007fb", "valid": false }, { "description": "a trailing comma in the variable list is invalid", "data": "{a,}", "valid": false }, { "description": "a default value in a varspec is invalid", "data": "{var=def}", "valid": false }, { "description": "an operator in place of the first varspec is invalid", "data": "{,+var}", "valid": false }, { "description": "an apostrophe in a literal is valid", "data": "a'b", "valid": true } ] } ] refOfUnknownKeyword.json100640000766000024 624215240201330 30676 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "reference of a root arbitrary keyword ", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unknown-keyword": {"type": "integer"}, "properties": { "bar": {"$ref": "#/unknown-keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "reference of a root arbitrary keyword with encoded ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "unknown/keyword": {"type": "integer"}, "properties": { "bar": {"$ref": "#/unknown~1keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "reference of an arbitrary keyword of a sub-schema", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {"unknown-keyword": {"type": "integer"}}, "bar": {"$ref": "#/properties/foo/unknown-keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] }, { "description": "reference internals of known non-applicator", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "examples": [ { "type": "string" } ], "$ref": "#/examples/0" }, "tests": [ { "description": "match", "data": "a string", "valid": true }, { "description": "mismatch", "data": 42, "valid": false } ] }, { "description": "reference of an arbitrary keyword of a sub-schema with encoded ref", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "foo": {"unknown/keyword": {"type": "integer"}}, "bar": {"$ref": "#/properties/foo/unknown~1keyword"} } }, "tests": [ { "description": "match", "data": {"bar": 3}, "valid": true }, { "description": "mismatch", "data": {"bar": true}, "valid": false } ] } ] baseUriChange000755000766000024 015240201330 25062 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09folderInteger.json100640000766000024 13115240201330 30655 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09/baseUriChange{ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer" } baseUriChange000755000766000024 015240201330 25044 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12folderInteger.json100640000766000024 13115240201330 30637 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12/baseUriChange{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer" } iri-reference.json100640000766000024 444515240201330 30740 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of IRI References", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "iri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IRI", "data": "http://ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid protocol-relative IRI Reference", "data": "//ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid relative IRI Reference", "data": "/âππ", "valid": true }, { "description": "an invalid IRI Reference", "data": "\\\\WINDOWS\\filëßåré", "valid": false }, { "description": "a valid IRI Reference", "data": "âππ", "valid": true }, { "description": "a valid IRI fragment", "data": "#ƒrägmênt", "valid": true }, { "description": "an invalid IRI fragment", "data": "#ƒräg\\mênt", "valid": false } ] } ] uri-reference.json100640000766000024 1561715240201330 30777 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of URI References", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URI", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid relative URI Reference", "data": "/abc", "valid": true }, { "description": "an invalid URI Reference", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "a valid URI Reference", "data": "abc", "valid": true }, { "description": "a valid URI fragment", "data": "#fragment", "valid": true }, { "description": "an invalid URI fragment", "data": "#frag\\ment", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "an empty URI reference", "comment": "RFC 3986, Section 4.2: relative-part includes path-empty, which is zero characters.", "data": "", "valid": true }, { "description": "a query-only reference", "comment": "RFC 3986, Section 4.2: relative-ref = relative-part [ \"?\" query ] [ \"#\" fragment ], so a query with an empty path is a reference.", "data": "?query=1", "valid": true }, { "description": "a network-path reference with an empty authority", "comment": "RFC 3986, Section 3.2.2: host = IP-literal / IPv4address / reg-name, and reg-name may be empty.", "data": "//", "valid": true }, { "description": "an incomplete percent-encoding", "comment": "RFC 3986, Section 2.1: pct-encoded = \"%\" HEXDIG HEXDIG.", "data": "/%zz", "valid": false }, { "description": "a double quote in a path", "comment": "RFC 3986, Appendix A: pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\", and the double quote is in none of them.", "data": "/a\"b", "valid": false }, { "description": "square brackets outside an authority", "comment": "RFC 3986, Section 3.2.2: square brackets are reserved for an IP-literal inside the authority. path-absolute is built from pchar, which excludes them.", "data": "/[::1]", "valid": false }, { "description": "a non-numeric port in a network-path reference", "comment": "RFC 3986, Section 3.2.3: port = *DIGIT. reg-name admits no colon, so the text after the colon can only be a port.", "data": "//example.com:abc/p", "valid": false }, { "description": "more than one at-sign in the authority", "comment": "RFC 3986, Section 3.2: authority = [ userinfo \"@\" ] host [ \":\" port ]. Neither userinfo nor host admits a literal at-sign.", "data": "//a@b@example.com/", "valid": false }, { "description": "a leading zero in the IPv4 part of an IPv6 literal", "comment": "RFC 3986, Section 3.2.2: inside an IP-literal the dotted quad must be an IPv4address, and dec-octet has no leading-zero alternative. There is no reg-name fallback inside brackets.", "data": "//[::ffff:192.168.0.01]/p", "valid": false }, { "description": "a colon in the first segment of a relative-path reference", "comment": "RFC 3986, Section 4.2: relative-part uses path-noscheme, whose first segment is segment-nz-nc - a non-zero-length segment without any colon. A scheme must start with ALPHA, so 1:b cannot be read as a URI either.", "data": "1:b", "valid": false }, { "description": "a colon in the first segment preceded by a dot-segment", "comment": "RFC 3986, Section 4.2: \"Such a segment must be preceded by a dot-segment (e.g., \\\"./this:that\\\") to make a relative-path reference.\"", "data": "./this:that", "valid": true } ] } ] iri-reference.json100640000766000024 444515240201330 30722 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of IRI References", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "iri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid IRI", "data": "http://ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid protocol-relative IRI Reference", "data": "//ƒøø.ßår/?∂éœ=πîx#πîüx", "valid": true }, { "description": "a valid relative IRI Reference", "data": "/âππ", "valid": true }, { "description": "an invalid IRI Reference", "data": "\\\\WINDOWS\\filëßåré", "valid": false }, { "description": "a valid IRI Reference", "data": "âππ", "valid": true }, { "description": "a valid IRI fragment", "data": "#ƒrägmênt", "valid": true }, { "description": "an invalid IRI fragment", "data": "#ƒräg\\mênt", "valid": false } ] } ] uri-reference.json100640000766000024 1561715240201330 30761 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of URI References", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "uri-reference" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid URI", "data": "http://foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid protocol-relative URI Reference", "data": "//foo.bar/?baz=qux#quux", "valid": true }, { "description": "a valid relative URI Reference", "data": "/abc", "valid": true }, { "description": "an invalid URI Reference", "data": "\\\\WINDOWS\\fileshare", "valid": false }, { "description": "a valid URI Reference", "data": "abc", "valid": true }, { "description": "a valid URI fragment", "data": "#fragment", "valid": true }, { "description": "an invalid URI fragment", "data": "#frag\\ment", "valid": false }, { "description": "unescaped non US-ASCII characters", "data": "/foobar®.txt", "valid": false }, { "description": "invalid backslash character", "data": "https://example.org/foobar\\.txt", "valid": false }, { "description": "URI with leading-zero IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: If an IP literal fails strict IPv4address parsing, it falls back to reg-name. A string of digits and dots is valid under unreserved characters. JSON Schema format asserts syntax, not scheme-specific DNS semantics.", "data": "http://087.10.0.1/", "valid": true }, { "description": "URI with out-of-bounds IPv4 is structurally valid as a reg-name", "comment": "RFC 3986, Section 3.2.2: Fallback to reg-name allows digits and dots.", "data": "http://999.999.999.999/", "valid": true }, { "description": "an empty URI reference", "comment": "RFC 3986, Section 4.2: relative-part includes path-empty, which is zero characters.", "data": "", "valid": true }, { "description": "a query-only reference", "comment": "RFC 3986, Section 4.2: relative-ref = relative-part [ \"?\" query ] [ \"#\" fragment ], so a query with an empty path is a reference.", "data": "?query=1", "valid": true }, { "description": "a network-path reference with an empty authority", "comment": "RFC 3986, Section 3.2.2: host = IP-literal / IPv4address / reg-name, and reg-name may be empty.", "data": "//", "valid": true }, { "description": "an incomplete percent-encoding", "comment": "RFC 3986, Section 2.1: pct-encoded = \"%\" HEXDIG HEXDIG.", "data": "/%zz", "valid": false }, { "description": "a double quote in a path", "comment": "RFC 3986, Appendix A: pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\", and the double quote is in none of them.", "data": "/a\"b", "valid": false }, { "description": "square brackets outside an authority", "comment": "RFC 3986, Section 3.2.2: square brackets are reserved for an IP-literal inside the authority. path-absolute is built from pchar, which excludes them.", "data": "/[::1]", "valid": false }, { "description": "a non-numeric port in a network-path reference", "comment": "RFC 3986, Section 3.2.3: port = *DIGIT. reg-name admits no colon, so the text after the colon can only be a port.", "data": "//example.com:abc/p", "valid": false }, { "description": "more than one at-sign in the authority", "comment": "RFC 3986, Section 3.2: authority = [ userinfo \"@\" ] host [ \":\" port ]. Neither userinfo nor host admits a literal at-sign.", "data": "//a@b@example.com/", "valid": false }, { "description": "a leading zero in the IPv4 part of an IPv6 literal", "comment": "RFC 3986, Section 3.2.2: inside an IP-literal the dotted quad must be an IPv4address, and dec-octet has no leading-zero alternative. There is no reg-name fallback inside brackets.", "data": "//[::ffff:192.168.0.01]/p", "valid": false }, { "description": "a colon in the first segment of a relative-path reference", "comment": "RFC 3986, Section 4.2: relative-part uses path-noscheme, whose first segment is segment-nz-nc - a non-zero-length segment without any colon. A scheme must start with ALPHA, so 1:b cannot be read as a URI either.", "data": "1:b", "valid": false }, { "description": "a colon in the first segment preceded by a dot-segment", "comment": "RFC 3986, Section 4.2: \"Such a segment must be preceded by a dot-segment (e.g., \\\"./this:that\\\") to make a relative-path reference.\"", "data": "./this:that", "valid": true } ] } ] locationIndependentIdentifier.json100640000766000024 35515240201330 31365 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$schema": "https://json-schema.org/draft/2019-09/schema", "$defs": { "refToInteger": { "$ref": "#foo" }, "A": { "$anchor": "foo", "type": "integer" } } } nested-absolute-ref-to-string.json100640000766000024 34215240201330 31164 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$defs": { "bar": { "$id": "http://localhost:1234/draft2019-09/the-nested-id.json", "type": "string" } }, "$ref": "http://localhost:1234/draft2019-09/the-nested-id.json" } locationIndependentIdentifier.json100640000766000024 35515240201330 31347 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "refToInteger": { "$ref": "#foo" }, "A": { "$anchor": "foo", "type": "integer" } } } nested-absolute-ref-to-string.json100640000766000024 34215240201330 31146 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$defs": { "bar": { "$id": "http://localhost:1234/draft2020-12/the-nested-id.json", "type": "string" } }, "$ref": "http://localhost:1234/draft2020-12/the-nested-id.json" } relative-json-pointer.json100640000766000024 1026415240201330 32022 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft7/optional/format[ { "description": "validation of Relative JSON Pointers (RJP)", "schema": { "format": "relative-json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid upwards RJP", "data": "1", "valid": true }, { "description": "a valid downwards RJP", "data": "0/foo/bar", "valid": true }, { "description": "a valid up and then down RJP, with array index", "data": "2/0/baz/1/zip", "valid": true }, { "description": "a valid RJP taking the member or index name", "data": "0#", "valid": true }, { "description": "an invalid RJP that is a valid JSON Pointer", "data": "/foo/bar", "valid": false }, { "description": "negative prefix", "data": "-1/foo/bar", "valid": false }, { "description": "explicit positive prefix", "data": "+1/foo/bar", "valid": false }, { "description": "non-ASCII digit in the prefix is not allowed", "data": "١/foo", "valid": false }, { "description": "## is not a valid json-pointer", "data": "0##", "valid": false }, { "description": "zero cannot be followed by other digits, plus json-pointer", "data": "01/a", "valid": false }, { "description": "zero cannot be followed by other digits, plus octothorpe", "data": "01#", "valid": false }, { "description": "empty string", "data": "", "valid": false }, { "description": "multi-digit integer prefix", "data": "120/foo/bar", "valid": true }, { "description": "multi-digit prefix with a zero followed by another digit", "data": "100", "valid": true }, { "description": "tilde not followed by 0 or 1 in the json-pointer part", "data": "0/~2", "valid": false }, { "description": "unescaped tilde at the end of the json-pointer part", "data": "0/foo/bar~", "valid": false }, { "description": "octothorpe followed by a json-pointer", "data": "1#/foo/bar", "valid": false }, { "description": "empty reference tokens in the json-pointer part", "data": "0//", "valid": true }, { "description": "trailing newline after the non-negative integer", "data": "1\n", "valid": false } ] } ] propertyDependencies000755000766000024 015240201330 26747 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/proposalsdynamicRef.json100640000766000024 1233015240201330 32076 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/proposals/propertyDependencies[ { "description": "multiple dynamic paths to the $dynamicRef keyword", "schema": { "$schema": "https://json-schema.org/v1", "$id": "https://test.json-schema.org/dynamic-ref-with-multiple-paths/main", "propertyDependencies": { "kindOfList": { "numbers": { "$ref": "numberList" }, "strings": { "$ref": "stringList" } } }, "$defs": { "genericList": { "$id": "genericList", "properties": { "list": { "items": { "$dynamicRef": "#itemType" } } } }, "numberList": { "$id": "numberList", "$defs": { "itemType": { "$dynamicAnchor": "itemType", "type": "number" } }, "$ref": "genericList" }, "stringList": { "$id": "stringList", "$defs": { "itemType": { "$dynamicAnchor": "itemType", "type": "string" } }, "$ref": "genericList" } } }, "tests": [ { "description": "number list with number values", "data": { "kindOfList": "numbers", "list": [1.1] }, "valid": true }, { "description": "number list with string values", "data": { "kindOfList": "numbers", "list": ["foo"] }, "valid": false }, { "description": "string list with number values", "data": { "kindOfList": "strings", "list": [1.1] }, "valid": false }, { "description": "string list with string values", "data": { "kindOfList": "strings", "list": ["foo"] }, "valid": true } ] }, { "description": "$dynamicAnchor inside propertyDependencies", "schema": { "$schema": "https://json-schema.org/v1", "$id": "http://localhost:1234/v1/dynamicanchor-in-propertydependencies.json", "$defs": { "inner": { "$id": "inner", "$dynamicAnchor": "foo", "type": "object", "properties": { "expectedTypes": { "type": "string" } }, "additionalProperties": { "$dynamicRef": "#foo" } } }, "propertyDependencies": { "expectedTypes": { "strings": { "$id": "east", "$ref": "inner", "$defs": { "foo": { "$dynamicAnchor": "foo", "type": "string" } } }, "integers": { "$id": "west", "$ref": "inner", "$defs": { "foo": { "$dynamicAnchor": "foo", "type": "integer" } } } } } }, "tests": [ { "description": "expected strings - additional property as string is valid", "data": { "expectedTypes": "strings", "anotherProperty": "also a string" }, "valid": true }, { "description": "expected strings - additional property as not string is invalid", "data": { "expectedTypes": "strings", "anotherProperty": 42 }, "valid": false }, { "description": "expected integers - additional property as integer is valid", "data": { "expectedTypes": "integers", "anotherProperty": 42 }, "valid": true }, { "description": "expected integers - additional property as not integer is invalid", "data": { "expectedTypes": "integers", "anotherProperty": "a string" }, "valid": false } ] } ] metaschema-optional-vocabulary.json100640000766000024 110615240201330 31506 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09{ "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "http://localhost:1234/draft2019-09/metaschema-optional-vocabulary.json", "$vocabulary": { "https://json-schema.org/draft/2019-09/vocab/validation": true, "https://json-schema.org/draft/2019-09/vocab/core": true, "http://localhost:1234/draft/2019-09/vocab/custom": false }, "$recursiveAnchor": true, "allOf": [ { "$ref": "https://json-schema.org/draft/2019-09/meta/validation" }, { "$ref": "https://json-schema.org/draft/2019-09/meta/core" } ] } metaschema-optional-vocabulary.json100640000766000024 110615240201330 31470 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "http://localhost:1234/draft2020-12/metaschema-optional-vocabulary.json", "$vocabulary": { "https://json-schema.org/draft/2020-12/vocab/validation": true, "https://json-schema.org/draft/2020-12/vocab/core": true, "http://localhost:1234/draft/2020-12/vocab/custom": false }, "$dynamicAnchor": "meta", "allOf": [ { "$ref": "https://json-schema.org/draft/2020-12/meta/validation" }, { "$ref": "https://json-schema.org/draft/2020-12/meta/core" } ] } ecmascript-regex.json100640000766000024 671715240201330 31467 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "\\a is not an ECMA 262 control escape", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "regex" }, "tests": [ { "description": "when used as a pattern", "data": "\\a", "valid": false } ] }, { "description": "Python-specific regular expression syntax is not valid ECMA 262", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "regex" }, "tests": [ { "description": "Python named group (?P...) is not ECMA 262", "data": "(?Px)", "valid": false }, { "description": "Python named backreference (?P=name) is not ECMA 262", "data": "(?Pa)(?P=n)", "valid": false }, { "description": "inline comment group (?#...) is not ECMA 262", "data": "(?#comment)a", "valid": false } ] }, { "description": "global inline flag groups are not valid ECMA 262", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "regex" }, "tests": [ { "description": "a single global inline flag (?i)", "data": "(?i)abc", "valid": false }, { "description": "multiple global inline flags (?ims)", "data": "(?ims)abc", "valid": false } ] }, { "description": "ECMA 262 named groups and backreferences are valid", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "regex" }, "tests": [ { "description": "an ECMA 262 named group (?...)", "data": "(?x)", "valid": true }, { "description": "an ECMA 262 named backreference \\k", "data": "(?a)\\k", "valid": true } ] }, { "description": "ECMA 262 lookbehind is valid, including variable width", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "regex" }, "tests": [ { "description": "a variable-width lookbehind (ES2018)", "data": "(?<=a+)b", "valid": true } ] }, { "description": "ECMA 262 character classes and escapes", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "regex" }, "tests": [ { "description": "an empty character class is valid ECMA 262", "data": "[]", "valid": true }, { "description": "a negated empty character class is valid ECMA 262", "data": "[^]", "valid": true }, { "description": "a control escape \\cA is valid ECMA 262", "data": "\\cA", "valid": true } ] } ] ecmascript-regex.json100640000766000024 550715240201330 31445 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "\\a is not an ECMA 262 control escape", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "regex" }, "tests": [ { "description": "when used as a pattern", "data": "\\a", "valid": false } ] }, { "description": "Python-specific regular expression syntax is not valid ECMA 262", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "regex" }, "tests": [ { "description": "Python named group (?P...) is not ECMA 262", "data": "(?Px)", "valid": false }, { "description": "Python named backreference (?P=name) is not ECMA 262", "data": "(?Pa)(?P=n)", "valid": false }, { "description": "inline comment group (?#...) is not ECMA 262", "data": "(?#comment)a", "valid": false } ] }, { "description": "global inline flag groups are not valid ECMA 262", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "regex" }, "tests": [ { "description": "a single global inline flag (?i)", "data": "(?i)abc", "valid": false }, { "description": "multiple global inline flags (?ims)", "data": "(?ims)abc", "valid": false } ] }, { "description": "ECMA 262 named groups and backreferences are valid", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "regex" }, "tests": [ { "description": "an ECMA 262 named group (?...)", "data": "(?x)", "valid": true }, { "description": "an ECMA 262 named backreference \\k", "data": "(?a)\\k", "valid": true } ] }, { "description": "ECMA 262 lookbehind is valid, including variable width", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "regex" }, "tests": [ { "description": "a variable-width lookbehind (ES2018)", "data": "(?<=a+)b", "valid": true } ] }, { "description": "ECMA 262 character classes and escapes", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "regex" }, "tests": [ { "description": "an empty character class is valid ECMA 262", "data": "[]", "valid": true }, { "description": "a negated empty character class is valid ECMA 262", "data": "[^]", "valid": true }, { "description": "a control escape \\cA is valid ECMA 262", "data": "\\cA", "valid": true } ] } ] baseUriChangeFolderInSubschema000755000766000024 015240201330 26476 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotesfolderInteger.json100640000766000024 3215240201330 32251 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/baseUriChangeFolderInSubschema{ "type": "integer" } baseUriChangeFolder000755000766000024 015240201330 26216 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09folderInteger.json100640000766000024 13115240201330 32011 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09/baseUriChangeFolder{ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer" } baseUriChangeFolder000755000766000024 015240201330 26200 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12folderInteger.json100640000766000024 13115240201330 31773 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12/baseUriChangeFolder{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer" } dependencies-compatibility.json100640000766000024 1772015240201330 32246 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional[ { "description": "single dependency", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependencies": {"bar": ["foo"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "empty dependents", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependencies": {"bar": []} }, "tests": [ { "description": "empty object", "data": {}, "valid": true }, { "description": "object with one property", "data": {"bar": 2}, "valid": true }, { "description": "non-object is valid", "data": 1, "valid": true } ] }, { "description": "multiple dependents required", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependencies": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependencies": { "foo\nbar": ["foo\rbar"], "foo\"bar": ["foo'bar"] } }, "tests": [ { "description": "CRLF", "data": { "foo\nbar": 1, "foo\rbar": 2 }, "valid": true }, { "description": "quoted quotes", "data": { "foo'bar": 1, "foo\"bar": 2 }, "valid": true }, { "description": "CRLF missing dependent", "data": { "foo\nbar": 1, "foo": 2 }, "valid": false }, { "description": "quoted quotes missing dependent", "data": { "foo\"bar": 2 }, "valid": false } ] }, { "description": "single schema dependency", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependencies": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "boolean subschemas", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependencies": { "foo": true, "bar": false } }, "tests": [ { "description": "object with property having schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property having schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "schema dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "dependencies": { "foo\tbar": {"minProperties": 4}, "foo'bar": {"required": ["foo\"bar"]} } }, "tests": [ { "description": "quoted tab", "data": { "foo\tbar": 1, "a": 2, "b": 3, "c": 4 }, "valid": true }, { "description": "quoted quote", "data": { "foo'bar": {"foo\"bar": 1} }, "valid": false }, { "description": "quoted tab invalid under dependent schema", "data": { "foo\tbar": 1, "a": 2 }, "valid": false }, { "description": "quoted quote invalid under dependent schema", "data": {"foo'bar": 1}, "valid": false } ] } ] dependencies-compatibility.json100640000766000024 1772015240201330 32230 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional[ { "description": "single dependency", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependencies": {"bar": ["foo"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependant", "data": {"foo": 1}, "valid": true }, { "description": "with dependency", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "missing dependency", "data": {"bar": 2}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "empty dependents", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependencies": {"bar": []} }, "tests": [ { "description": "empty object", "data": {}, "valid": true }, { "description": "object with one property", "data": {"bar": 2}, "valid": true }, { "description": "non-object is valid", "data": 1, "valid": true } ] }, { "description": "multiple dependents required", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependencies": {"quux": ["foo", "bar"]} }, "tests": [ { "description": "neither", "data": {}, "valid": true }, { "description": "nondependants", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "with dependencies", "data": {"foo": 1, "bar": 2, "quux": 3}, "valid": true }, { "description": "missing dependency", "data": {"foo": 1, "quux": 2}, "valid": false }, { "description": "missing other dependency", "data": {"bar": 1, "quux": 2}, "valid": false }, { "description": "missing both dependencies", "data": {"quux": 1}, "valid": false } ] }, { "description": "dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependencies": { "foo\nbar": ["foo\rbar"], "foo\"bar": ["foo'bar"] } }, "tests": [ { "description": "CRLF", "data": { "foo\nbar": 1, "foo\rbar": 2 }, "valid": true }, { "description": "quoted quotes", "data": { "foo'bar": 1, "foo\"bar": 2 }, "valid": true }, { "description": "CRLF missing dependent", "data": { "foo\nbar": 1, "foo": 2 }, "valid": false }, { "description": "quoted quotes missing dependent", "data": { "foo\"bar": 2 }, "valid": false } ] }, { "description": "single schema dependency", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependencies": { "bar": { "properties": { "foo": {"type": "integer"}, "bar": {"type": "integer"} } } } }, "tests": [ { "description": "valid", "data": {"foo": 1, "bar": 2}, "valid": true }, { "description": "no dependency", "data": {"foo": "quux"}, "valid": true }, { "description": "wrong type", "data": {"foo": "quux", "bar": 2}, "valid": false }, { "description": "wrong type other", "data": {"foo": 2, "bar": "quux"}, "valid": false }, { "description": "wrong type both", "data": {"foo": "quux", "bar": "quux"}, "valid": false }, { "description": "ignores arrays", "data": ["bar"], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "boolean subschemas", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependencies": { "foo": true, "bar": false } }, "tests": [ { "description": "object with property having schema true is valid", "data": {"foo": 1}, "valid": true }, { "description": "object with property having schema false is invalid", "data": {"bar": 2}, "valid": false }, { "description": "object with both properties is invalid", "data": {"foo": 1, "bar": 2}, "valid": false }, { "description": "empty object is valid", "data": {}, "valid": true } ] }, { "description": "schema dependencies with escaped characters", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "dependencies": { "foo\tbar": {"minProperties": 4}, "foo'bar": {"required": ["foo\"bar"]} } }, "tests": [ { "description": "quoted tab", "data": { "foo\tbar": 1, "a": 2, "b": 3, "c": 4 }, "valid": true }, { "description": "quoted quote", "data": { "foo'bar": {"foo\"bar": 1} }, "valid": false }, { "description": "quoted tab invalid under dependent schema", "data": { "foo\tbar": 1, "a": 2 }, "valid": false }, { "description": "quoted quote invalid under dependent schema", "data": {"foo'bar": 1}, "valid": false } ] } ] baseUriChangeFolderInSubschema000755000766000024 015240201330 27024 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1folderInteger.json100640000766000024 10715240201330 32622 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/v1/baseUriChangeFolderInSubschema{ "$schema": "https://json-schema.org/v1", "type": "integer" } relative-json-pointer.json100640000766000024 1041715240201330 32475 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2019-09/optional/format[ { "description": "validation of Relative JSON Pointers (RJP)", "schema": { "$schema": "https://json-schema.org/draft/2019-09/schema", "format": "relative-json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid upwards RJP", "data": "1", "valid": true }, { "description": "a valid downwards RJP", "data": "0/foo/bar", "valid": true }, { "description": "a valid up and then down RJP, with array index", "data": "2/0/baz/1/zip", "valid": true }, { "description": "a valid RJP taking the member or index name", "data": "0#", "valid": true }, { "description": "an invalid RJP that is a valid JSON Pointer", "data": "/foo/bar", "valid": false }, { "description": "negative prefix", "data": "-1/foo/bar", "valid": false }, { "description": "explicit positive prefix", "data": "+1/foo/bar", "valid": false }, { "description": "non-ASCII digit in the prefix is not allowed", "data": "١/foo", "valid": false }, { "description": "## is not a valid json-pointer", "data": "0##", "valid": false }, { "description": "zero cannot be followed by other digits, plus json-pointer", "data": "01/a", "valid": false }, { "description": "zero cannot be followed by other digits, plus octothorpe", "data": "01#", "valid": false }, { "description": "empty string", "data": "", "valid": false }, { "description": "multi-digit integer prefix", "data": "120/foo/bar", "valid": true }, { "description": "multi-digit prefix with a zero followed by another digit", "data": "100", "valid": true }, { "description": "tilde not followed by 0 or 1 in the json-pointer part", "data": "0/~2", "valid": false }, { "description": "unescaped tilde at the end of the json-pointer part", "data": "0/foo/bar~", "valid": false }, { "description": "octothorpe followed by a json-pointer", "data": "1#/foo/bar", "valid": false }, { "description": "empty reference tokens in the json-pointer part", "data": "0//", "valid": true }, { "description": "trailing newline after the non-negative integer", "data": "1\n", "valid": false } ] } ] relative-json-pointer.json100640000766000024 1041715240201330 32457 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/draft2020-12/optional/format[ { "description": "validation of Relative JSON Pointers (RJP)", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "relative-json-pointer" }, "tests": [ { "description": "all string formats ignore integers", "data": 12, "valid": true }, { "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { "description": "all string formats ignore objects", "data": {}, "valid": true }, { "description": "all string formats ignore arrays", "data": [], "valid": true }, { "description": "all string formats ignore booleans", "data": false, "valid": true }, { "description": "all string formats ignore nulls", "data": null, "valid": true }, { "description": "a valid upwards RJP", "data": "1", "valid": true }, { "description": "a valid downwards RJP", "data": "0/foo/bar", "valid": true }, { "description": "a valid up and then down RJP, with array index", "data": "2/0/baz/1/zip", "valid": true }, { "description": "a valid RJP taking the member or index name", "data": "0#", "valid": true }, { "description": "an invalid RJP that is a valid JSON Pointer", "data": "/foo/bar", "valid": false }, { "description": "negative prefix", "data": "-1/foo/bar", "valid": false }, { "description": "explicit positive prefix", "data": "+1/foo/bar", "valid": false }, { "description": "non-ASCII digit in the prefix is not allowed", "data": "١/foo", "valid": false }, { "description": "## is not a valid json-pointer", "data": "0##", "valid": false }, { "description": "zero cannot be followed by other digits, plus json-pointer", "data": "01/a", "valid": false }, { "description": "zero cannot be followed by other digits, plus octothorpe", "data": "01#", "valid": false }, { "description": "empty string", "data": "", "valid": false }, { "description": "multi-digit integer prefix", "data": "120/foo/bar", "valid": true }, { "description": "multi-digit prefix with a zero followed by another digit", "data": "100", "valid": true }, { "description": "tilde not followed by 0 or 1 in the json-pointer part", "data": "0/~2", "valid": false }, { "description": "unescaped tilde at the end of the json-pointer part", "data": "0/foo/bar~", "valid": false }, { "description": "octothorpe followed by a json-pointer", "data": "1#/foo/bar", "valid": false }, { "description": "empty reference tokens in the json-pointer part", "data": "0//", "valid": true }, { "description": "trailing newline after the non-negative integer", "data": "1\n", "valid": false } ] } ] additionalProperties.json100640000766000024 216515240201330 34167 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/proposals/propertyDependencies[ { "description": "propertyDependencies with additionalProperties", "schema": { "$schema": "https://json-schema.org/v1", "properties" : {"foo2" : {}}, "propertyDependencies": { "foo" : {}, "foo2": { "bar": { "properties": { "buz": {} } } } }, "additionalProperties": false }, "tests": [ { "description": "additionalProperties doesn't consider propertyDependencies properties" , "data": {"foo": ""}, "valid": false }, { "description": "additionalProperties can't see buz even when foo2 is present", "data": {"foo2": "bar", "buz": ""}, "valid": false }, { "description": "additionalProperties can't see buz", "data": {"buz": ""}, "valid": false } ] } ] propertyDependencies.json100640000766000024 1113015240201330 34205 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/proposals/propertyDependencies[ { "description": "propertyDependencies doesn't act on non-objects", "schema": { "propertyDependencies": { "foo": {"bar": false} } }, "tests": [ { "description": "ignores booleans", "data": true, "valid": true }, { "description": "ignores integers", "data": 123, "valid": true }, { "description": "ignores floats", "data": 1.0, "valid": true }, { "description": "ignores strings", "data": "abc", "valid": true }, { "description": "ignores arrays", "data": [], "valid": true }, { "description": "ignores null", "data": null, "valid": true } ] }, { "description": "propertyDependencies doesn't act on non-string property values", "schema": { "propertyDependencies": { "foo": {"bar": false} } }, "tests": [ { "description": "ignores booleans", "data": {"foo": false}, "valid": true }, { "description": "ignores integers", "data": {"foo": 2}, "valid": true }, { "description": "ignores floats", "data": {"foo": 1.1}, "valid": true }, { "description": "ignores objects", "data": {"foo": {}}, "valid": true }, { "description": "ignores objects wth a key of the expected value", "data": {"foo": {"bar": "baz"}}, "valid": true }, { "description": "ignores objects with the expected value nested in structure", "data": {"foo": {"baz": "bar"}}, "valid": true }, { "description": "ignores arrays", "data": {"foo": []}, "valid": true }, { "description": "ignores null", "data": {"foo": null}, "valid": true } ] }, { "description": "multiple options selects the right one", "schema": { "propertyDependencies": { "foo": { "bar": { "minProperties": 2, "maxProperties": 2 }, "baz": {"maxProperties": 1}, "qux": true, "quux": false } } }, "tests": [ { "description": "bar with exactly 2 properties is valid", "data": { "foo": "bar", "other-foo": "other-bar" }, "valid": true }, { "description": "bar with more than 2 properties is invalid", "data": { "foo": "bar", "other-foo": "other-bar", "too": "many" }, "valid": false }, { "description": "bar with fewer than 2 properties is invalid", "data": {"foo": "bar"}, "valid": false }, { "description": "baz alone is valid", "data": {"foo": "baz"}, "valid": true }, { "description": "baz with other properties is invalid", "data": { "foo": "baz", "other-foo": "other-bar" }, "valid": false }, { "description": "anything allowed with qux", "data": { "foo": "qux", "blah": ["some other property"], "more": "properties" }, "valid": true }, { "description": "quux is disallowed", "data": { "foo": "quux" }, "valid": false } ] } ] unevaluatedProperties.json100640000766000024 461215240201330 34373 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/tests/v1/proposals/propertyDependencies[ { "description": "unevaluatedProperties can see inside propertyDependencies", "schema": { "$schema": "https://json-schema.org/v1", "properties": { "foo": { "type": "string" } }, "propertyDependencies": { "foo": { "foo1": { "properties": { "bar": true } } } }, "unevaluatedProperties": false }, "tests": [ { "description": "allows bar if foo = foo1", "data": { "foo": "foo1", "bar": 42 }, "valid": true }, { "description": "disallows bar if foo != foo1", "data": { "foo": "foo2", "bar": 42 }, "valid": false }, { "description": "disallows bar if foo is absent", "data": { "bar": 42 }, "valid": false } ] }, { "description": "propertyDependencies with unevaluatedProperties" , "schema" : { "$schema": "https://json-schema.org/v1", "properties" : {"foo2" : {}}, "propertyDependencies": { "foo" : {}, "foo2": { "bar": { "properties": { "buz": {} } } } }, "unevaluatedProperties": false }, "tests": [ { "description": "unevaluatedProperties doesn't consider propertyDependencies" , "data": {"foo": "bar"}, "valid": false }, { "description": "unevaluatedProperties sees buz when foo2 is present", "data": {"foo2": "bar", "buz": ""}, "valid": true }, { "description": "unevaluatedProperties doesn't see buz when foo2 is absent", "data": {"buz": ""}, "valid": false } ] } ] baseUriChangeFolderInSubschema000755000766000024 015240201330 30340 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09folderInteger.json100640000766000024 13115240201330 34133 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2019-09/baseUriChangeFolderInSubschema{ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer" } baseUriChangeFolderInSubschema000755000766000024 015240201330 30322 5ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12folderInteger.json100640000766000024 13115240201330 34115 0ustar00etherstaff000000000000Test-JSON-Schema-Acceptance-1.038/share/remotes/draft2020-12/baseUriChangeFolderInSubschema{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer" }