runtime
runtime copied to clipboard
[Apple][TvOS] Genereted schema in JsonSchemaExporter doesn not match the expected specification
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: https://github.com/dotnet/runtime/compare/7e9cab2b...4834a507
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: :mag_right: 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: :x: Known issue did not match with the provided build.
Validation performed at: 6/19/2024 10:40:07 AM UTC
Report
Summary
| 24-Hour Hit Count | 7-Day Hit Count | 1-Month Count |
|---|---|---|
| 0 | 0 | 0 |
Tagging subscribers to 'os-tvos': @vitek-karas, @kotlarmilos, @ivanpovazan, @steveisok, @akoeplinger See info in area-owners.md if you want to be subscribed.
Tagging subscribers to this area: @dotnet/area-system-text-json, @gregsdennis See info in area-owners.md if you want to be subscribed.
Could it be related to https://github.com/dotnet/runtime/pull/103322 @eiriktsarpalis ?
Here is the diff between expected and actual documents:
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?
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
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.
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: https://github.com/json-schema-org/json-schema-spec/issues/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.