From 886f73aa0f042015310d9874d0e74a653a3d5e5f Mon Sep 17 00:00:00 2001 From: Natasha Sarkar Date: Fri, 6 Nov 2020 13:10:18 -0800 Subject: [PATCH] added test case for no values --- kyaml/yaml/fns.go | 2 +- kyaml/yaml/fns_test.go | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/kyaml/yaml/fns.go b/kyaml/yaml/fns.go index 9c4cb6402..e28b79e24 100644 --- a/kyaml/yaml/fns.go +++ b/kyaml/yaml/fns.go @@ -393,7 +393,7 @@ func (f FieldMatcher) Filter(rn *RNode) (*RNode, error) { return rn, nil } return nil, nil - case f.Value.YNode() != nil && rn.value.Value == f.Value.YNode().Value: + case GetValue(rn) == GetValue(f.Value): return rn, nil default: return nil, nil diff --git a/kyaml/yaml/fns_test.go b/kyaml/yaml/fns_test.go index 30080e851..3331a1fb9 100644 --- a/kyaml/yaml/fns_test.go +++ b/kyaml/yaml/fns_test.go @@ -137,6 +137,27 @@ func TestElementSetter(t *testing.T) { _, err = node.Pipe(ElementSetter{Values: []string{"b"}}) assert.EqualError(t, err, "wrong Node Kind for expected: ScalarNode was MappingNode: value: {a: b}") + node = MustParse(` +- a: b +- c: d +`) + // If given a key and no values, ElementSetter will + // change node to be an empty list + rn, err = node.Pipe(ElementSetter{Keys: []string{"a"}}) + assert.NoError(t, err) + assert.Nil(t, rn) + assert.Equal(t, `[] +`, assertNoErrorString(t)(node.String())) + + node = MustParse(` +- a: b +- c: d +`) + // Return error because ElementSetter will assume all elements are scalar when + // there is only value provided. + _, err = node.Pipe(ElementSetter{Values: []string{"b"}}) + assert.EqualError(t, err, "wrong Node Kind for expected: ScalarNode was MappingNode: value: {a: b}") + node = MustParse(` - a - b