address comments

This commit is contained in:
Mengqi Yu
2021-06-07 14:50:01 -07:00
parent cabbea0d97
commit 294070b3ab
5 changed files with 135 additions and 9 deletions

View File

@@ -52,10 +52,7 @@ var _ Writer = ByteWriter{}
func (w ByteWriter) Write(inputNodes []*yaml.RNode) error {
// Copy the nodes to prevent writer from mutating the original nodes.
var nodes []*yaml.RNode
for i := range inputNodes {
nodes = append(nodes, inputNodes[i].Copy())
}
nodes := copyRNodes(inputNodes)
yaml.DoSerializationHacksOnNodes(nodes)
if w.Sort {
if err := kioutil.SortNodes(nodes); err != nil {
@@ -135,8 +132,15 @@ func (w ByteWriter) Write(inputNodes []*yaml.RNode) error {
for i := range nodes {
items.Content = append(items.Content, nodes[i].YNode())
}
err := encoder.Encode(doc)
return err
return encoder.Encode(doc)
}
func copyRNodes(in []*yaml.RNode) []*yaml.RNode {
out := make([]*yaml.RNode, len(in))
for i := range in {
out[i] = in[i].Copy()
}
return out
}
// shouldJSONEncodeSingleBareNode determines if nodes contain a single node that should not be

View File

@@ -91,6 +91,127 @@ a: b #first
`,
},
//
// Test Case
//
{
name: "handle_comments",
items: []string{
`# comment 0
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
namespace: my-space
labels:
env: dev
foo: bar
spec:
# comment 1
replicas: 3
selector:
# comment 2
matchLabels: # comment 3
# comment 4
app: nginx # comment 5
template:
metadata:
labels:
app: nginx
spec:
# comment 6
containers:
# comment 7
- name: nginx
image: nginx:1.14.2 # comment 8
ports:
# comment 9
- containerPort: 80 # comment 10
`,
`apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
# comment 1
- name: etcd-server-ssl
port: 2380
# comment 2
- name: etcd-client-ssl
port: 2379
`,
`apiVersion: constraints.gatekeeper.sh/v1beta1
kind: EnforceFoo
metadata:
name: enforce-foo
spec:
parameters:
naming_rules:
- kind: Folder
patterns:
# comment 1
- ^(dev|prod|staging|qa|shared)$
`,
},
expectedOutput: `# comment 0
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
namespace: my-space
labels:
env: dev
foo: bar
spec:
# comment 1
replicas: 3
selector:
# comment 2
matchLabels: # comment 3
# comment 4
app: nginx # comment 5
template:
metadata:
labels:
app: nginx
spec:
# comment 6
containers:
# comment 7
- name: nginx
image: nginx:1.14.2 # comment 8
ports:
# comment 9
- containerPort: 80 # comment 10
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
# comment 1
- name: etcd-server-ssl
port: 2380
# comment 2
- name: etcd-client-ssl
port: 2379
---
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: EnforceFoo
metadata:
name: enforce-foo
spec:
parameters:
naming_rules:
- kind: Folder
patterns:
# comment 1
- ^(dev|prod|staging|qa|shared)$
`,
},
//
// Test Case
//

View File

@@ -420,8 +420,8 @@ spec:
image: nginx:1.7.9
# this is a container
ports:
- # this is a port
containerPort: 80
# this is a port
- containerPort: 80
`
s, err := FormatInput(strings.NewReader(y))
assert.NoError(t, err)