From 15618e1f6a79874ae61dc31e3bcd5e1f3177d7ff Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 6 Nov 2025 14:39:01 -0500 Subject: [PATCH] fix: a bug where null sentinel value would appear in YAML documents Signed-off-by: Vincent Biret --- src/Microsoft.OpenApi.YamlReader/YamlConverter.cs | 4 ++++ .../YamlConverterTests.cs | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi.YamlReader/YamlConverter.cs b/src/Microsoft.OpenApi.YamlReader/YamlConverter.cs index 5acf0c007..710f20c6b 100644 --- a/src/Microsoft.OpenApi.YamlReader/YamlConverter.cs +++ b/src/Microsoft.OpenApi.YamlReader/YamlConverter.cs @@ -63,6 +63,10 @@ public static YamlNode ToYamlNode(this JsonNode json) { JsonObject obj => obj.ToYamlMapping(), JsonArray arr => arr.ToYamlSequence(), + JsonValue nullVal when JsonNullSentinel.IsJsonNullSentinel(nullVal) => new YamlScalarNode("null") + { + Style = ScalarStyle.Plain + }, JsonValue val => val.ToYamlScalar(), _ => throw new NotSupportedException("This isn't a supported JsonNode") }; diff --git a/test/Microsoft.OpenApi.Readers.Tests/YamlConverterTests.cs b/test/Microsoft.OpenApi.Readers.Tests/YamlConverterTests.cs index 70073bfaa..b2f0e0f5d 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/YamlConverterTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/YamlConverterTests.cs @@ -2,6 +2,7 @@ using Microsoft.OpenApi.YamlReader; using SharpYaml; using SharpYaml.Serialization; +using System; using System.IO; using System.Text.Json.Nodes; using Xunit; @@ -302,10 +303,18 @@ from openai import OpenAI var jsonNode = ConvertYamlStringToJsonNode(yamlInput); var convertedBack = jsonNode.ToYamlNode(); var convertedBackOutput = ConvertYamlNodeToString(convertedBack); - + // Then Assert.Equal(yamlInput.MakeLineBreaksEnvironmentNeutral(), convertedBackOutput.MakeLineBreaksEnvironmentNeutral()); } + [Fact] + public void ItDoesNotSerializeTheSentinelValue() + { + var yamlValue = JsonNullSentinel.JsonNull.ToYamlNode(); + + var scalarNode = Assert.IsType(yamlValue); + Assert.Equal("null", scalarNode.Value, StringComparer.OrdinalIgnoreCase); + } private static JsonNode ConvertYamlStringToJsonNode(string yamlInput) {