The jsonschema package is part of of the API of the mcp package, so it should not be internal. Change-Id: I9520797837329fc2cda09c2f46ec4d48d031b9d3 Reviewed-on: https://go-review.googlesource.com/c/tools/+/669996 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Robert Findley <rfindley@google.com>
304 lines
9 KiB
JSON
304 lines
9 KiB
JSON
[
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
}
|
|
]
|