Skip to content

Commit 69afa49

Browse files
fix: yaml ByteArrayStringYamlConverter output new lines (#1651)
* fix: yaml byte[] output * chore: fix styling * chore: fix logic for single line values and add test
1 parent b74ee18 commit 69afa49

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

src/KubernetesClient/KubernetesYaml.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,18 @@ public object ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeseria
9292
public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerializer serializer)
9393
{
9494
var obj = (byte[])value;
95-
emitter?.Emit(new Scalar(Encoding.UTF8.GetString(obj)));
95+
var strValue = Encoding.UTF8.GetString(obj);
96+
97+
// Check if the string is multi-line by looking for a newline character.
98+
var scalarStyle = strValue.Contains('\n') ? ScalarStyle.Literal : ScalarStyle.Any;
99+
100+
emitter.Emit(new Scalar(
101+
AnchorName.Empty,
102+
TagName.Empty,
103+
strValue,
104+
scalarStyle,
105+
true,
106+
true));
96107
}
97108
}
98109

tests/KubernetesClient.Tests/KubernetesYamlTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,30 @@ public void LoadSecret()
817817
Assert.Equal("Mzk1MjgkdmRnN0pi", Encoding.UTF8.GetString(result.Data["password"]));
818818
}
819819

820+
[Fact]
821+
public void WriteSecret()
822+
{
823+
var kManifest = """
824+
apiVersion: v1
825+
data:
826+
username: bXktYXBw
827+
tls2.crt: |
828+
-----BEGIN CERTIFICATE-----
829+
FAKE CERT
830+
FAKE CERT
831+
FAKE CERT
832+
-----END CERTIFICATE-----
833+
kind: Secret
834+
metadata:
835+
name: test-secret
836+
""";
837+
838+
var result = KubernetesYaml.Deserialize<V1Secret>(kManifest, true);
839+
var yaml = KubernetesYaml.Serialize(result);
840+
841+
Assert.Equal(kManifest, yaml);
842+
}
843+
820844
[Fact]
821845
public void DeserializeWithJsonPropertyName()
822846
{

0 commit comments

Comments
 (0)