Hello community, here is the log from the commit of package perl-JSON-Validator for openSUSE:Factory checked in at 2020-03-27 21:58:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-JSON-Validator (Old) and /work/SRC/openSUSE:Factory/.perl-JSON-Validator.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-JSON-Validator" Fri Mar 27 21:58:40 2020 rev:18 rq:788941 version:3.25 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-JSON-Validator/perl-JSON-Validator.changes 2020-03-11 18:52:29.099598117 +0100 +++ /work/SRC/openSUSE:Factory/.perl-JSON-Validator.new.3160/perl-JSON-Validator.changes 2020-03-27 22:00:20.974899275 +0100 @@ -1,0 +2,14 @@ +Thu Mar 26 03:08:02 UTC 2020 - <timueller+p...@suse.de> + +- updated to 3.25 + see /usr/share/doc/packages/perl-JSON-Validator/Changes + + 3.25 2020-03-26T07:42:16+0900 + - Made "additionalProperties" error message less confusing + - Add support for "items" and "contains" can be defined-but-false #207 + Contributor: Karen Etheridge + - Respect "items" when combined with "contains" #207 + Contributor: Karen Etheridge + - Require Sereal::Encoder 4.00 to speed up data_checksum() + +------------------------------------------------------------------- Old: ---- JSON-Validator-3.24.tar.gz New: ---- JSON-Validator-3.25.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-JSON-Validator.spec ++++++ --- /var/tmp/diff_new_pack.SHxrW2/_old 2020-03-27 22:00:23.162900547 +0100 +++ /var/tmp/diff_new_pack.SHxrW2/_new 2020-03-27 22:00:23.166900550 +0100 @@ -17,7 +17,7 @@ Name: perl-JSON-Validator -Version: 3.24 +Version: 3.25 Release: 0 %define cpan_name JSON-Validator Summary: Validate data against a JSON schema ++++++ JSON-Validator-3.24.tar.gz -> JSON-Validator-3.25.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/JSON-Validator-3.24/Changes new/JSON-Validator-3.25/Changes --- old/JSON-Validator-3.24/Changes 2020-03-03 07:46:39.000000000 +0100 +++ new/JSON-Validator-3.25/Changes 2020-03-25 23:42:16.000000000 +0100 @@ -1,5 +1,13 @@ Revision history for perl distribution JSON-Validator +3.25 2020-03-26T07:42:16+0900 + - Made "additionalProperties" error message less confusing + - Add support for "items" and "contains" can be defined-but-false #207 + Contributor: Karen Etheridge + - Respect "items" when combined with "contains" #207 + Contributor: Karen Etheridge + - Require Sereal::Encoder 4.00 to speed up data_checksum() + 3.24 2020-03-03T15:46:39+0900 - Optimize checksum generation #202 Contributor: Ere Maijala diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/JSON-Validator-3.24/META.json new/JSON-Validator-3.25/META.json --- old/JSON-Validator-3.24/META.json 2020-03-03 07:46:40.000000000 +0100 +++ new/JSON-Validator-3.25/META.json 2020-03-25 23:42:18.000000000 +0100 @@ -63,6 +63,6 @@ }, "x_IRC" : "irc://irc.freenode.net/#mojo" }, - "version" : "3.24", + "version" : "3.25", "x_serialization_backend" : "JSON::PP version 4.02" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/JSON-Validator-3.24/META.yml new/JSON-Validator-3.25/META.yml --- old/JSON-Validator-3.24/META.yml 2020-03-03 07:46:40.000000000 +0100 +++ new/JSON-Validator-3.25/META.yml 2020-03-25 23:42:17.000000000 +0100 @@ -32,5 +32,5 @@ homepage: https://mojolicious.org license: http://www.opensource.org/licenses/artistic-license-2.0 repository: https://github.com/mojolicious/json-validator.git -version: '3.24' +version: '3.25' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/JSON-Validator-3.24/lib/JSON/Validator/Error.pm new/JSON-Validator-3.25/lib/JSON/Validator/Error.pm --- old/JSON-Validator-3.24/lib/JSON/Validator/Error.pm 2020-02-19 01:53:57.000000000 +0100 +++ new/JSON-Validator-3.25/lib/JSON/Validator/Error.pm 2020-03-25 23:33:58.000000000 +0100 @@ -11,6 +11,7 @@ maxItems => 'Too many items: %3/%4.', minItems => 'Not enough items: %3/%4.', uniqueItems => 'Unique items required.', + contains => 'No items contained.', }, const => {const => 'Does not match const: %3.'}, enum => {enum => 'Not in enum list: %3.'}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/JSON-Validator-3.24/lib/JSON/Validator/Util.pm new/JSON-Validator-3.25/lib/JSON/Validator/Util.pm --- old/JSON-Validator-3.24/lib/JSON/Validator/Util.pm 2020-03-03 07:36:29.000000000 +0100 +++ new/JSON-Validator-3.25/lib/JSON/Validator/Util.pm 2020-03-25 23:42:08.000000000 +0100 @@ -12,13 +12,15 @@ use Scalar::Util 'blessed'; use YAML::XS; +use constant SEREAL_SUPPORT => !$ENV{JSON_VALIDATOR_NO_SEREAL} + && eval 'use Sereal::Encoder 4.00;1'; + our @EXPORT_OK = qw(E data_checksum data_section data_type is_type schema_extract json_pointer prefix_errors schema_type); sub E { JSON::Validator::Error->new(@_) } -my $serializer - = eval 'use Sereal::Encoder;1' ? \&_sereal_encode : \&YAML::XS::Dump; +my $serializer = SEREAL_SUPPORT ? \&_sereal_encode : \&YAML::XS::Dump; sub data_checksum { return Mojo::Util::md5_sum( @@ -133,9 +135,11 @@ return _guessed_right(object => $_[1]) if defined $_[0]->{maxProperties} or defined $_[0]->{minProperties}; - return _guessed_right(array => $_[1]) if $_[0]->{additionalItems}; - return _guessed_right(array => $_[1]) if $_[0]->{items}; + + # additionalItems is intentionally omitted - it requires 'items' to take effect + return _guessed_right(array => $_[1]) if defined $_[0]->{items}; return _guessed_right(array => $_[1]) if $_[0]->{uniqueItems}; + return _guessed_right(array => $_[1]) if defined $_[0]->{contains}; return _guessed_right(array => $_[1]) if defined $_[0]->{maxItems} or defined $_[0]->{minItems}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/JSON-Validator-3.24/lib/JSON/Validator.pm new/JSON-Validator-3.25/lib/JSON/Validator.pm --- old/JSON-Validator-3.24/lib/JSON/Validator.pm 2020-03-03 07:46:39.000000000 +0100 +++ new/JSON-Validator-3.25/lib/JSON/Validator.pm 2020-03-25 23:42:16.000000000 +0100 @@ -24,7 +24,7 @@ use constant SPECIFICATION_URL => 'http://json-schema.org/draft-04/schema#'; use constant YAML_SUPPORT => eval 'use YAML::XS 0.67;1'; -our $VERSION = '3.24'; +our $VERSION = '3.25'; our @EXPORT_OK = qw(joi validate_json); my $BUNDLED_CACHE_DIR = path(path(__FILE__)->dirname, qw(Validator cache)); @@ -779,15 +779,17 @@ } } - if ($schema->{contains}) { + if (exists $schema->{contains}) { my @e; for my $i (0 .. @$data - 1) { my @tmp = $self->_validate($data->[$i], "$path/$i", $schema->{contains}); push @e, \@tmp if @tmp; } push @errors, map {@$_} @e if @e >= @$data; + push @errors, E $path, [array => 'contains'] if not @$data; } - elsif (ref $schema->{items} eq 'ARRAY') { + + if (ref $schema->{items} eq 'ARRAY') { my $additional_items = $schema->{additionalItems} // {type => 'any'}; my @rules = @{$schema->{items}}; @@ -929,7 +931,7 @@ } elsif (my @k = grep { !$rules{$_} } @dkeys) { local $" = ', '; - return E $path, [object => additionalProperties => join '/', @k]; + return E $path, [object => additionalProperties => join ', ', sort @k]; } for my $k (sort { $a cmp $b } uniq @{$schema->{required} || []}) { @@ -1140,6 +1142,23 @@ =back +=head2 Optional modules + +=over 2 + +=item * Sereal::Encoder + +Installing L<Sereal::Encoder> v4.00 (or later) will make +L<JSON::Validator::Util/data_checksum> significantly faster. This function is +used both when parsing schemas and validating data. + +=item * Format validators + +See the documentation in L<JSON::Validator::Formats> for other optional modules +to do validation of specific "format", such as "hostname", "ipv4" and others. + +=back + =head1 ERROR OBJECT The methods L</validate> and the function L</validate_json> returns a list of diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/JSON-Validator-3.24/t/jv-array.t new/JSON-Validator-3.25/t/jv-array.t --- old/JSON-Validator-3.24/t/jv-array.t 2020-02-12 01:17:35.000000000 +0100 +++ new/JSON-Validator-3.25/t/jv-array.t 2020-03-25 23:33:58.000000000 +0100 @@ -98,4 +98,27 @@ }, E('/2', 'Should not match.'); +validate_ok [], {type => 'array', contains => {const => 'foo'}}, + E('/', 'No items contained.'); + +validate_ok [1], {contains => {const => 'foo'}}, + E('/0', 'Does not match const: "foo".'); + +validate_ok [1], {items => {not => {}}}, E('/0', 'Should not match.'); +validate_ok [1], {items => false}, E('/0', 'Should not match.'); + +validate_ok [1, 2], {contains => {not => {}}}, E('/0', 'Should not match.'), + E('/1', 'Should not match.'); + +validate_ok [1, 2], {contains => false}, E('/0', 'Should not match.'), + E('/1', 'Should not match.'); + +validate_ok [1, 'hello'], + {contains => {const => 1}, items => {type => 'number'}}, + E('/1', 'Expected number - got string.'); + +validate_ok [1, 'hello'], + {contains => {const => 1}, items => [{type => 'string'}]}, + E('/0', 'Expected string - got number.'); + done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/JSON-Validator-3.24/t/jv-object.t new/JSON-Validator-3.25/t/jv-object.t --- old/JSON-Validator-3.24/t/jv-object.t 2020-03-03 07:35:36.000000000 +0100 +++ new/JSON-Validator-3.25/t/jv-object.t 2020-03-06 01:50:43.000000000 +0100 @@ -52,9 +52,10 @@ number => 1600, street_name => 'Pennsylvania', street_type => 'Avenue', - direction => 'NW' + direction => 'NW', + foo => 'nope', }, - $schema, E('/', 'Properties not allowed: direction.'); + $schema, E('/', 'Properties not allowed: direction, foo.'); $schema->{additionalProperties} = {type => 'string'}; validate_ok { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/JSON-Validator-3.24/t/util.t new/JSON-Validator-3.25/t/util.t --- old/JSON-Validator-3.24/t/util.t 2020-03-03 07:28:36.000000000 +0100 +++ new/JSON-Validator-3.25/t/util.t 2020-03-25 23:33:59.000000000 +0100 @@ -54,8 +54,8 @@ is schema_type({cannot => 'guess'}), '', 'schema_type no idea'; subtest 'data_checksum with Sereal::Encoder' => sub { - plan skip_all => 'Sereal::Encoder not installed' - unless eval 'use Sereal::Encoder;1'; + plan skip_all => 'Sereal::Encoder 4.00+ not installed' + unless JSON::Validator::Util->SEREAL_SUPPORT; my $d_hash = {foo => {}, bar => {}}; my $d_hash2 = {bar => {}, foo => {}};