Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Apple][TvOS][JsonSchemaExporter] Generated schema does not match the expected specification #103694

Open
matouskozak opened this issue Jun 19, 2024 · 7 comments
Labels
area-System.Text.Json disabled-test The test is disabled in source code against the issue
Milestone

Comments

@matouskozak
Copy link
Member

matouskozak commented Jun 19, 2024

Build Information

Build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=709161
Build error leg or test failing: System.Text.Json.Tests
Affected CI: tvos_arm64_release_allsubsets_mono (runtime-extra-platforms)
Range of commits: 7e9cab2...4834a50

Error Message

Fill the error message using step by step known issues guidance.

{
  "ErrorMessage": "[FAIL] System.Text.Json.Schema.Tests.JsonSchemaExporterTests_Reflection.TestTypes_GeneratesExpectedJsonSchema",
  "BuildRetry": false,
  "ExcludeConsoleLog": false
}

Full error message:

[17:52:04.8064100] 2024-06-15 14:52:04.854 System.Text.Json.Tests[70857:94526258] 	[FAIL] System.Text.Json.Schema.Tests.JsonSchemaExporterTests_Reflection.TestTypes_GeneratesExpectedJsonSchema(testData: TestData { Value = Left { value = value }, ExpectedJsonSchema = {
[17:52:04.8064470]     "type": ["object","null"],
[17:52:04.8064550]     "required": ["case"],
[17:52:04.8064630] 2024-06-15 14:52:04.855 System.Text.Json.Tests[70857:94526258]     "anyOf": [
[17:52:04.8064690]         {
[17:52:04.8064760]             "properties": {
[17:52:04.8064840]                 "case": {"const":"left"},
[17:52:04.8064910]                 "value": {"type":"string"}
[17:52:04.8064970]             },
[17:52:04.8065030]             "required": ["value"]
[17:52:04.8065090]         },
[17:52:04.8065140]         {
[17:52:04.8065230]             "properties": {
[17:52:04.8065300] 2024-06-15 14:52:04.855 System.Text.Json.Tests[70857:94526258]                 "case": {"const":"right"},
[17:52:04.8065360]                 "value": {"type":"integer"}
[17:52:04.8065420]             },
[17:52:04.8065480]             "required": ["value"]
[17:52:04.8065540]         }
[17:52:04.8065590]     ]
[17:52:04.8083930] 2024-06-15 14:52:04.856 System.Text.Json.Tests[70857:94526258] }, AdditionalValues = <>z__ReadOnlySingleElementList`1[System.Text.Json.Schema.Tests.JsonSchemaExporterTests+DiscriminatedUnion], Options = , Type = System.Text.Json.Schema.Tests.JsonSchemaExporterTests+DiscriminatedUnion })
[17:52:04.8084520] Generated schema does not match the expected specification.
[17:52:04.8084630] Expected:
[17:52:04.8084720] {
[17:52:04.8084790]   "type": [
[17:52:04.8084870]     "object",
[17:52:04.8084950]     "null"
[17:52:04.8085020]   ],
[17:52:04.8085100]   "required": [
[17:52:04.8085170]     "case"
[17:52:04.8085240]   ],
[17:52:04.8085310]   "anyOf": [
[17:52:04.8085380]     {
[17:52:04.8085570] 2024-06-15 14:52:04.857 System.Text.Json.Tests[70857:94526258]       "properties": {
[17:52:04.8085680]         "case": {
[17:52:04.8085760]           "const": "left"
[17:52:04.8085840]         },
[17:52:04.8085920]         "value": {
[17:52:04.8086000]           "type": "string"
[17:52:04.8086070]         }
[17:52:04.8086140]       },
[17:52:04.8086200]       "required": [
[17:52:04.8086270]         "value"
[17:52:04.8086330]       ]
[17:52:04.8086390]     },
[17:52:04.8086460]     {
[17:52:04.8086520]       "properties": {
[17:52:04.8086590]         "case": {
[17:52:04.8086660] 2024-06-15 14:52:04.857 System.Text.Json.Tests[70857:94526258]           "const": "right"
[17:52:04.8086730]         },
[17:52:04.8087880]         "value": {
[17:52:04.8087960]           "type": "integer"
[17:52:04.8088030]         }
[17:52:04.8088090]       },
[17:52:04.8088150]       "required": [
[17:52:04.8088220]         "value"
[17:52:04.8088280]       ]
[17:52:04.8088340]     }
[17:52:04.8088400]   ]
[17:52:04.8088460] }
[17:52:04.8088740] Actual:
[17:52:04.8088800] {
[17:52:04.8088880]   "type": [
[17:52:04.8088930]     "object",
[17:52:04.8088990]     "null"
[17:52:04.8089050]   ],
[17:52:04.8089110]   "required": [
[17:52:04.8089170]     "case"
[17:52:04.8089220]   ],
[17:52:04.8089280]   "anyOf": [
[17:52:04.8089330]     {
[17:52:04.8089400] 2024-06-15 14:52:04.857 System.Text.Json.Tests[70857:94526258]       "properties": {
[17:52:04.8089460]         "case": {
[17:52:04.8089520]           "const": "right"
[17:52:04.8089570]         },
[17:52:04.8089630]         "value": {
[17:52:04.8089690]           "type": "integer"
[17:52:04.8089750]         }
[17:52:04.8089800]       },
[17:52:04.8089860]       "required": [
[17:52:04.8089920]         "value"
[17:52:04.8089970]       ]
[17:52:04.8090030]     },
[17:52:04.8090080]     {
[17:52:04.8090140]       "properties": {
[17:52:04.8090200]         "case": {
[17:52:04.8090260]           "const": "left"
[17:52:04.8090380] 2024-06-15 14:52:04.857 System.Text.Json.Tests[70857:94526258]         },
[17:52:04.8090450]         "value": {
[17:52:04.8090510]           "type": "string"
[17:52:04.8090570]         }
[17:52:04.8090630]       },
[17:52:04.8090690]       "required": [
[17:52:04.8090740]         "value"
[17:52:04.8090800]       ]
[17:52:04.8090860]     }
[17:52:04.8090910]   ]
[17:52:04.8090970] }
[17:52:04.8091040] 2024-06-15 14:52:04.857 System.Text.Json.Tests[70857:94526258]    at System.Text.Json.Schema.Tests.JsonSchemaExporterTests.AssertValidJsonSchema(Type type, String expectedJsonSchema, JsonNode actualJsonSchema)
[17:52:04.8091110]    at System.Text.Json.Schema.Tests.JsonSchemaExporterTests.TestTypes_GeneratesExpectedJsonSchema(ITestData testData)
[17:52:04.8091180]    at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[17:52:04.8091900] 2024-06-15 14:52:04.858 System.Text.Json.Tests[70857:94526258]    at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
[17:52:04.8220480] 2024-06-15 14:52:04.870 System.Text.Json.Tests[70857:94526258] 	[FAIL] System.Text.Json.Schema.Tests.JsonSchemaExporterTests_Reflection.TestTypes_GeneratesExpectedJsonSchema(testData: TestData { Value = System.Text.Json.Schema.Tests.JsonSchemaExporterTests+PocoCombiningPolymorphicTypeAndDerivedTypes, ExpectedJsonSchema = {
[17:52:04.8221240]     "type": ["object","null"],
[17:52:04.8221410]     "properties": {
[17:52:04.8221510]         "PolymorphicValue": {
[17:52:04.8221640]             "anyOf": [
[17:52:04.8221730]                 {
[17:52:04.8221810]                     "type": "object",
[17:52:04.8221900]                     "properties": {
[17:52:04.8234170] 2024-06-15 14:52:04.872 System.Text.Json.Tests[70857:94526258]                         "BaseValue": {"type":"integer"},
[17:52:04.8234460]                         "DerivedValue": {"type":["string", "null"]}
[17:52:04.8234560]                     }
[17:52:04.8234650]                 },
[17:52:04.8234740]                 {
[17:52:04.8234820]                     "type": "object",
[17:52:04.8234930]                     "properties": {
[17:52:04.8235370] 2024-06-15 14:52:04.872 System.Text.Json.Tests[70857:94526258]                         "$type": {"const":"derivedPoco"},
[17:52:04.8235490]                         "BaseValue": {"type":"integer"},
[17:52:04.8235580]                         "DerivedValue": {"type":["string","null"]}
[17:52:04.8235670]                     },
[17:52:04.8235750]                     "required": ["$type"]
[17:52:04.8235830]                 },
[17:52:04.8235910]                 {
[17:52:04.8238080] 2024-06-15 14:52:04.873 System.Text.Json.Tests[70857:94526258]                     "type": "object",
[17:52:04.8238330]                     "properties": {
[17:52:04.8238480]                         "$type": {"const":42},
[17:52:04.8238570]                         "BaseValue": {"type":"integer"},
[17:52:04.8238660]                         "DerivedValue": {"type":["string", "null"]}
[17:52:04.8238740]                     },
[17:52:04.8246780] 2024-06-15 14:52:04.873 System.Text.Json.Tests[70857:94526258]                     "required": ["$type"]
[17:52:04.8247020]                 },
[17:52:04.8247130]                 {
[17:52:04.8247220]                     "type": "array",
[17:52:04.8247300]                     "items": {"type":"integer"}
[17:52:04.8247390]                 },
[17:52:04.8247470]                 {
[17:52:04.8247550]                     "type": "object",
[17:52:04.8247710] 2024-06-15 14:52:04.874 System.Text.Json.Tests[70857:94526258]                     "properties": {
[17:52:04.8247830]                         "$type": {"const":"derivedCollection"},
[17:52:04.8247910]                         "$values": {
[17:52:04.8248000]                             "type": "array",
[17:52:04.8248090]                             "items": {"type":"integer"}
[17:52:04.8248170]                         }
[17:52:04.8248260] 2024-06-15 14:52:04.874 System.Text.Json.Tests[70857:94526258]                     },
[17:52:04.8248350]                     "required": ["$type"]
[17:52:04.8248430]                 },
[17:52:04.8248500]                 {
[17:52:04.8248590]                     "type": "object",
[17:52:04.8248670]                     "additionalProperties":{"type": "integer"}
[17:52:04.8248750]                 },
[17:52:04.8248830]                 {
[17:52:04.8248960] 2024-06-15 14:52:04.874 System.Text.Json.Tests[70857:94526258]                     "type": "object",
[17:52:04.8249040]                     "properties": {
[17:52:04.8249130]                         "$type": {"const":"derivedDictionary"}
[17:52:04.8249220]                     },
[17:52:04.8249300]                     "additionalProperties":{"type": "integer"},
[17:52:04.8249390]                     "required": ["$type"]
[17:52:04.8249470]                 }
[17:52:04.8263210] 2024-06-15 14:52:04.875 System.Text.Json.Tests[70857:94526258]             ]
[17:52:04.8263430]         },
[17:52:04.8263540]         "DiscriminatedUnion":{
[17:52:04.8263660]             "type": "object",
[17:52:04.8263740]             "required": ["case"],
[17:52:04.8263830]             "anyOf": [
[17:52:04.8263910]                 {
[17:52:04.8264000]                     "properties": {
[17:52:04.8264090]                         "case": {"const":"left"},
[17:52:04.8264240] 2024-06-15 14:52:04.875 System.Text.Json.Tests[70857:94526258]                         "value": {"type":"string"}
[17:52:04.8264340]                     },
[17:52:04.8264430]                     "required": ["value"]
[17:52:04.8264520]                 },
[17:52:04.8264600]                 {
[17:52:04.8264690]                     "properties": {
[17:52:04.8264770]                         "case": {"const":"right"},
[17:52:04.8264930] 2024-06-15 14:52:04.875 System.Text.Json.Tests[70857:94526258]                         "value": {"type":"integer"}
[17:52:04.8265020]                     },
[17:52:04.8265100]                     "required": ["value"]
[17:52:04.8265180]                 }
[17:52:04.8265260]             ]
[17:52:04.8265340]         },
[17:52:04.8265430]         "DerivedValue1": {
[17:52:04.8265510]             "type": "object",
[17:52:04.8265590]             "properties": {
[17:52:04.8265690] 2024-06-15 14:52:04.875 System.Text.Json.Tests[70857:94526258]                 "BaseValue": {"type":"integer"},
[17:52:04.8265780]                 "DerivedValue": {"type":["string", "null"]}
[17:52:04.8265870]             }
[17:52:04.8265940]         },
[17:52:04.8266030]         "DerivedValue2": {
[17:52:04.8266110]             "type": "object",
[17:52:04.8266190]             "properties": {
[17:52:04.8266280]                 "BaseValue": {"type":"integer"},
[17:52:04.8266430] 2024-06-15 14:52:04.875 System.Text.Json.Tests[70857:94526258]                 "DerivedValue": {"type":["string", "null"]}
[17:52:04.8266520]             }
[17:52:04.8266600]         }
[17:52:04.8266680]     }
[17:52:04.8266780] }, AdditionalValues = , Options = , Type = System.Text.Json.Schema.Tests.JsonSchemaExporterTests+PocoCombiningPolymorphicTypeAndDerivedTypes })
[17:52:04.8266870] 2024-06-15 14:52:04.875 System.Text.Json.Tests[70857:94526258] Generated schema does not match the expected specification.
[17:52:04.8266970] Expected:
[17:52:04.8267050] {
[17:52:04.8267130]   "type": [
[17:52:04.8267220]     "object",
[17:52:04.8267300]     "null"
[17:52:04.8267380]   ],
[17:52:04.8267460]   "properties": {
[17:52:04.8267540]     "PolymorphicValue": {
[17:52:04.8267620]       "anyOf": [
[17:52:04.8267700]         {
[17:52:04.8267780]           "type": "object",
[17:52:04.8267860]           "properties": {
[17:52:04.8267940]             "BaseValue": {
[17:52:04.8268020]               "type": "integer"
[17:52:04.8281690] 2024-06-15 14:52:04.877 System.Text.Json.Tests[70857:94526258]             },
[17:52:04.8281880]             "DerivedValue": {
[17:52:04.8281960]               "type": [
[17:52:04.8282030]                 "string",
[17:52:04.8282090]                 "null"
[17:52:04.8282150]               ]
[17:52:04.8282210]             }
[17:52:04.8282270]           }
[17:52:04.8282330]         },
[17:52:04.8282390]         {
[17:52:04.8282450]           "type": "object",
[17:52:04.8282510]           "properties": {
[17:52:04.8282570]             "$type": {
[17:52:04.8296140] 2024-06-15 14:52:04.878 System.Text.Json.Tests[70857:94526258]               "const": "derivedPoco"
[17:52:04.8296330]             },
[17:52:04.8296410]             "BaseValue": {
[17:52:04.8296480]               "type": "integer"
[17:52:04.8296550]             },
[17:52:04.8296610]             "DerivedValue": {
[17:52:04.8296680]               "type": [
[17:52:04.8296750]                 "string",
[17:52:04.8296810]                 "null"
[17:52:04.8296870]               ]
[17:52:04.8296940]             }
[17:52:04.8297060] 2024-06-15 14:52:04.878 System.Text.Json.Tests[70857:94526258]           },
[17:52:04.8297130]           "required": [
[17:52:04.8297200]             "$type"
[17:52:04.8297260]           ]
[17:52:04.8297330]         },
[17:52:04.8297410]         {
[17:52:04.8297480]           "type": "object",
[17:52:04.8297540]           "properties": {
[17:52:04.8297610]             "$type": {
[17:52:04.8297670]               "const": 42
[17:52:04.8297730]             },
[17:52:04.8297790]             "BaseValue": {
[17:52:04.8303450] 2024-06-15 14:52:04.880 System.Text.Json.Tests[70857:94526258]               "type": "integer"
[17:52:04.8303610]             },
[17:52:04.8303680]             "DerivedValue": {
[17:52:04.8303740]               "type": [
[17:52:04.8303810]                 "string",
[17:52:04.8303870]                 "null"
[17:52:04.8303950]               ]
[17:52:04.8304020]             }
[17:52:04.8304070]           },
[17:52:04.8304140]           "required": [
[17:52:04.8304200]             "$type"
[17:52:04.8304260]           ]
[17:52:04.8304320]         },
[17:52:04.8304380]         {
[17:52:04.8309520] 2024-06-15 14:52:04.880 System.Text.Json.Tests[70857:94526258]           "type": "array",
[17:52:04.8309710]           "items": {
[17:52:04.8309790]             "type": "integer"
[17:52:04.8309850]           }
[17:52:04.8309920]         },
[17:52:04.8309970]         {
[17:52:04.8310030]           "type": "object",
[17:52:04.8310100]           "properties": {
[17:52:04.8310160]             "$type": {
[17:52:04.8310220]               "const": "derivedCollection"
[17:52:04.8310280]             },
[17:52:04.8310350] 2024-06-15 14:52:04.880 System.Text.Json.Tests[70857:94526258]             "$values": {
[17:52:04.8310410]               "type": "array",
[17:52:04.8310470]               "items": {
[17:52:04.8310530]                 "type": "integer"
[17:52:04.8310590]               }
[17:52:04.8310670]             }
[17:52:04.8310720]           },
[17:52:04.8310780]           "required": [
[17:52:04.8310840]             "$type"
[17:52:04.8310900]           ]
[17:52:04.8310960]         },
[17:52:04.8311020]         {
[17:52:04.8311080]           "type": "object",
[17:52:04.8331370] 2024-06-15 14:52:04.881 System.Text.Json.Tests[70857:94526258]           "additionalProperties": {
[17:52:04.8331530]             "type": "integer"
[17:52:04.8331600]           }
[17:52:04.8331670]         },
[17:52:04.8331800]         {
[17:52:04.8331870]           "type": "object",
[17:52:04.8331930]           "properties": {
[17:52:04.8332000]             "$type": {
[17:52:04.8332060]               "const": "derivedDictionary"
[17:52:04.8332120]             }
[17:52:04.8332180]           },
[17:52:04.8332310] 2024-06-15 14:52:04.882 System.Text.Json.Tests[70857:94526258]           "additionalProperties": {
[17:52:04.8332380]             "type": "integer"
[17:52:04.8332440]           },
[17:52:04.8332500]           "required": [
[17:52:04.8332560]             "$type"
[17:52:04.8332630]           ]
[17:52:04.8332690]         }
[17:52:04.8332750]       ]
[17:52:04.8332810]     },
[17:52:04.8333030]     "DiscriminatedUnion": {
[17:52:04.8333090]       "type": "object",
[17:52:04.8333160]       "required": [
[17:52:04.8333370]         "case"
[17:52:04.8333430]       ],
[17:52:04.8333490]       "anyOf": [
[17:52:04.8333710]         {
[17:52:04.8333780] 2024-06-15 14:52:04.882 System.Text.Json.Tests[70857:94526258]           "properties": {
[17:52:04.8333840]             "case": {
[17:52:04.8333910]               "const": "left"
[17:52:04.8333980]             },
[17:52:04.8334040]             "value": {
[17:52:04.8334110]               "type": "string"
[17:52:04.8334330]             }
[17:52:04.8334390]           },
[17:52:04.8334450]           "required": [
[17:52:04.8334510]             "value"
[17:52:04.8334570]           ]
[17:52:04.8334630]         },
[17:52:04.8334690]         {
[17:52:04.8334820] 2024-06-15 14:52:04.882 System.Text.Json.Tests[70857:94526258]           "properties": {
[17:52:04.8334890]             "case": {
[17:52:04.8334960]               "const": "right"
[17:52:04.8335020]             },
[17:52:04.8335080]             "value": {
[17:52:04.8335140]               "type": "integer"
[17:52:04.8335200]             }
[17:52:04.8335260]           },
[17:52:04.8335340]           "required": [
[17:52:04.8335400]             "value"
[17:52:04.8335460]           ]
[17:52:04.8335520]         }
[17:52:04.8335580]       ]
[17:52:04.8335640]     },
[17:52:04.8335710] 2024-06-15 14:52:04.882 System.Text.Json.Tests[70857:94526258]     "DerivedValue1": {
[17:52:04.8335770]       "type": "object",
[17:52:04.8335830]       "properties": {
[17:52:04.8335900]         "BaseValue": {
[17:52:04.8335960]           "type": "integer"
[17:52:04.8336020]         },
[17:52:04.8336080]         "DerivedValue": {
[17:52:04.8336140]           "type": [
[17:52:04.8336200]             "string",
[17:52:04.8336260]             "null"
[17:52:04.8336320]           ]
[17:52:04.8336380]         }
[17:52:04.8336430]       }
[17:52:04.8336490]     },
[17:52:04.8336560] 2024-06-15 14:52:04.882 System.Text.Json.Tests[70857:94526258]     "DerivedValue2": {
[17:52:04.8336620]       "type": "object",
[17:52:04.8336680]       "properties": {
[17:52:04.8336740]         "BaseValue": {
[17:52:04.8336800]           "type": "integer"
[17:52:04.8336860]         },
[17:52:04.8336920]         "DerivedValue": {
[17:52:04.8336980]           "type": [
[17:52:04.8337040]             "string",
[17:52:04.8337100]             "null"
[17:52:04.8337160]           ]
[17:52:04.8337220]         }
[17:52:04.8337280]       }
[17:52:04.8337340]     }
[17:52:04.8337400]   }
[17:52:04.8337460] }
[17:52:04.8348820] 2024-06-15 14:52:04.884 System.Text.Json.Tests[70857:94526258] Actual:
[17:52:04.8349010] {
[17:52:04.8349080]   "type": [
[17:52:04.8349150]     "object",
[17:52:04.8349220]     "null"
[17:52:04.8349290]   ],
[17:52:04.8349360]   "properties": {
[17:52:04.8349420]     "PolymorphicValue": {
[17:52:04.8349480]       "anyOf": [
[17:52:04.8349540]         {
[17:52:04.8349600]           "type": "object",
[17:52:04.8349660]           "properties": {
[17:52:04.8349730]             "DerivedValue": {
[17:52:04.8349790]               "type": [
[17:52:04.8349850]                 "string",
[17:52:04.8364930] 2024-06-15 14:52:04.885 System.Text.Json.Tests[70857:94526258]                 "null"
[17:52:04.8365120]               ]
[17:52:04.8365200]             },
[17:52:04.8365270]             "BaseValue": {
[17:52:04.8365490]               "type": "integer"
[17:52:04.8365550]             }
[17:52:04.8365630]           }
[17:52:04.8365700]         },
[17:52:04.8365770]         {
[17:52:04.8365990]           "type": "object",
[17:52:04.8366050]           "properties": {
[17:52:04.8366110]             "$type": {
[17:52:04.8366440] 2024-06-15 14:52:04.885 System.Text.Json.Tests[70857:94526258]               "const": "derivedPoco"
[17:52:04.8366510]             },
[17:52:04.8366740]             "DerivedValue": {
[17:52:04.8366800]               "type": [
[17:52:04.8366860]                 "string",
[17:52:04.8366920]                 "null"
[17:52:04.8366980]               ]
[17:52:04.8367040]             },
[17:52:04.8367100]             "BaseValue": {
[17:52:04.8367160]               "type": "integer"
[17:52:04.8367220]             }
[17:52:04.8367280]           },
[17:52:04.8367350] 2024-06-15 14:52:04.885 System.Text.Json.Tests[70857:94526258]           "required": [
[17:52:04.8367410]             "$type"
[17:52:04.8367460]           ]
[17:52:04.8367520]         },
[17:52:04.8367590]         {
[17:52:04.8367810]           "type": "object",
[17:52:04.8367880]           "properties": {
[17:52:04.8367950]             "$type": {
[17:52:04.8368020]               "const": 42
[17:52:04.8368230]             },
[17:52:04.8368300]             "DerivedValue": {
[17:52:04.8368360]               "type": [
[17:52:04.8368420] 2024-06-15 14:52:04.886 System.Text.Json.Tests[70857:94526258]                 "string",
[17:52:04.8368490]                 "null"
[17:52:04.8368540]               ]
[17:52:04.8368600]             },
[17:52:04.8368670]             "BaseValue": {
[17:52:04.8368730]               "type": "integer"
[17:52:04.8368790]             }
[17:52:04.8368850]           },
[17:52:04.8368920]           "required": [
[17:52:04.8368970]             "$type"
[17:52:04.8369050]           ]
[17:52:04.8369120]         },
[17:52:04.8369180]         {
[17:52:04.8369280] 2024-06-15 14:52:04.886 System.Text.Json.Tests[70857:94526258]           "type": "array",
[17:52:04.8369360]           "items": {
[17:52:04.8369420]             "type": "integer"
[17:52:04.8369480]           }
[17:52:04.8369540]         },
[17:52:04.8369600]         {
[17:52:04.8369660]           "type": "object",
[17:52:04.8369720]           "properties": {
[17:52:04.8369780]             "$type": {
[17:52:04.8369840]               "const": "derivedCollection"
[17:52:04.8369900]             },
[17:52:04.8369960]             "$values": {
[17:52:04.8393750] 2024-06-15 14:52:04.888 System.Text.Json.Tests[70857:94526258]               "type": "array",
[17:52:04.8393920]               "items": {
[17:52:04.8394000]                 "type": "integer"
[17:52:04.8394060]               }
[17:52:04.8394120]             }
[17:52:04.8394180]           },
[17:52:04.8394240]           "required": [
[17:52:04.8394300]             "$type"
[17:52:04.8394360]           ]
[17:52:04.8394410]         },
[17:52:04.8394480]         {
[17:52:04.8394540]           "type": "object",
[17:52:04.8417000] 2024-06-15 14:52:04.890 System.Text.Json.Tests[70857:94526258]           "additionalProperties": {
[17:52:04.8417180]             "type": "integer"
[17:52:04.8417270]           }
[17:52:04.8417330]         },
[17:52:04.8417390]         {
[17:52:04.8417450]           "type": "object",
[17:52:04.8417510]           "properties": {
[17:52:04.8417590]             "$type": {
[17:52:04.8417660]               "const": "derivedDictionary"
[17:52:04.8417720]             }
[17:52:04.8417780]           },
[17:52:04.8417840]           "required": [
[17:52:04.8417960] 2024-06-15 14:52:04.891 System.Text.Json.Tests[70857:94526258]             "$type"
[17:52:04.8418020]           ],
[17:52:04.8418080]           "additionalProperties": {
[17:52:04.8418150]             "type": "integer"
[17:52:04.8418200]           }
[17:52:04.8418260]         }
[17:52:04.8418320]       ]
[17:52:04.8418380]     },
[17:52:04.8418440]     "DiscriminatedUnion": {
[17:52:04.8418500]       "type": "object",
[17:52:04.8418560]       "required": [
[17:52:04.8418620]         "case"
[17:52:04.8418680]       ],
[17:52:04.8418740]       "anyOf": [
[17:52:04.8418810]         {
[17:52:04.8418870] 2024-06-15 14:52:04.891 System.Text.Json.Tests[70857:94526258]           "properties": {
[17:52:04.8418940]             "case": {
[17:52:04.8419000]               "const": "right"
[17:52:04.8419060]             },
[17:52:04.8419120]             "value": {
[17:52:04.8419180]               "type": "integer"
[17:52:04.8419390]             }
[17:52:04.8419450]           },
[17:52:04.8419520]           "required": [
[17:52:04.8419580]             "value"
[17:52:04.8419790]           ]
[17:52:04.8419850]         },
[17:52:04.8419900]         {
[17:52:04.8420010] 2024-06-15 14:52:04.891 System.Text.Json.Tests[70857:94526258]           "properties": {
[17:52:04.8420080]             "case": {
[17:52:04.8420140]               "const": "left"
[17:52:04.8420200]             },
[17:52:04.8420270]             "value": {
[17:52:04.8420340]               "type": "string"
[17:52:04.8420390]             }
[17:52:04.8420450]           },
[17:52:04.8420510]           "required": [
[17:52:04.8420570]             "value"
[17:52:04.8420630]           ]
[17:52:04.8420690]         }
[17:52:04.8420750]       ]
[17:52:04.8420800]     },
[17:52:04.8420870] 2024-06-15 14:52:04.891 System.Text.Json.Tests[70857:94526258]     "DerivedValue1": {
[17:52:04.8420930]       "type": "object",
[17:52:04.8420990]       "properties": {
[17:52:04.8421210]         "DerivedValue": {
[17:52:04.8421280]           "type": [
[17:52:04.8421340]             "string",
[17:52:04.8421550]             "null"
[17:52:04.8421610]           ]
[17:52:04.8421660]         },
[17:52:04.8421720]         "BaseValue": {
[17:52:04.8421790]           "type": "integer"
[17:52:04.8421840]         }
[17:52:04.8421900]       }
[17:52:04.8421960]     },
[17:52:04.8440620] 2024-06-15 14:52:04.893 System.Text.Json.Tests[70857:94526258]     "DerivedValue2": {
[17:52:04.8440810]       "type": "object",
[17:52:04.8440890]       "properties": {
[17:52:04.8440980]         "DerivedValue": {
[17:52:04.8441040]           "type": [
[17:52:04.8441100]             "string",
[17:52:04.8441160]             "null"
[17:52:04.8441220]           ]
[17:52:04.8441280]         },
[17:52:04.8441340]         "BaseValue": {
[17:52:04.8441400]           "type": "integer"
[17:52:04.8441460]         }
[17:52:04.8441520]       }
[17:52:04.8441580]     }
[17:52:04.8441640]   }
[17:52:04.8441700] }
[17:52:04.8491800] 2024-06-15 14:52:04.897 System.Text.Json.Tests[70857:94526258]    at System.Text.Json.Schema.Tests.JsonSchemaExporterTests.AssertValidJsonSchema(Type type, String expectedJsonSchema, JsonNode actualJsonSchema)
[17:52:04.8491970]    at System.Text.Json.Schema.Tests.JsonSchemaExporterTests.TestTypes_GeneratesExpectedJsonSchema(ITestData testData)
[17:52:04.8492380] 2024-06-15 14:52:04.897 System.Text.Json.Tests[70857:94526258]    at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[17:52:04.8492550]    at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)

Known issue validation

Build: 🔎 https://dev.azure.com/dnceng-public/public/_build/results?buildId=709161
Error message validated: [[FAIL] System.Text.Json.Schema.Tests.JsonSchemaExporterTests_Reflection.TestTypes_GeneratesExpectedJsonSchema]
Result validation: ❌ Known issue did not match with the provided build.
Validation performed at: 6/19/2024 10:40:07 AM UTC

Report

Build Definition Test Pull Request
733681 dotnet/runtime WasmTestOnV8-ST-System.Text.Json.Tests.WorkItemExecution #104575

Summary

24-Hour Hit Count 7-Day Hit Count 1-Month Count
0 0 1
@matouskozak matouskozak added arch-arm64 area-System.Text.Json blocking-clean-ci Blocking PR or rolling runs of 'runtime' or 'runtime-extra-platforms' os-tvos Apple tvOS Known Build Error Use this to report build issues in the .NET Helix tab labels Jun 19, 2024
Copy link
Contributor

Tagging subscribers to 'os-tvos': @vitek-karas, @kotlarmilos, @ivanpovazan, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@dotnet-policy-service dotnet-policy-service bot added the untriaged New issue has not been triaged by the area owner label Jun 19, 2024
Copy link
Contributor

Tagging subscribers to this area: @dotnet/area-system-text-json, @gregsdennis
See info in area-owners.md if you want to be subscribed.

@matouskozak
Copy link
Member Author

Could it be related to #103322 @eiriktsarpalis ?

@eiriktsarpalis
Copy link
Member

eiriktsarpalis commented Jun 19, 2024

Here is the diff between expected and actual documents:

image

It would seem that custom attributes on the declaring type are being returned in an unexpected order for the case of mono, which is correspondingly changing the order of derived types in the anyOf array. This results in a syntactically different JSON document but a semantically equivalent JSON schema.

I can't think of a good way to fix the test other than temporarily disabling it in mono. @vitek-karas @lewing is the attribute ordering a known issue and do you have any alternative suggestions?

@lambdageek
Copy link
Member

I don't think the custom attributes APIs guarantee a particular order. The order could change even for CoreCLR from one release to the next.

The Json schema exporter should order the custom attribute values into a deterministic order if that is important. Otherwise the schema comparison operation in the testsuite should allow for anyOf to be unordered when doing its comparison

@steveisok steveisok removed the untriaged New issue has not been triaged by the area owner label Jun 28, 2024
@eiriktsarpalis eiriktsarpalis added this to the 9.0.0 milestone Jul 8, 2024
@vitek-karas
Copy link
Member

Removing platform labels - the test failed on tvOS/arm64, but the behavior is undefined by any runtime and the test/product should not rely on it anywhere.

@eiriktsarpalis
Copy link
Member

The issue fundamentally is that we don't have the tools to check if two schemas are equivalent, so we have to resort to syntactic comparison (related: json-schema-org/json-schema-spec#474). At the same time, enforcing determinism by sorting items on the product side is a step in the wrong direction since it negatively impacts human readability in the majority of runtimes that do happen to report attributes in the order of declaration.

I would be inclined to just disable the test in the impacted runtime at this stage.

@richlander richlander changed the title [Apple][TvOS] Genereted schema in JsonSchemaExporter doesn not match the expected specification [Apple][TvOS][JsonSchemaExporter] Generated schema does not match the expected specification Jul 19, 2024
@eiriktsarpalis eiriktsarpalis modified the milestones: 9.0.0, Future Jul 22, 2024
@eiriktsarpalis eiriktsarpalis removed blocking-clean-ci Blocking PR or rolling runs of 'runtime' or 'runtime-extra-platforms' Known Build Error Use this to report build issues in the .NET Helix tab labels Jul 22, 2024
@matouskozak matouskozak added the disabled-test The test is disabled in source code against the issue label Jul 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-System.Text.Json disabled-test The test is disabled in source code against the issue
Projects
None yet
Development

No branches or pull requests

5 participants