Hello community,

here is the log from the commit of package perl-JSON-Validator for 
openSUSE:Factory checked in at 2020-02-10 21:56:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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"

Mon Feb 10 21:56:03 2020 rev:12 rq:773103 version:3.19

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-JSON-Validator/perl-JSON-Validator.changes  
2020-01-30 09:42:19.329519689 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-JSON-Validator.new.26092/perl-JSON-Validator.changes
       2020-02-10 21:56:11.514282810 +0100
@@ -1,0 +2,11 @@
+Sat Feb  8 03:09:33 UTC 2020 -  <timueller+p...@suse.de>
+
+- updated to 3.19
+   see /usr/share/doc/packages/perl-JSON-Validator/Changes
+
+  3.19 2020-02-07T11:10:58+0900
+   - Add clearer error when more than one oneOf rule matched #184
+     Contributor: Karen Etheridge
+   - Improved validation of numeric minimum and maximum values
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ perl-JSON-Validator.spec ++++++
--- /var/tmp/diff_new_pack.upsAsf/_old  2020-02-10 21:56:12.022283091 +0100
+++ /var/tmp/diff_new_pack.upsAsf/_new  2020-02-10 21:56:12.026283093 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           perl-JSON-Validator
-Version:        3.18
+Version:        3.19
 Release:        0
 %define cpan_name JSON-Validator
 Summary:        Validate data against a JSON schema

++++++ JSON-Validator-3.18.tar.gz -> JSON-Validator-3.19.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/Changes 
new/JSON-Validator-3.19/Changes
--- old/JSON-Validator-3.18/Changes     2020-01-29 02:18:09.000000000 +0100
+++ new/JSON-Validator-3.19/Changes     2020-02-07 03:10:58.000000000 +0100
@@ -1,5 +1,10 @@
 Revision history for perl distribution JSON-Validator
 
+3.19 2020-02-07T11:10:58+0900
+ - Add clearer error when more than one oneOf rule matched #184
+   Contributor: Karen Etheridge
+ - Improved validation of numeric minimum and maximum values
+
 3.18 2020-01-29T10:18:09+0900
  - Fix validating constants that are null or the empty string
    Contributor: Karen Etheridge
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/META.json 
new/JSON-Validator-3.19/META.json
--- old/JSON-Validator-3.18/META.json   2020-01-29 02:18:11.000000000 +0100
+++ new/JSON-Validator-3.19/META.json   2020-02-07 03:11:00.000000000 +0100
@@ -61,6 +61,6 @@
       },
       "x_IRC" : "irc://irc.freenode.net/#mojo"
    },
-   "version" : "3.18",
+   "version" : "3.19",
    "x_serialization_backend" : "JSON::PP version 4.02"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/META.yml 
