Merge pull request #2432 from tamalsaha/fix-marshal

Fix MarshalJSON of array
This commit is contained in:
Kubernetes Prow Robot
2020-05-13 16:22:22 -07:00
committed by GitHub
2 changed files with 43 additions and 13 deletions

View File

@@ -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)
}

View File

@@ -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()
}
})
}
}