diff --git a/api/internal/wrappy/wnode.go b/api/internal/wrappy/wnode.go index 901925d575..a74ef6308a 100644 --- a/api/internal/wrappy/wnode.go +++ b/api/internal/wrappy/wnode.go @@ -91,8 +91,8 @@ func (wn *WNode) GetFieldValue(path string) (interface{}, error) { // Return value as slice for SequenceNode kind if yn.Kind == yaml.SequenceNode { var result []interface{} - for _, node := range yn.Content { - result = append(result, node.Value) + if err := yn.Decode(&result); err != nil { + return nil, err } return result, nil } diff --git a/api/internal/wrappy/wnode_test.go b/api/internal/wrappy/wnode_test.go index 45754977e6..c3c7c29f11 100644 --- a/api/internal/wrappy/wnode_test.go +++ b/api/internal/wrappy/wnode_test.go @@ -377,6 +377,39 @@ func TestGetFieldValueReturnsSlice(t *testing.T) { } } +func TestGetFieldValueReturnsSliceOfMappings(t *testing.T) { + bytes, err := yaml.Marshal(makeBigMap()) + if err != nil { + t.Fatalf("unexpected yaml.Marshal err: %v", err) + } + rNode, err := kyaml.Parse(string(bytes)) + if err != nil { + t.Fatalf("unexpected yaml.Marshal err: %v", err) + } + wn := FromRNode(rNode) + expected := []interface{}{ + map[string]interface{}{ + "field1": "idx0foo", + "field2": "idx0bar", + }, + map[string]interface{}{ + "field1": "idx1foo", + "field2": "idx1bar", + }, + map[string]interface{}{ + "field1": "idx2foo", + "field2": "idx2bar", + }, + } + actual, err := wn.GetFieldValue("those") + if err != nil { + t.Fatalf("error getting slice: %v", err) + } + if diff := cmp.Diff(expected, actual); diff != "" { + t.Fatalf("actual slice does not deep equal expected slice:\n%v", diff) + } +} + func TestGetFieldValueReturnsString(t *testing.T) { wn := NewWNode() if err := wn.UnmarshalJSON([]byte(deploymentBiggerJson)); err != nil { diff --git a/kustomize/go.mod b/kustomize/go.mod index 68d0214453..4f6324e924 100644 --- a/kustomize/go.mod +++ b/kustomize/go.mod @@ -19,3 +19,5 @@ exclude ( sigs.k8s.io/kustomize/api v0.2.0 sigs.k8s.io/kustomize/cmd/config v0.2.0 ) + +replace sigs.k8s.io/kustomize/api v0.7.0 => ../api diff --git a/kustomize/go.sum b/kustomize/go.sum index 646ec82b83..961a46e116 100644 --- a/kustomize/go.sum +++ b/kustomize/go.sum @@ -623,8 +623,6 @@ k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= -sigs.k8s.io/kustomize/api v0.7.0 h1:djxH9k1izeU1BvdP1i23qqKwhmWu2BuKNEKr/Da7Dpw= -sigs.k8s.io/kustomize/api v0.7.0/go.mod h1:3TxKEyaxwOIfHmRbQF14hDUSRmVQI0iSn8qDA5zaO/0= sigs.k8s.io/kustomize/cmd/config v0.8.6 h1:Rr7eyD+h32OfruN6V+cgUqHRpC2Y5ZnjjAPbjhKFLGE= sigs.k8s.io/kustomize/cmd/config v0.8.6/go.mod h1:e4PgdLUNnkf+Iapvjyb6gTG9DZQkDZIR6uS1Bv4YA6s= sigs.k8s.io/kustomize/kyaml v0.10.3 h1:ARSJUMN/c3k31DYxRfZ+vp/UepUQjg9zCwny7Oj908I=