fix: yaml ByteArrayStringYamlConverter output new lines (#1651)

* fix: yaml byte[] output

* chore: fix styling

* chore: fix logic for single line values and add test
This commit is contained in:
Ivan Josipovic
2025-08-27 15:15:16 -07:00
committed by GitHub
parent b74ee18fde
commit 69afa49337
2 changed files with 36 additions and 1 deletions

View File

@@ -92,7 +92,18 @@ namespace k8s
public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerializer serializer)
{
var obj = (byte[])value;
emitter?.Emit(new Scalar(Encoding.UTF8.GetString(obj)));
var strValue = Encoding.UTF8.GetString(obj);
// Check if the string is multi-line by looking for a newline character.
var scalarStyle = strValue.Contains('\n') ? ScalarStyle.Literal : ScalarStyle.Any;
emitter.Emit(new Scalar(
AnchorName.Empty,
TagName.Empty,
strValue,
scalarStyle,
true,
true));
}
}

View File

@@ -817,6 +817,30 @@ data:
Assert.Equal("Mzk1MjgkdmRnN0pi", Encoding.UTF8.GetString(result.Data["password"]));
}
[Fact]
public void WriteSecret()
{
var kManifest = """
apiVersion: v1
data:
username: bXktYXBw
tls2.crt: |
-----BEGIN CERTIFICATE-----
FAKE CERT
FAKE CERT
FAKE CERT
-----END CERTIFICATE-----
kind: Secret
metadata:
name: test-secret
""";
var result = KubernetesYaml.Deserialize<V1Secret>(kManifest, true);
var yaml = KubernetesYaml.Serialize(result);
Assert.Equal(kManifest, yaml);
}
[Fact]
public void DeserializeWithJsonPropertyName()
{