Merge pull request #2810 from Shell32-Natsu/fieldspec-empty

fix panic when fieldspec refers an empty value
This commit is contained in:
Jeff Regan
2020-08-07 11:50:14 -07:00
committed by GitHub
3 changed files with 60 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestEmptyFieldSpecValue(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
generators:
- generators.yaml
configurations:
- kustomizeconfig.yaml
`)
th.WriteF("/app/generators.yaml", `
apiVersion: builtin
kind: ConfigMapGenerator
metadata:
name: secret-example
labels:
app.kubernetes.io/name: secret-example
literals:
- this_is_a_secret_name=
`)
th.WriteF("/app/kustomizeconfig.yaml", `
nameReference:
- kind: Secret
version: v1
fieldSpecs:
- path: data/this_is_a_secret_name
kind: ConfigMap
`)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: v1
data:
this_is_a_secret_name: ""
kind: ConfigMap
metadata:
name: secret-example-7hf4fh868h
`)
}

View File

@@ -468,6 +468,9 @@ func (s FieldSetter) Filter(rn *RNode) (*RNode, error) {
if err := ErrorIfInvalid(rn, yaml.ScalarNode); err != nil {
return rn, err
}
if IsMissingOrNull(s.Value) {
return rn, nil
}
// only apply the style if there is not an existing style
// or we want to override it
if !s.OverrideStyle || s.Value.YNode().Style == 0 {

View File

@@ -395,6 +395,19 @@ bar: buz
assert.Equal(t, `baz
`, assertNoErrorString(t)(k.String()))
// Empty value
node, err = Parse(`
foo
`)
assert.NoError(t, err)
instance = FieldSetter{}
k, err = instance.Filter(node)
assert.NoError(t, err)
assert.Equal(t, `foo
`, assertNoErrorString(t)(node.String()))
assert.Equal(t, `foo
`, assertNoErrorString(t)(k.String()))
// Encounter error
node, err = Parse(`
-a