diff --git a/api/filters/replacement/replacement.go b/api/filters/replacement/replacement.go index 7988c322b6..0aacd074e6 100644 --- a/api/filters/replacement/replacement.go +++ b/api/filters/replacement/replacement.go @@ -131,10 +131,11 @@ func getReplacement(nodes []*yaml.RNode, r *types.Replacement) (*yaml.RNode, err if err != nil { return nil, err } - if !rn.IsNilOrEmpty() { - return getRefinedValue(r.Source.Options, rn) + if rn.IsNilOrEmpty() { + return nil, fmt.Errorf("fieldPath `%s` is missing for replacement source %s", r.Source.FieldPath, r.Source) } - return rn, nil + + return getRefinedValue(r.Source.Options, rn) } func getRefinedValue(options *types.FieldOptions, rn *yaml.RNode) (*yaml.RNode, error) { diff --git a/api/filters/replacement/replacement_test.go b/api/filters/replacement/replacement_test.go index 39c3c01d8c..9380865e20 100644 --- a/api/filters/replacement/replacement_test.go +++ b/api/filters/replacement/replacement_test.go @@ -1573,7 +1573,6 @@ data: grpcPort: 8081 `, replacements: `replacements: -# failing case - source: kind: ConfigMap name: ports-from @@ -1587,8 +1586,7 @@ data: options: create: true `, - // this test currently panics instead of throwing an error - expectedErr: "fieldPath data.httpPort is missing for source ~G_~V_ConfigMap|~X|ports-from:data.httpPort", + expectedErr: "fieldPath `data.httpPort` is missing for replacement source ~G_~V_ConfigMap|~X|ports-from:data.httpPort", }, }