Skip to content

Commit 0d3745a

Browse files
committed
chore: fix logic for single line values and add test
1 parent 5a28f2d commit 0d3745a

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

src/KubernetesClient/KubernetesYaml.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,16 @@ 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+
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+
95100
emitter.Emit(new Scalar(
96101
AnchorName.Empty,
97102
TagName.Empty,
98-
Encoding.UTF8.GetString(obj),
99-
ScalarStyle.Literal, // renders as |
103+
strValue,
104+
scalarStyle,
100105
true,
101106
true));
102107
}

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)