new/JSON-Validator-3.19/META.yml
--- old/JSON-Validator-3.18/META.yml    2020-01-29 02:18:11.000000000 +0100
+++ new/JSON-Validator-3.19/META.yml    2020-02-07 03:10:59.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.18'
+version: '3.19'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/lib/JSON/Validator/Error.pm 
new/JSON-Validator-3.19/lib/JSON/Validator/Error.pm
--- old/JSON-Validator-3.18/lib/JSON/Validator/Error.pm 2019-10-28 
05:29:58.000000000 +0100
+++ new/JSON-Validator-3.19/lib/JSON/Validator/Error.pm 2020-02-07 
03:10:29.000000000 +0100
@@ -15,6 +15,8 @@
   const   => {const => 'Does not match const: %3.'},
   enum    => {enum  => 'Not in enum list: %3.'},
   integer => {
+    ex_maximum => '%3 >= maximum(%4)',
+    ex_minimum => '%3 <= minimum(%4)',
     maximum    => '%3 > maximum(%4)',
     minimum    => '%3 < minimum(%4)',
     multipleOf => 'Not multiple of %3.',
@@ -22,6 +24,8 @@
   not    => {not  => 'Should not match.'},
   null   => {null => 'Not null.'},
   number => {
+    ex_maximum => '%3 >= maximum(%4)',
+    ex_minimum => '%3 <= minimum(%4)',
     maximum    => '%3 > maximum(%4)',
     minimum    => '%3 < minimum(%4)',
     multipleOf => 'Not multiple of %3.',
@@ -34,6 +38,7 @@
   },
   oneOf => {
     all_rules_match => 'All of the oneOf rules match.',
+    n_rules_match   => 'oneOf rules %3 match.',
     type            => '/oneOf Expected %3 - got %4.',
   },
   string => {
@@ -88,7 +93,7 @@
 }
 
 sub to_string { sprintf '%s: %s', $_[0]->path, $_[0]->message }
-sub TO_JSON { {message => $_[0]->message, path => $_[0]->path} }
+sub TO_JSON   { {message => $_[0]->message, path => $_[0]->path} }
 
 1;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/lib/JSON/Validator/Formats.pm 
new/JSON-Validator-3.19/lib/JSON/Validator/Formats.pm
--- old/JSON-Validator-3.18/lib/JSON/Validator/Formats.pm       2019-09-27 
03:36:58.000000000 +0200
+++ new/JSON-Validator-3.19/lib/JSON/Validator/Formats.pm       2020-02-07 
02:41:31.000000000 +0100
@@ -69,7 +69,7 @@
     my @email = split /@/, $_[0], 2;
     check_email(
       join '@',
-      Net::IDN::Encode::to_ascii($email[0] // ''),
+      Net::IDN::Encode::to_ascii($email[0]        // ''),
       Net::IDN::Encode::domain_to_ascii($email[1] // ''),
     );
   };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/lib/JSON/Validator.pm 
new/JSON-Validator-3.19/lib/JSON/Validator.pm
--- old/JSON-Validator-3.18/lib/JSON/Validator.pm       2020-01-29 
02:18:09.000000000 +0100
+++ new/JSON-Validator-3.19/lib/JSON/Validator.pm       2020-02-07 
03:10:58.000000000 +0100
@@ -23,7 +23,7 @@
 use constant RECURSION_LIMIT   => $ENV{JSON_VALIDATOR_RECURSION_LIMIT} || 100;
 use constant SPECIFICATION_URL => 'http://json-schema.org/draft-04/schema#';
 
-our $VERSION = '3.18';
+our $VERSION = '3.19';
 our $YAML_LOADER = eval q[use YAML::XS 0.67; YAML::XS->can('Load')];  # 
internal
 our @EXPORT_OK   = qw(joi validate_json);
 
@@ -393,7 +393,7 @@
 
   $tx  = $self->ua->get($url);
   $err = $tx->error && $tx->error->{message};
-  confess "GET $url == $err" if DEBUG and $err;
+  confess "GET $url == $err"               if DEBUG and $err;
   die "[JSON::Validator] GET $url == $err" if $err;
 
   if ($cache_path
@@ -569,11 +569,11 @@
     last if !$ref or ref $ref;
     $fqn = $ref =~ m!^/! ? "#$ref" : $ref;
     ($location, $pointer) = split /#/, $fqn, 2;
-    $url = $location = _location_to_abs($location, $url);
+    $url     = $location = _location_to_abs($location, $url);
     $pointer = undef if length $location and !length $pointer;
     $pointer = url_unescape $pointer if defined $pointer;
-    $fqn   = join '#', grep defined, $location, $pointer;
-    $other = $self->_resolve($location);
+    $fqn     = join '#', grep defined, $location, $pointer;
+    $other   = $self->_resolve($location);
 
     if (defined $pointer and length $pointer and $pointer =~ m!^/!) {
       $other = Mojo::JSON::Pointer->new($other)->get($pointer)
@@ -632,21 +632,21 @@
     $self->_report_schema($path || '/', $type, $schema) if REPORT;
     @errors = $self->$method($to_json ? $$to_json : $_[1], $path, $schema);
     $self->_report_errors($path, $type, \@errors) if REPORT;
-    return @errors if @errors;
+    return @errors                                if @errors;
   }
 
   if (exists $schema->{const}) {
     push @errors,
       $self->_validate_type_const($to_json ? $$to_json : $_[1], $path, 
$schema);
-    $self->_report_errors($path, 'enum', \@errors) if REPORT;
-    return @errors if @errors;
+    $self->_report_errors($path, 'const', \@errors) if REPORT;
+    return @errors                                  if @errors;
   }
 
   if ($schema->{enum}) {
     push @errors,
       $self->_validate_type_enum($to_json ? $$to_json : $_[1], $path, $schema);
     $self->_report_errors($path, 'enum', \@errors) if REPORT;
-    return @errors if @errors;
+    return @errors                                 if @errors;
   }
 
   if (my $rules = $schema->{not}) {
@@ -731,9 +731,9 @@
   $self->_report_schema($path, 'oneOf', $rules) if REPORT;
   local $self->{grouped} = $self->{grouped} + 1;
 
-  my $i = 0;
+  my ($i, @passed) = (0);
   for my $rule (@$rules) {
-    my @e           = $self->_validate($_[1], $path, $rule) or next;
+    my @e = $self->_validate($_[1], $path, $rule) or push @passed, $i and next;
     my $schema_type = _guess_schema_type($rule);
     push @errors, [$i, @e] and next if !$schema_type or $schema_type eq $type;
     push @expected, $schema_type;
@@ -750,11 +750,59 @@
     $self->_report_errors($path, 'oneOf', \@e);
   }
 
-  return if @errors + @expected + 1 == @$rules;
-  my $expected = join '/', _uniq(@expected);
+  return if @passed == 1;
   return E $path, [oneOf => 'all_rules_match'] unless @errors + @expected;
-  return E $path, [oneOf => type => $expected => $type] unless @errors;
-  return _add_path_to_error_messages(oneOf => @errors);
+  return E $path, [oneOf => 'n_rules_match', join(', ', @passed)] if @passed;
+  return _add_path_to_error_messages(oneOf => @errors) if @errors;
+  return E $path, [oneOf => type => join('/', _uniq(@expected)), $type];
+}
+
+sub _validate_number_max {
+  my ($self, $value, $path, $schema, $expected) = @_;
+  my @errors;
+
+  my $cmp_with = $schema->{exclusiveMaximum} // '';
+  if (_is_boolean($cmp_with)) {
+    push @errors, E $path,
+      [$expected => ex_maximum => $value, $schema->{maximum}]
+      unless $value < $schema->{maximum};
+  }
+  elsif (_is_number($cmp_with)) {
+    push @errors, E $path, [$expected => ex_maximum => $value, $cmp_with]
+      unless $value < $cmp_with;
+  }
+
+  if (exists $schema->{maximum}) {
+    my $cmp_with = $schema->{maximum};
+    push @errors, E $path, [$expected => maximum => $value, $cmp_with]
+      unless $value <= $cmp_with;
+  }
+
+  return @errors;
+}
+
+sub _validate_number_min {
+  my ($self, $value, $path, $schema, $expected) = @_;
+  my @errors;
+
+  my $cmp_with = $schema->{exclusiveMinimum} // '';
+  if (_is_boolean($cmp_with)) {
+    push @errors, E $path,
+      [$expected => ex_minimum => $value, $schema->{minimum}]
+      unless $value > $schema->{minimum};
+  }
+  elsif (_is_number($cmp_with)) {
+    push @errors, E $path, [$expected => ex_minimum => $value, $cmp_with]
+      unless $value > $cmp_with;
+  }
+
+  if (exists $schema->{minimum}) {
+    my $cmp_with = $schema->{minimum};
+    push @errors, E $path, [$expected => minimum => $value, $cmp_with]
+      unless $value >= $cmp_with;
+  }
+
+  return @errors;
 }
 
 sub _validate_type_enum {
@@ -852,13 +900,7 @@
 
 sub _validate_type_boolean {
   my ($self, $value, $path, $schema) = @_;
-
-  # Object representing a boolean
-  if (blessed $value
-    and ($value->isa('JSON::PP::Boolean') or "$value" eq "1" or !$value))
-  {
-    return;
-  }
+  return if _is_boolean($value);
 
   # String that looks like a boolean
   if (
@@ -880,7 +922,7 @@
   my @errors = $self->_validate_type_number($_[1], $path, $schema, 'integer');
 
   return @errors if @errors;
-  return if $value =~ /^-?\d+$/;
+  return         if $value =~ /^-?\d+$/;
   return E $path, [integer => type => _guess_data_type($value)];
 }
 
@@ -907,24 +949,14 @@
     $_[1] = 0 + $value;    # coerce input value
   }
 
-  if ($schema->{format}) {
-    push @errors, $self->_validate_format($value, $path, $schema);
-  }
-  if (my $e
-    = _cmp($schema->{minimum}, $value, $schema->{exclusiveMinimum}, '<'))
-  {
-    push @errors, E $path, [$expected => minimum => $value, 
$schema->{minimum}];
-  }
-  if (my $e
-    = _cmp($value, $schema->{maximum}, $schema->{exclusiveMaximum}, '>'))
-  {
-    push @errors, E $path, [$expected => maximum => $value, 
$schema->{maximum}];
-  }
-  if (my $d = $schema->{multipleOf}) {
-    if (($value / $d) =~ /\.[^0]+$/) {
-      push @errors, E $path, [$expected => multipleOf => $d];
-    }
-  }
+  push @errors, $self->_validate_format($value, $path, $schema)
+    if $schema->{format};
+  push @errors, $self->_validate_number_max($value, $path, $schema, $expected);
+  push @errors, $self->_validate_number_min($value, $path, $schema, $expected);
+
+  my $d = $schema->{multipleOf};
+  push @errors, E $path, [$expected => multipleOf => $d]
+    if $d and ($value / $d) =~ /\.[^0]+$/;
 
   return @errors;
 }
@@ -1065,13 +1097,6 @@
   return @errors;
 }
 
-sub _cmp {
-  return undef    if !defined $_[0] or !defined $_[1];
-  return "$_[3]=" if $_[2] and $_[0] >= $_[1];
-  return $_[3]    if $_[0] > $_[1];
-  return "";
-}
-
 # _guess_data_type($data, [{type => ...}, ...])
 sub _guess_data_type {
   my $ref     = ref $_[0];
@@ -1126,6 +1151,11 @@
   return undef;
 }
 
+sub _is_boolean {
+  return blessed $_[0]
+    && ($_[0]->isa('JSON::PP::Boolean') || "$_[0]" eq "1" || !$_[0]);
+}
+
 sub _is_number {
   B::svref_2object(\$_[0])->FLAGS & (B::SVp_IOK | B::SVp_NOK)
     && 0 + $_[0] eq $_[0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/acceptance.t 
new/JSON-Validator-3.19/t/acceptance.t
--- old/JSON-Validator-3.18/t/acceptance.t      2019-01-20 23:31:14.000000000 
+0100
+++ new/JSON-Validator-3.19/t/acceptance.t      2020-02-07 02:41:31.000000000 
+0100
@@ -18,7 +18,7 @@
 my $host_port = $t->ua->server->url->host_port;
 
 my $test_only_re = $ENV{TEST_ONLY} || '';
-my $todo_re = join('|',
+my $todo_re      = join('|',
   'dependencies',
   'change resolution scope - changed scope ref valid',
   $ENV{TEST_ONLINE} ? () : ('remote ref'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/coerce.t 
new/JSON-Validator-3.19/t/coerce.t
--- old/JSON-Validator-3.18/t/coerce.t  2019-09-27 03:36:58.000000000 +0200
+++ new/JSON-Validator-3.19/t/coerce.t  2020-02-07 02:41:31.000000000 +0100
@@ -47,7 +47,7 @@
   my $base = {type => shift};
   return (
     $base,
-    {type  => ['array', $base->{type}]},
+    {type  => ['array',           $base->{type}]},
     {allOf => [$base]},
     {anyOf => [{type => 'array'}, $base]},
     {oneOf => [$base, {type => 'array'}]},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/formats.t 
new/JSON-Validator-3.19/t/formats.t
--- old/JSON-Validator-3.18/t/formats.t 2019-09-27 03:36:58.000000000 +0200
+++ new/JSON-Validator-3.19/t/formats.t 2020-02-07 02:41:31.000000000 +0100
@@ -1,7 +1,7 @@
 use strict;
 use Test::More;
 
-BEGIN { use_ok ('JSON::Validator::Formats'); }
+BEGIN { use_ok('JSON::Validator::Formats'); }
 
 ok !JSON::Validator::Formats::check_date('2019-06-11');
 ok !JSON::Validator::Formats::check_email('d...@example.org');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/get.t 
new/JSON-Validator-3.19/t/get.t
--- old/JSON-Validator-3.18/t/get.t     2018-12-15 05:21:00.000000000 +0100
+++ new/JSON-Validator-3.19/t/get.t     2020-02-07 02:41:31.000000000 +0100
@@ -2,12 +2,10 @@
 use Test::More;
 use JSON::Validator;
 
-my $jv = JSON::Validator->new->schema(
-  {
-    foo => [{y => 'foo'}],
-    bar => [{y => 'first'}, {y => 'second'}, {z => 'zzz'}],
-  }
-);
+my $jv = JSON::Validator->new->schema({
+  foo => [{y => 'foo'}],
+  bar => [{y => 'first'}, {y => 'second'}, {z => 'zzz'}],
+});
 
 is $jv->get('/bar/2/z'), 'zzz', 'get /bar/2/z';
 is $jv->get([qw(nope 404)]), undef, 'get /nope/404';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/id-keyword-draft4.t 
new/JSON-Validator-3.19/t/id-keyword-draft4.t
--- old/JSON-Validator-3.18/t/id-keyword-draft4.t       2019-01-05 
04:48:15.000000000 +0100
+++ new/JSON-Validator-3.19/t/id-keyword-draft4.t       2020-02-07 
02:41:31.000000000 +0100
@@ -11,7 +11,7 @@
 get '/invalid-relative'     => 'invalid-relative';
 get '/relative-to-the-root' => 'relative-to-the-root';
 
-$t = Test::Mojo->new;
+$t  = Test::Mojo->new;
 $jv = JSON::Validator->new(ua => $t->ua);
 $t->get_ok('/relative-to-the-root.json')->status_is(200);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/id-keyword-draft7.t 
new/JSON-Validator-3.19/t/id-keyword-draft7.t
--- old/JSON-Validator-3.18/t/id-keyword-draft7.t       2019-01-20 
11:42:12.000000000 +0100
+++ new/JSON-Validator-3.19/t/id-keyword-draft7.t       2020-02-07 
02:41:31.000000000 +0100
@@ -10,7 +10,7 @@
 get '/person'           => 'person';
 get '/invalid-relative' => 'invalid-relative';
 
-$t = Test::Mojo->new;
+$t  = Test::Mojo->new;
 $jv = JSON::Validator->new(ua => $t->ua);
 
 eval {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/issue-103-one-of.t 
new/JSON-Validator-3.19/t/issue-103-one-of.t
--- old/JSON-Validator-3.18/t/issue-103-one-of.t        2018-12-15 
05:21:00.000000000 +0100
+++ new/JSON-Validator-3.19/t/issue-103-one-of.t        2020-02-07 
03:10:28.000000000 +0100
@@ -7,6 +7,16 @@
   E('/template', '/oneOf/0/allOf/2 Missing property.'),
   E('/sym',      '/oneOf/1/allOf/0 Missing property.');
 
+validate_ok {
+  sym      => 'a',
+  expire   => 'b',
+  amount   => 1,
+  desc     => 'foo',
+  who_id   => 'c',
+  template => 'd'
+  },
+  'data://main/example.json', E('/', 'oneOf rules 0, 1 match.');
+
 done_testing;
 
 __DATA__
@@ -14,7 +24,8 @@
 {
   "oneOf": [
     {"$ref": "#/definitions/template_1"},
-    {"$ref": "#/definitions/bar_header"}
+    {"$ref": "#/definitions/bar_header"},
+    {"type": "string"}
   ],
   "definitions": {
     "hwho":{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/issue-42-cache-control.t 
new/JSON-Validator-3.19/t/issue-42-cache-control.t
--- old/JSON-Validator-3.18/t/issue-42-cache-control.t  2019-09-27 
03:36:58.000000000 +0200
+++ new/JSON-Validator-3.19/t/issue-42-cache-control.t  2020-02-07 
02:41:31.000000000 +0100
@@ -6,13 +6,14 @@
 plan skip_all => 'TEST_ONLINE=1' unless $ENV{TEST_ONLINE};
 
 $ENV{JSON_VALIDATOR_CACHE_PATH} = '/tmp/whatever';
-my $jv = JSON::Validator->new;
+my $jv        = JSON::Validator->new;
 my @old_files = get_cached_files($jv);
 
 is $jv->cache_paths->[0], '/tmp/whatever', 'back compat env';
 shift @{$jv->cache_paths};
 
-my $spec_url = 
'https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v2.0/schema.json';
+my $spec_url
+  = 
'https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v2.0/schema.json';
 $jv->schema($spec_url);
 my @new_files = get_cached_files($jv);
 ok @old_files == @new_files, 'remote file not cached in default cache dir';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/jv-array.t 
new/JSON-Validator-3.19/t/jv-array.t
--- old/JSON-Validator-3.18/t/jv-array.t        2020-01-29 02:14:57.000000000 
+0100
+++ new/JSON-Validator-3.19/t/jv-array.t        2020-02-07 02:41:31.000000000 
+0100
@@ -4,10 +4,10 @@
 use Test::More;
 use t::Helper;
 
-my $simple = {type => 'array', items => {type => 'number'}};
-my $length = {type => 'array', minItems => 2, maxItems => 2};
+my $simple = {type => 'array', items       => {type => 'number'}};
+my $length = {type => 'array', minItems    => 2, maxItems => 2};
 my $unique = {type => 'array', uniqueItems => 1, items => {type => 'integer'}};
-my $tuple  = {
+my $tuple = {
   type  => 'array',
   items => [
     {type => 'number'},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/jv-number.t 
new/JSON-Validator-3.19/t/jv-number.t
--- old/JSON-Validator-3.18/t/jv-number.t       2020-01-29 02:14:57.000000000 
+0100
+++ new/JSON-Validator-3.19/t/jv-number.t       2020-02-07 03:10:29.000000000 
+0100
@@ -16,7 +16,10 @@
 validate_ok 1, $numeric_constant, E('/', q{Does not match const: 2.1.});
 
 jv->coerce('numbers');
-validate_ok {mynumber => '-0.3'},   $schema;
+validate_ok {mynumber => '-0.5'}, $schema;
+validate_ok {mynumber => -0.6}, $schema, E('/mynumber', '-0.6 < 
minimum(-0.5)');
+validate_ok {mynumber => '2.7'}, $schema;
+validate_ok {mynumber => '2.8'}, $schema, E('/mynumber', '2.8 > maximum(2.7)');
 validate_ok {mynumber => '0.1e+1'}, $schema;
 validate_ok {mynumber => '2xyz'},   $schema,
   E('/mynumber', 'Expected number - got string.');
@@ -31,4 +34,12 @@
 validate_ok '2.1', $numeric_constant;
 validate_ok '1', $numeric_constant, E('/', q{Does not match const: 2.1.});
 
+for my $x ([-0.5, 2.7], [true, true]) {
+  $schema->{properties}{mynumber}{exclusiveMaximum} = $x->[1];
+  $schema->{properties}{mynumber}{exclusiveMinimum} = $x->[0];
+  validate_ok {mynumber => 2.7}, $schema, E('/mynumber', '2.7 >= 
maximum(2.7)');
+  validate_ok {mynumber => -0.5}, $schema,
+    E('/mynumber', '-0.5 <= minimum(-0.5)');
+}
+
 done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/jv-oneof.t 
new/JSON-Validator-3.19/t/jv-oneof.t
--- old/JSON-Validator-3.18/t/jv-oneof.t        2018-12-15 05:26:03.000000000 
+0100
+++ new/JSON-Validator-3.19/t/jv-oneof.t        2020-02-07 03:10:28.000000000 
+0100
@@ -36,4 +36,7 @@
 validate_ok {x => '2015-04-21T20:30:43.000Z'}, $schema;
 validate_ok {x => undef}, $schema;
 
+validate_ok 1, {oneOf => [{minimum => 1}, {minimum => 2}, {maximum => 3}]},
+  E('/', 'oneOf rules 0, 2 match.');
+
 done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/validate-json.t 
new/JSON-Validator-3.19/t/validate-json.t
--- old/JSON-Validator-3.18/t/validate-json.t   2018-12-15 02:09:49.000000000 
+0100
+++ new/JSON-Validator-3.19/t/validate-json.t   2020-02-07 02:41:31.000000000 
+0100
@@ -6,7 +6,7 @@
 {
   use Mojolicious::Lite;
   post '/' => sub {
-    my $c = shift;
+    my $c      = shift;
     my @errors = validate_json $c->req->json, 'data://main/spec.json';
     $c->render(status => @errors ? 400 : 200, text => "@errors");
   };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/JSON-Validator-3.18/t/validate-recursive.t 
new/JSON-Validator-3.19/t/validate-recursive.t
--- old/JSON-Validator-3.18/t/validate-recursive.t      2018-12-15 
05:21:00.000000000 +0100
+++ new/JSON-Validator-3.19/t/validate-recursive.t      2020-02-07 
02:41:31.000000000 +0100
@@ -6,7 +6,7 @@
 {
   use Mojolicious::Lite;
   post '/' => sub {
-    my $c = shift;
+    my $c      = shift;
     my @errors = validate_json $c->req->json, 'data://main/spec.json';
     $c->render(status => @errors ? 400 : 200, json => \@errors);
   };


Reply via email to