diff --git a/api/filters/replacement/replacement_test.go b/api/filters/replacement/replacement_test.go index c91a0f437..00ec1f430 100644 --- a/api/filters/replacement/replacement_test.go +++ b/api/filters/replacement/replacement_test.go @@ -1338,8 +1338,51 @@ spec: `, expectedErr: "delimiter option can only be used with scalar nodes", }, - // test to demonstrate https://github.com/kubernetes-sigs/kustomize/issues/3927 - // the source field is overwritten when there are multiple fieldPaths + "list index contains '.' character": { + input: `apiVersion: v1 +kind: ConfigMap +metadata: + name: source +data: + value: example +--- +apiVersion: kubernetes-client.io/v1 +kind: ExternalSecret +metadata: + name: some-secret +spec: + backendType: secretsManager + data: + - key: some-prefix-replaceme + name: .first + version: latest + property: first + - key: some-prefix-replaceme + name: second + version: latest + property: second +`, + replacements: `replacements: +- source: + kind: ConfigMap + version: v1 + name: source + fieldPath: data.value + targets: + - select: + group: kubernetes-client.io + version: v1 + kind: ExternalSecret + name: some-secret + fieldPaths: + - spec.data.[name=.first].key + - spec.data.[name=second].key + options: + delimiter: "-" + index: 2 +`, + expectedErr: "wrong Node Kind for spec.data expected: MappingNode was SequenceNode: value: {- key: some-prefix-replaceme", + }, "multiple field paths in target": { input: `apiVersion: v1 kind: ConfigMap @@ -1431,7 +1474,7 @@ spec: t.Errorf("unexpected error: %s\n", err.Error()) t.FailNow() } - if !assert.Equal(t, tc.expectedErr, err.Error()) { + if !assert.Contains(t, err.Error(), tc.expectedErr) { t.FailNow() } }