Hello community,

here is the log from the commit of package perl-JSON-Validator for 
openSUSE:Factory checked in at 2020-02-14 16:41:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-JSON-Validator (Old)
 and      /work/SRC/openSUSE:Factory/.perl-JSON-Validator.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-JSON-Validator"

Fri Feb 14 16:41:11 2020 rev:14 rq:774343 version:3.21

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-JSON-Validator/perl-JSON-Validator.changes  
2020-02-13 10:11:53.808353240 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-JSON-Validator.new.26092/perl-JSON-Validator.changes
       2020-02-14 16:41:26.659721830 +0100
@@ -1,0 +2,9 @@
+Fri Feb 14 03:07:59 UTC 2020 -  <timueller+p...@suse.de>
+
+- updated to 3.21
+   see /usr/share/doc/packages/perl-JSON-Validator/Changes
+
+  3.21 2020-02-14T10:14:14+0900
+   - Fix data_section() without a class #193
+
+-------------------------------------------------------------------

Old:
----
  JSON-Validator-3.20.tar.gz

New:
----
  JSON-Validator-3.21.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-JSON-Validator.spec ++++++
--- /var/tmp/diff_new_pack.8s9Z16/_old  2020-02-14 16:41:27.483722290 +0100
+++ /var/tmp/diff_new_pack.8s9Z16/_new  2020-02-14 16:41:27.487722292 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           perl-JSON-Validator
-Version:        3.20
+Version:        3.21
 Release:        0
 %define cpan_name JSON-Validator
 Summary:        Validate data against a JSON schema

++++++ JSON-Validator-3.20.tar.gz -> JSON-Validator-3.21.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.20/Changes 
new/JSON-Validator-3.21/Changes
--- old/JSON-Validator-3.20/Changes     2020-02-12 01:47:21.000000000 +0100
+++ new/JSON-Validator-3.21/Changes     2020-02-14 02:14:14.000000000 +0100
@@ -1,5 +1,8 @@
 Revision history for perl distribution JSON-Validator
 
+3.21 2020-02-14T10:14:14+0900
+ - Fix data_section() without a class #193
+
 3.20 2020-02-12T09:47:21+0900
  - Fix validating draft6 "false" and "true" schemas #190
    Contributor: Karen Etheridge
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.20/META.json 
new/JSON-Validator-3.21/META.json
--- old/JSON-Validator-3.20/META.json   2020-02-12 01:47:22.000000000 +0100
+++ new/JSON-Validator-3.21/META.json   2020-02-14 02:14:15.000000000 +0100
@@ -61,6 +61,6 @@
       },
       "x_IRC" : "irc://irc.freenode.net/#mojo"
    },
-   "version" : "3.20",
+   "version" : "3.21",
    "x_serialization_backend" : "JSON::PP version 4.02"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.20/META.yml 
new/JSON-Validator-3.21/META.yml
--- old/JSON-Validator-3.20/META.yml    2020-02-12 01:47:22.000000000 +0100
+++ new/JSON-Validator-3.21/META.yml    2020-02-14 02:14:15.000000000 +0100
@@ -30,5 +30,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.20'
+version: '3.21'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.20/lib/JSON/Validator/Util.pm 
new/JSON-Validator-3.21/lib/JSON/Validator/Util.pm
--- old/JSON-Validator-3.20/lib/JSON/Validator/Util.pm  2020-02-12 
01:38:10.000000000 +0100
+++ new/JSON-Validator-3.21/lib/JSON/Validator/Util.pm  2020-02-14 
02:12:56.000000000 +0100
@@ -1,10 +1,12 @@
 package JSON::Validator::Util;
 use Mojo::Base -strict;
 
+use Carp         ();
 use Data::Dumper ();
 use Exporter 'import';
 use JSON::Validator::Error;
 use Mojo::Collection;
+use Mojo::JSON;
 use Mojo::Loader;
 use Mojo::Util;
 use Scalar::Util 'blessed';
