fix(StringQuotingEmitter): add missing patterns for double quoting (#957)

* fix(StringQuotingEmitter): add missing patterns to regex for double quotes to be applied when serializing

* added missing bool patterns, updated unit test

* added bool spec 1.1 url as a comment to StringQuotingEmitter
This commit is contained in:
Vitor Moreira
2022-07-21 19:09:55 +01:00
committed by GitHub
parent 8d0ec6bb16
commit 82497863e0
2 changed files with 228 additions and 2 deletions

View File

@@ -563,6 +563,232 @@ spec:
Assert.Equal(content.Replace("\r\n", "\n"), objStr.Replace("\r\n", "\n"));
}
[Fact]
public void CertainPatternsShouldBeSerializedWithDoubleQuotes()
{
var content = @"apiVersion: v1
kind: Pod
metadata:
annotations:
custom.annotation: ""True""
second.custom.annotation: ""~""
name: foo
namespace: bar
spec:
containers:
- env:
- name: NullLowerCase
value: ""null""
- name: NullCamelCase
value: ""Null""
- name: NullUpperCase
value: ""NULL""
- name: TrueLowerCase
value: ""true""
- name: TrueCamelCase
value: ""True""
- name: ""TRUE""
value: ""TRUE""
- name: ""false""
value: ""false""
- name: ""False""
value: ""False""
- name: ""FALSE""
value: ""FALSE""
- name: ""y""
value: ""y""
- name: ""Y""
value: ""Y""
- name: ""yes""
value: ""yes""
- name: ""Yes""
value: ""Yes""
- name: ""YES""
value: ""YES""
- name: ""n""
value: ""n""
- name: ""N""
value: ""N""
- name: ""no""
value: ""no""
- name: ""No""
value: ""No""
- name: ""NO""
value: ""NO""
- name: ""on""
value: ""on""
- name: ""On""
value: ""On""
- name: ""ON""
value: ""ON""
- name: ""off""
value: ""off""
- name: ""Off""
value: ""Off""
- name: ""OFF""
value: ""OFF""
image: nginx
name: foo";
var pod = new V1Pod()
{
ApiVersion = "v1",
Kind = "Pod",
Metadata = new V1ObjectMeta()
{
Name = "foo",
NamespaceProperty = "bar",
Annotations = new Dictionary<string, string>
{
{ "custom.annotation", "True" },
{ "second.custom.annotation", "~" },
},
},
Spec = new V1PodSpec()
{
Containers = new[]
{
new V1Container()
{
Image = "nginx",
Env = new List<V1EnvVar>
{
new V1EnvVar
{
Name = "NullLowerCase",
Value = "null",
},
new V1EnvVar
{
Name = "NullCamelCase",
Value = "Null",
},
new V1EnvVar
{
Name = "NullUpperCase",
Value = "NULL",
},
new V1EnvVar
{
Name = "TrueLowerCase",
Value = "true",
},
new V1EnvVar
{
Name = "TrueCamelCase",
Value = "True",
},
new V1EnvVar
{
Name = "TRUE",
Value = "TRUE",
},
new V1EnvVar
{
Name = "false",
Value = "false",
},
new V1EnvVar
{
Name = "False",
Value = "False",
},
new V1EnvVar
{
Name = "FALSE",
Value = "FALSE",
},
new V1EnvVar
{
Name = "y",
Value = "y",
},
new V1EnvVar
{
Name = "Y",
Value = "Y",
},
new V1EnvVar
{
Name = "yes",
Value = "yes",
},
new V1EnvVar
{
Name = "Yes",
Value = "Yes",
},
new V1EnvVar
{
Name = "YES",
Value = "YES",
},
new V1EnvVar
{
Name = "n",
Value = "n",
},
new V1EnvVar
{
Name = "N",
Value = "N",
},
new V1EnvVar
{
Name = "no",
Value = "no",
},
new V1EnvVar
{
Name = "No",
Value = "No",
},
new V1EnvVar
{
Name = "NO",
Value = "NO",
},
new V1EnvVar
{
Name = "on",
Value = "on",
},
new V1EnvVar
{
Name = "On",
Value = "On",
},
new V1EnvVar
{
Name = "ON",
Value = "ON",
},
new V1EnvVar
{
Name = "off",
Value = "off",
},
new V1EnvVar
{
Name = "Off",
Value = "Off",
},
new V1EnvVar
{
Name = "OFF",
Value = "OFF",
},
},
Name = "foo",
},
},
},
};
var objStr = KubernetesYaml.Serialize(pod);
Assert.Equal(content.Replace("\r\n", "\n"), objStr.Replace("\r\n", "\n"));
}
[Fact]
public void LoadSecret()
{