mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-10 08:20:59 +00:00
Merge pull request #2432 from tamalsaha/fix-marshal
Fix MarshalJSON of array
This commit is contained in:
@@ -688,11 +688,18 @@ func (rn *RNode) MarshalJSON() ([]byte, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if rn.YNode().Kind == SequenceNode {
|
||||
var a []interface{}
|
||||
if err := Unmarshal([]byte(s), &a); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return json.Marshal(a)
|
||||
}
|
||||
|
||||
m := map[string]interface{}{}
|
||||
if err := Unmarshal([]byte(s), &m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return json.Marshal(m)
|
||||
}
|
||||
|
||||
|
||||
@@ -105,21 +105,44 @@ metadata:
|
||||
}
|
||||
|
||||
func TestRNode_MarshalJSON(t *testing.T) {
|
||||
instance, err := Parse(`
|
||||
tests := []struct {
|
||||
name string
|
||||
ydoc string
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "object",
|
||||
ydoc: `
|
||||
hello: world
|
||||
`)
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
`,
|
||||
want: `{"hello":"world"}`,
|
||||
},
|
||||
{
|
||||
name: "array",
|
||||
ydoc: `
|
||||
- name: s1
|
||||
- name: s2
|
||||
`,
|
||||
want: `[{"name":"s1"},{"name":"s2"}]`,
|
||||
},
|
||||
}
|
||||
for idx := range tests {
|
||||
tt := tests[idx]
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
instance, err := Parse(tt.ydoc)
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
actual, err := instance.MarshalJSON()
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
actual, err := instance.MarshalJSON()
|
||||
if !assert.NoError(t, err) {
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
expected := `{"hello":"world"}`
|
||||
if !assert.Equal(t,
|
||||
strings.TrimSpace(expected), strings.TrimSpace(string(actual))) {
|
||||
t.FailNow()
|
||||
if !assert.Equal(t,
|
||||
strings.TrimSpace(tt.want), strings.TrimSpace(string(actual))) {
|
||||
t.FailNow()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user