@@ -20,26 +22,32 @@
 
 sub data_section {
   my ($class, $file, $params) = @_;
-  state $class_skip_re
-    = qr{(^JSON::Validator$|^Mojo::Base$|^Mojolicious$|\w+::_Dynamic)};
+  state $skip_re
+    = qr{(^JSON::Validator|^Mojo::Base$|^Mojolicious$|\w+::_Dynamic)};
 
-  unless ($class) {
-    my $i = 1;
+  my @classes = $class ? ([$class]) : ();
+  unless (@classes) {
+    my $i = 0;
     while ($class = caller($i++)) {
-      last unless $class =~ $class_skip_re;
+      push @classes, [$class] unless $class =~ $skip_re;
     }
   }
 
-  my @classes = do { no strict 'refs'; ($class, @{"$class\::ISA"}) };
-  my $text;
-  for my $class (@classes) {
-    next if $class =~ $class_skip_re;
-    last if $text = Mojo::Loader::data_section($class, $file);
+  for my $group (@classes) {
+    push @$group,
+      grep { !/$skip_re/ } do { no strict 'refs'; @{"$group->[0]\::ISA"} };
+    for my $class (@$group) {
+      next unless my $text = Mojo::Loader::data_section($class, $file);
+      return Mojo::Util::encode($params->{encoding}, $text)
+        if $params->{encoding};
+      return $text;
+    }
   }
 
-  $text = Mojo::Util::encode($params->{encoding}, $text)
-    if $text and $params->{encoding};
-  $text;
+  return undef unless $params->{confess};
+
+  my $err = Mojo::JSON::encode_json([map { @$_ == 1 ? $_->[0] : $_ } 
@classes]);
+  Carp::confess(qq(Could not find "$file" in __DATA__ section of $err.));
 }
 
 sub data_type {
@@ -231,7 +239,7 @@
   $bool = is_type $any, $class;
   $bool = is_type $any, $type; # $type = "ARRAY", "BOOL", "HASH", "NUM" ...
 
-Checks if C<$any> is a, or inherit from C<$class> or C<$type>. Two special
+Checks if C<$any> is a, or inherits from, C<$class> or C<$type>. Two special
 types can be checked:
 
 =over 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.20/lib/JSON/Validator.pm 
new/JSON-Validator-3.21/lib/JSON/Validator.pm
--- old/JSON-Validator-3.20/lib/JSON/Validator.pm       2020-02-12 
01:47:21.000000000 +0100
+++ new/JSON-Validator-3.21/lib/JSON/Validator.pm       2020-02-14 
02:14:14.000000000 +0100
@@ -21,9 +21,9 @@
 use constant DEBUG             => $ENV{JSON_VALIDATOR_DEBUG} || 0;
 use constant RECURSION_LIMIT   => $ENV{JSON_VALIDATOR_RECURSION_LIMIT} || 100;
 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.20';
-our $YAML_LOADER = eval q[use YAML::XS 0.67; YAML::XS->can('Load')];  # 
internal
+our $VERSION = '3.21';
 our @EXPORT_OK   = qw(joi validate_json);
 
 my $BUNDLED_CACHE_DIR = path(path(__FILE__)->dirname, qw(Validator cache));
@@ -112,7 +112,7 @@
       }
     }
     elsif (ref $from eq 'HASH') {
-      while (my ($key, $value) = each %$from) {
+      for my $key (keys %$from) {
         $to->{$key} //= $cloner->($from->{$key});
       }
     }
@@ -263,9 +263,8 @@
 
   if ($url =~ m!^data://([^/]*)/(.*)!) {
     my ($class, $file) = ($1, $2);
-    my $text = data_section $class, $file, {encoding => 'UTF-8'};
-    return $self->_load_schema_from_text(\$text), "$url" if $text;
-    confess "$file could not be found in __DATA__ section of $class.";
+    my $text = data_section $class, $file, {confess => 1, encoding => 'UTF-8'};
+    return $self->_load_schema_from_text(\$text), "$url";
   }
 
   if ($url =~ m!^\s*[\[\{]!) {
@@ -300,22 +299,12 @@
   return Mojo::JSON::decode_json($$text) if $$text =~ /^\s*\{/s;
 
   # YAML
-  $visit = sub {
-    my $v = shift;
-    $visit->($_) for grep { ref $_ eq 'HASH' } values %$v;
-    unless ($v->{type} and $v->{type} eq 'boolean' and exists $v->{default}) {
-      return $v;
-    }
-    %$v = (%$v, default => $v->{default} ? true : false);
-    return $v;
-  };
-
   die "[JSON::Validator] YAML::XS 0.67 is missing or could not be loaded."
-    unless $YAML_LOADER;
+    unless YAML_SUPPORT;
 
   no warnings 'once';
   local $YAML::XS::Boolean = 'JSON::PP';
-  return $visit->($YAML_LOADER->($$text));
+  return YAML::XS::Load($$text);
 }
 
 sub _load_schema_from_url {
@@ -846,13 +835,12 @@
 
 sub _validate_type_object {
   my ($self, $data, $path, $schema) = @_;
-  my %required = map { ($_ => 1) } @{$schema->{required} || []};
-  my ($additional, @errors, %rules);
 
   if (ref $data ne 'HASH') {
     return E $path, [object => type => data_type $data];
   }
 
+  my @errors;
   my @dkeys = sort keys %$data;
   if (defined $schema->{maxProperties} and $schema->{maxProperties} < @dkeys) {
     push @errors, E $path,
@@ -875,10 +863,11 @@
       : $self->_validate($data, $path, $schema->{then} // {});
   }
 
-  my $coerce = $self->{coerce}{defaults};
-  while (my ($k, $r) = each %{$schema->{properties}}) {
+  my %rules;
+  for my $k (keys %{$schema->{properties}}) {
+    my $r = $schema->{properties}{$k};
     push @{$rules{$k}}, $r;
-    if (  $coerce
+    if (  $self->{coerce}{defaults}
       and ref $r eq 'HASH'
       and exists $r->{default}
       and !exists $data->{$k})
@@ -887,11 +876,12 @@
     }
   }
 
-  while (my ($p, $r) = each %{$schema->{patternProperties} || {}}) {
+  for my $p (keys %{$schema->{patternProperties} || {}}) {
+    my $r = $schema->{patternProperties}{$p};
     push @{$rules{$_}}, $r for sort grep { $_ =~ /$p/ } @dkeys;
   }
 
-  $additional
+  my $additional
     = exists $schema->{additionalProperties}
     ? $schema->{additionalProperties}
     : {};
@@ -904,7 +894,7 @@
     return E $path, [object => additionalProperties => join '/', @k];
   }
 
-  for my $k (sort keys %required) {
+  for my $k (sort uniq @{$schema->{required} || []}) {
     next if exists $data->{$k};
     push @errors, E json_pointer($path, $k), [object => 'required'];
     delete $rules{$k};
@@ -1039,7 +1029,7 @@
 
 =item * L<http://json-schema.org/documentation.html>
 
-=item * L<http://spacetelescope.github.io/understanding-json-schema/index.html>
+=item * L<https://json-schema.org/understanding-json-schema/index.html>
 
 =item * L<https://github.com/json-schema/json-schema/>
 
@@ -1196,7 +1186,7 @@
 
 Used to create a new schema, where there are no "$ref" pointing to external
 resources. This means that all the "$ref" that are found, will be moved into
-the "definitions" key, in the returning C<$schema>.
+the "definitions" key, in the returned C<$schema>.
 
 =head2 coerce
 
@@ -1212,7 +1202,8 @@
 
 =item * booleans
 
-Will convert what looks can be interpreted as a boolean to a
+Will convert what looks can be interpreted as a boolean (that is, an actual
+numeric C<1> or C<0>, and the strings "true" and "false") to a
 L<JSON::PP::Boolean> object. Note that "foo" is not considered a true value and
 will fail the validation.
 
@@ -1235,10 +1226,6 @@
 
 =back
 
-Loading a YAML document will enable "booleans" automatically. This feature is
-experimental, but was added since YAML has no real concept of booleans, such
-as L<Mojo::JSON> or other JSON parsers.
-
 =head2 get
 
   my $sub_schema = $jv->get("/x/y");
@@ -1248,7 +1235,7 @@
 same time resolve C<$ref> if found. Example:
 
   $jv->schema({x => {'$ref' => '#/y'}, y => {'type' => 'string'}});
-  $jv->schema->get('/x')           == undef
+  $jv->schema->get('/x')           == {'$ref' => '#/y'}
   $jv->schema->get('/x')->{'$ref'} == '#/y'
   $jv->get('/x')                   == {type => 'string'}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.20/t/booleans.t 
new/JSON-Validator-3.21/t/booleans.t
--- old/JSON-Validator-3.20/t/booleans.t        2020-02-08 01:27:55.000000000 
+0100
+++ new/JSON-Validator-3.21/t/booleans.t        2020-02-14 02:12:56.000000000 
+0100
@@ -22,7 +22,7 @@
 validate_ok {v => ''},      $schema, E('/v', 'Expected boolean - got string.');
 
 SKIP: {
-  skip 'YAML::XS is not installed', 1 unless $JSON::Validator::YAML_LOADER;
+  skip 'YAML::XS is not installed', 1 unless JSON::Validator->YAML_SUPPORT;
   my $data = jv->_load_schema_from_text(\"---\nv: true\n");
   isa_ok($data->{v}, 'JSON::PP::Boolean');
   validate_ok $data, $schema;
@@ -34,8 +34,7 @@
     {type => 'object', properties => {type => {type => 'string'}}};
 }
 
-SKIP: {
-  skip 'Cpanel::JSON::XS not installed', 2 unless 
$JSON::Validator::YAML_LOADER;
+{
   validate_ok {disabled => Mojo::JSON->true},
     {properties => {disabled => {type => 'boolean'}}};
   validate_ok {disabled => Mojo::JSON->false},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.20/t/load-data.t 
new/JSON-Validator-3.21/t/load-data.t
--- old/JSON-Validator-3.20/t/load-data.t       2020-02-08 01:27:55.000000000 
+0100
+++ new/JSON-Validator-3.21/t/load-data.t       2020-02-14 01:23:39.000000000 
+0100
@@ -23,6 +23,13 @@
 ok !Some::Module->validate_age0({age => 1}), 'validate_age0';
 ok !Some::Module->validate_age1({age => 1}), 'validate_age1';
 
+eval { Mojolicious::Plugin::TestX->validate('data:///spec.json', {}) };
+ok !$@, 'found spec.json in main' or diag $@;
+
+package Mojolicious::Plugin::TestX;
+sub validate { $jv->schema($_[1])->validate($_[2]) }
+
+package main;
 done_testing;
 
 __DATA__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.20/t/load-yaml.t 
new/JSON-Validator-3.21/t/load-yaml.t
--- old/JSON-Validator-3.20/t/load-yaml.t       2020-02-08 01:27:55.000000000 
+0100
+++ new/JSON-Validator-3.21/t/load-yaml.t       2020-02-14 02:12:56.000000000 
+0100
@@ -2,7 +2,7 @@
 use JSON::Validator;
 use Test::More;
 
-plan skip_all => 'YAML::XS required' unless $JSON::Validator::YAML_LOADER;
+plan skip_all => 'YAML::XS required' unless JSON::Validator->YAML_SUPPORT;
 
 my $jv     = JSON::Validator->new;
 my @errors = $jv->schema('data://Some::Module/s_pec-/-ficaTion')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.20/t/more-bundle.t 
new/JSON-Validator-3.21/t/more-bundle.t
--- old/JSON-Validator-3.20/t/more-bundle.t     2020-02-10 05:19:54.000000000 
+0100
+++ new/JSON-Validator-3.21/t/more-bundle.t     2020-02-14 02:12:56.000000000 
+0100
@@ -4,7 +4,7 @@
 use Test::More;
 
 plan skip_all => 'YAML::XS is not installed'
-  unless $JSON::Validator::YAML_LOADER;
+  unless JSON::Validator->YAML_SUPPORT;
 
 # these are triples:
 # - schema name to extract from schema file(s) with bundle()


Reply via email to