Thomas Bruggink created THRIFT-5761:
---------------------------------------
Summary: Lib/json tests fail
Key: THRIFT-5761
URL: https://issues.apache.org/jira/browse/THRIFT-5761
Project: Thrift
Issue Type: Bug
Reporter: Thomas Bruggink
Running `ant validate-generated-json` fails with the following error:
{code:java}
validate-generated-json:
[java] --- BEGIN
/thrift/src/lib/json/test/build/gen-json/ThriftTest.json---
[java] validation: FAILURE
[java] [ {
[java] "level" : "error",
[java] "schema" : {
[java] "loadingURI" : "file:/thrift/src/lib/json/schema.json#",
[java] "pointer" : "/definitions/constant"
[java] },
[java] "instance" : {
[java] "pointer" : "/constants/0"
[java] },
[java] "domain" : "validation",
[java] "keyword" : "allOf",
[java] "message" : "instance failed to match all required schemas
(matched only 2 out of 3)",
[java] "matched" : 2,
[java] "nrSchemas" : 3,
[java] "reports" : {
[java] "/definitions/constant/allOf/0" : [ ],
[java] "/definitions/constant/allOf/1" : [ {
[java] "level" : "error",
[java] "schema" : {
[java] "loadingURI" : "file:/thrift/src/lib/json/schema.json#",
[java] "pointer" : "/definitions/type-desc"
[java] },
[java] "instance" : {
[java] "pointer" : "/constants/0"
[java] },
[java] "domain" : "validation",
[java] "keyword" : "allOf",
[java] "message" : "instance failed to match all required schemas
(matched only 1 out of 2)",
[java] "matched" : 1,
[java] "nrSchemas" : 2,
[java] "reports" : {
[java] "/definitions/type-desc/allOf/0" : [ ],
[java] "/definitions/type-desc/allOf/1" : [ {
[java] "level" : "error",
[java] "schema" : {
[java] "loadingURI" : "file:/thrift/src/lib/json/schema.json#",
[java] "pointer" : "/definitions/type-desc/allOf/1"
[java] },
[java] "instance" : {
[java] "pointer" : "/constants/0"
[java] },
[java] "domain" : "validation",
[java] "keyword" : "oneOf",
[java] "message" : "instance failed to match exactly one schema
(matched 0 out of 4)",
[java] "matched" : 0,
[java] "nrSchemas" : 4,
[java] "reports" : {
[java] "/definitions/type-desc/allOf/1/oneOf/0" : [ {
[java] "level" : "error",
[java] "schema" : {
[java] "loadingURI" :
"file:/thrift/src/lib/json/schema.json#",
[java] "pointer" :
"/definitions/base-type/properties/typeId"
[java] },
[java] "instance" : {
[java] "pointer" : "/constants/0/typeId"
[java] },
[java] "domain" : "validation",
[java] "keyword" : "enum",
[java] "message" : "instance value (\"enum\") not found in
enum (possible values:
[\"void\",\"string\",\"bool\",\"byte\",\"i8\",\"i16\",\"i32\",\"i64\",\"double\",\"binary\",\"uuid\"])",
[java] "value" : "enum",
[java] "enum" : [ "void", "string", "bool", "byte", "i8",
"i16", "i32", "i64", "double", "binary", "uuid" ]
[java] } ],
[java] "/definitions/type-desc/allOf/1/oneOf/1" : [ {
[java] "level" : "error",
[java] "schema" : {
[java] "loadingURI" :
"file:/thrift/src/lib/json/schema.json#",
[java] "pointer" : "/definitions/list-type"
[java] },
[java] "instance" : {
[java] "pointer" : "/constants/0"
[java] },
[java] "domain" : "validation",
[java] "keyword" : "required",
[java] "message" : "object has missing required properties
([\"elemTypeId\"])",
[java] "required" : [ "elemTypeId", "typeId" ],
[java] "missing" : [ "elemTypeId" ]
[java] }, {
[java] "level" : "error",
[java] "schema" : {
[java] "loadingURI" :
"file:/thrift/src/lib/json/schema.json#",
[java] "pointer" :
"/definitions/list-type/properties/typeId"
[java] },
[java] "instance" : {
[java] "pointer" : "/constants/0/typeId"
[java] },
[java] "domain" : "validation",
[java] "keyword" : "enum",
[java] "message" : "instance value (\"enum\") not found in
enum (possible values: [\"list\",\"set\"])",
[java] "value" : "enum",
[java] "enum" : [ "list", "set" ]
[java] } ],
[java] "/definitions/type-desc/allOf/1/oneOf/2" : [ {
[java] "level" : "error",
[java] "schema" : {
[java] "loadingURI" :
"file:/thrift/src/lib/json/schema.json#",
[java] "pointer" : "/definitions/map-type"
[java] },
[java] "instance" : {
[java] "pointer" : "/constants/0"
[java] },
[java] "domain" : "validation",
[java] "keyword" : "required",
[java] "message" : "object has missing required properties
([\"keyTypeId\",\"valueTypeId\"])",
[java] "required" : [ "keyTypeId", "typeId", "valueTypeId" ],
[java] "missing" : [ "keyTypeId", "valueTypeId" ]
[java] }, {
[java] "level" : "error",
[java] "schema" : {
[java] "loadingURI" :
"file:/thrift/src/lib/json/schema.json#",
[java] "pointer" :
"/definitions/map-type/properties/typeId"
[java] },
[java] "instance" : {
[java] "pointer" : "/constants/0/typeId"
[java] },
[java] "domain" : "validation",
[java] "keyword" : "enum",
[java] "message" : "instance value (\"enum\") not found in
enum (possible values: [\"map\"])",
[java] "value" : "enum",
[java] "enum" : [ "map" ]
[java] } ],
[java] "/definitions/type-desc/allOf/1/oneOf/3" : [ {
[java] "level" : "error",
[java] "schema" : {
[java] "loadingURI" :
"file:/thrift/src/lib/json/schema.json#",
[java] "pointer" : "/definitions/struct-type"
[java] },
[java] "instance" : {
[java] "pointer" : "/constants/0"
[java] },
[java] "domain" : "validation",
[java] "keyword" : "required",
[java] "message" : "object has missing required properties
([\"class\"])",
[java] "required" : [ "class", "typeId" ],
[java] "missing" : [ "class" ]
[java] } ]
[java] }
[java] } ]
[java] }
[java] } ],
[java] "/definitions/constant/allOf/2" : [ ]
[java] }
[java] } ]
[java] --- END /thrift/src/lib/json/test/build/gen-json/ThriftTest.json---
BUILD FAILED
/thrift/src/lib/json/test/build.xml:94: The following error occurred while
executing this line:
/thrift/src/lib/json/test/build.xml:137: Java returned: 100
{code}
The issues seems to come from the recent changes to move `enum` into the
`struct`. Previously the `constant` section was only tested for `enum` being `
number` but now that it has been moved to a struct the
`#/definitions/type-desc` seems to fail.
I think this was always broken just skipped during testing.
The JSON output is:
{code:json}
"constants": [
{
"name": "myNumberz",
"typeId": "enum",
"type": {
"typeId": "enum",
"class": "Numberz"
},
"value": 1
}
],
{code}
but the expected output of the test is:
{code:json}
"constants": [
{
"name": "myNumberz",
"typeId": "enum",
"class": "Numberz",
"value": 1
}
],
{code}
assuming the original compiler is right the test should be updated.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)