mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 01:14:22 +00:00
fix panic when fieldspec refers an empty value
This commit is contained in:
44
api/krusty/namereference_test.go
Normal file
44
api/krusty/namereference_test.go
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
package krusty_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestEmptyFielsSpecValue(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
|
||||||
|
`)
|
||||||
|
}
|
||||||
@@ -467,6 +467,10 @@ func (s FieldSetter) Filter(rn *RNode) (*RNode, error) {
|
|||||||
if err := ErrorIfInvalid(rn, yaml.ScalarNode); err != nil {
|
if err := ErrorIfInvalid(rn, yaml.ScalarNode); err != nil {
|
||||||
return rn, err
|
return rn, err
|
||||||
}
|
}
|
||||||
|
// value is nil or null
|
||||||
|
if IsMissingOrNull(s.Value) {
|
||||||
|
return rn, nil
|
||||||
|
}
|
||||||
// only apply the style if there is not an existing style
|
// only apply the style if there is not an existing style
|
||||||
// or we want to override it
|
// or we want to override it
|
||||||
if !s.OverrideStyle || s.Value.YNode().Style == 0 {
|
if !s.OverrideStyle || s.Value.YNode().Style == 0 {
|
||||||
|
|||||||
@@ -395,6 +395,19 @@ bar: buz
|
|||||||
assert.Equal(t, `baz
|
assert.Equal(t, `baz
|
||||||
`, assertNoErrorString(t)(k.String()))
|
`, 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
|
// Encounter error
|
||||||
node, err = Parse(`
|
node, err = Parse(`
|
||||||
-a
|
-a
|
||||||
|
|||||||
Reference in New Issue
Block a user