Skip to content

Commit ba1f1a7

Browse files
normalize all format tests, adding consistent sample data
The generating script: ----8< perl >8---- use strict; use warnings; use JSON::PP (); use JSON::MaybeXS; use Path::Tiny; my %format_by_draft = ( draft3 => [ qw(email ip-address ipv6 host-name date-time regex date time color uri) ], draft4 => [ qw(email ipv4 ipv6 hostname date-time uri) ], draft6 => [ qw(email ipv4 ipv6 hostname date-time json-pointer uri uri-reference uri-template) ], draft7 => [ qw(email idn-email regex ipv4 ipv6 idn-hostname hostname date date-time time json-pointer relative-json-pointer iri iri-reference uri uri-reference uri-template) ], 'draft2019-09' => [ qw(email idn-email regex ipv4 ipv6 idn-hostname hostname date date-time time json-pointer relative-json-pointer iri iri-reference uri uri-reference uri-template uuid duration) ], 'draft2020-12' => [ qw(email idn-email regex ipv4 ipv6 idn-hostname hostname date date-time time json-pointer relative-json-pointer iri iri-reference uri uri-reference uri-template uuid duration) ], 'draft-future' => [ qw(email idn-email regex ipv4 ipv6 idn-hostname hostname date date-time time json-pointer relative-json-pointer iri iri-reference uri uri-reference uri-template uuid duration) ], ); my %type_to_data = ( integer => 12, float => 13.7, object => {}, array => [], boolean => JSON::PP::false, null => undef, ); my %format_string_data = ( email => '2962', 'ip-address' => '127.0.0.0.1', ipv6 => '12345::', 'host-name' => '-a-host-name-that-starts-with--', 'date-time' => '1990-02-31T15:59:60.123-08:00', regex => '^(abc]', date => '06/19/1963', time => '08:30:06 PST', uri => '//foo.bar/?baz=qux#quux', ipv4 => '127.0.0.0.1', hostname => '-a-host-name-that-starts-with--', 'json-pointer' => '/foo/bar~', 'uri-reference' => "\\\\WINDOWS\\fileshare", 'uri-template' => 'http://example.com/dictionary/{term:1}/{term', 'idn-email' => '2962', 'idn-hostname' => "〮실례.테스트", 'relative-json-pointer' => '/foo/bar', iri => 'http://2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'iri-reference' => "\\\\WINDOWS\\filëßåré", uuid => '2eb8aa08-aa98-11ea-b4aa-73b441d1638', duration => 'PT1D', ); my $encoder = JSON::MaybeXS->new(canonical => 1, pretty => 1, indent_length => 4); foreach my $draft (keys %format_by_draft) { my $data = [ map +{ description => $_.' format', schema => { format => $_ }, tests => [ (map +{ description => 'all string formats ignore '.$_.'s', data => $type_to_data{$_}, valid => JSON::PP::true, }, qw(integer float object array boolean null)), $draft !~ /^draft[467]/ && $format_string_data{$_} ? +{ description => 'invalid '.$_.' string is only an annotation by default', data => $format_string_data{$_}, valid => JSON::PP::true, } : (), ], }, @{$format_by_draft{$draft}} ]; my $str = $encoder->encode($data); $str =~ s/("data" : .+)(\n\s+)("description" : "[^"]+",)/$3$2$1/mg; $str =~ s/ : /: /g; $str =~ s/"schema": \{\n\s+("format": "[^"]+")\n\s+/"schema": { $1 /mg; path('tests', $draft, 'format.json')->spew_raw($str); }
1 parent b00ba57 commit ba1f1a7

File tree

11 files changed

+831
-866
lines changed

11 files changed

+831
-866
lines changed

tests/draft-future/format.json

+150-150
Large diffs are not rendered by default.

tests/draft2019-09/format.json

+150-150
Large diffs are not rendered by default.

tests/draft2019-09/optional/format/duration.json

-20
Original file line numberDiff line numberDiff line change
@@ -87,26 +87,6 @@
8787
"description": "weeks cannot be combined with other units",
8888
"data": "P1Y2W",
8989
"valid": false
90-
},
91-
{
92-
"description": "null value should be ignored",
93-
"data": null,
94-
"valid": true
95-
},
96-
{
97-
"description": "number value should be ignored",
98-
"data": 1,
99-
"valid": true
100-
},
101-
{
102-
"description": "list value should be ignored",
103-
"data": [],
104-
"valid": true
105-
},
106-
{
107-
"description": "object value should be ignored",
108-
"data": {},
109-
"valid": true
11090
}
11191
]
11292
}

tests/draft2019-09/optional/format/uuid.json

-20
Original file line numberDiff line numberDiff line change
@@ -64,26 +64,6 @@
6464
"description": "hypothetical version 15",
6565
"data": "99c17cbb-656f-f64a-940f-1a4568f03487",
6666
"valid": true
67-
},
68-
{
69-
"description": "null value should be ignored",
70-
"data": null,
71-
"valid": true
72-
},
73-
{
74-
"description": "number value should be ignored",
75-
"data": 1,
76-
"valid": true
77-
},
78-
{
79-
"description": "list value should be ignored",
80-
"data": [],
81-
"valid": true
82-
},
83-
{
84-
"description": "object value should be ignored",
85-
"data": {},
86-
"valid": true
8767
}
8868
]
8969
}

0 commit comments

Comments
 (0)