fix error message

This commit is contained in:
koba1t
2022-04-13 04:55:21 +09:00
parent cdc4a5083b
commit 01ab069bd2
4 changed files with 14 additions and 4 deletions

View File

@@ -7,6 +7,8 @@ import (
"fmt"
"strings"
"errors"
"sigs.k8s.io/kustomize/api/internal/utils"
"sigs.k8s.io/kustomize/api/resource"
"sigs.k8s.io/kustomize/api/types"
@@ -117,6 +119,14 @@ func applyToNode(node *yaml.RNode, value *yaml.RNode, target *types.TargetSelect
var t *yaml.RNode
var err error
if target.Options != nil && target.Options.Create {
// create option is not supported in a wildcard matching.
// Because, PathMatcher is not supported create option.
// So, if create option is set, we fallback to PathGetter.
for _, f := range fieldPath {
if f == "*" {
return errors.New("cannot support create option in a multi-value target")
}
}
t, err = node.Pipe(yaml.LookupCreate(value.YNode().Kind, fieldPath...))
} else {
t, err = node.Pipe(&yaml.PathMatcher{Path: fieldPath})

View File

@@ -1671,7 +1671,7 @@ spec:
options:
create: true
`,
expectedErr: "cannot support create option in a multi-value target now",
expectedErr: "cannot support create option in a multi-value target",
},
"multiple field paths in target": {
input: `apiVersion: v1

View File

@@ -542,8 +542,8 @@ func (l PathGetter) getFilter(part, nextPart string, fieldPath *[]string) (Filte
// part is a hyphen
return GetElementByIndex(-1), nil
case part == "*":
// part is a asterisk
return nil, errors.Errorf("cannot support create option in a multi-value target now")
// PathGetter is not support for wildcard matching
return nil, errors.Errorf("wildcard is not supported in PathGetter")
case IsListIndex(part):
// part is surrounded by brackets
return l.elemFilter(part)

View File

@@ -584,7 +584,7 @@ func TestLookup_Fn_create_with_wildcard_error(t *testing.T) {
node, err := Parse(s)
assert.NoError(t, err)
_, err = node.Pipe(LookupCreate(yaml.MappingNode, "a", "b", "*", "t"))
assert.Error(t, err, "cannot support create option in a multi-value target now")
assert.Error(t, err, "wildcard is not supported in PathGetter")
}
func TestLookup(t *testing.T) {