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>
301 lines
8.2 KiB
JSON
301 lines
8.2 KiB
JSON
[
|
|
{
|
|
"description": "not",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"not": {"type": "integer"}
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "allowed",
|
|
"data": "foo",
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "disallowed",
|
|
"data": 1,
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "not multiple types",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"not": {"type": ["integer", "boolean"]}
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "valid",
|
|
"data": "foo",
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "mismatch",
|
|
"data": 1,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "other mismatch",
|
|
"data": true,
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "not more complex schema",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"not": {
|
|
"type": "object",
|
|
"properties": {
|
|
"foo": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "match",
|
|
"data": 1,
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "other match",
|
|
"data": {"foo": 1},
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "mismatch",
|
|
"data": {"foo": "bar"},
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "forbidden property",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"properties": {
|
|
"foo": {
|
|
"not": {}
|
|
}
|
|
}
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "property present",
|
|
"data": {"foo": 1, "bar": 2},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "property absent",
|
|
"data": {"bar": 1, "baz": 2},
|
|
"valid": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "forbid everything with empty schema",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"not": {}
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "number is invalid",
|
|
"data": 1,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "string is invalid",
|
|
"data": "foo",
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "boolean true is invalid",
|
|
"data": true,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "boolean false is invalid",
|
|
"data": false,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "null is invalid",
|
|
"data": null,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "object is invalid",
|
|
"data": {"foo": "bar"},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "empty object is invalid",
|
|
"data": {},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "array is invalid",
|
|
"data": ["foo"],
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "empty array is invalid",
|
|
"data": [],
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "forbid everything with boolean schema true",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"not": true
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "number is invalid",
|
|
"data": 1,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "string is invalid",
|
|
"data": "foo",
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "boolean true is invalid",
|
|
"data": true,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "boolean false is invalid",
|
|
"data": false,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "null is invalid",
|
|
"data": null,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "object is invalid",
|
|
"data": {"foo": "bar"},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "empty object is invalid",
|
|
"data": {},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "array is invalid",
|
|
"data": ["foo"],
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "empty array is invalid",
|
|
"data": [],
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allow everything with boolean schema false",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"not": false
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "number is valid",
|
|
"data": 1,
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "string is valid",
|
|
"data": "foo",
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "boolean true is valid",
|
|
"data": true,
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "boolean false is valid",
|
|
"data": false,
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "null is valid",
|
|
"data": null,
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "object is valid",
|
|
"data": {"foo": "bar"},
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "empty object is valid",
|
|
"data": {},
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "array is valid",
|
|
"data": ["foo"],
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "empty array is valid",
|
|
"data": [],
|
|
"valid": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "double negation",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"not": { "not": {} }
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "any value is valid",
|
|
"data": "foo",
|
|
"valid": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "collect annotations inside a 'not', even if collection is disabled",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"not": {
|
|
"$comment": "this subschema must still produce annotations internally, even though the 'not' will ultimately discard them",
|
|
"anyOf": [
|
|
true,
|
|
{ "properties": { "foo": true } }
|
|
],
|
|
"unevaluatedProperties": false
|
|
}
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "unevaluated property",
|
|
"data": { "bar": 1 },
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "annotations are still collected inside a 'not'",
|
|
"data": { "foo": 1 },
|
|
"valid": false
|
|
}
|
|
]
|
|
}
|
|
]
|