From aff79adb3991b8f55d961285a809d14bfecdffd4 Mon Sep 17 00:00:00 2001 From: Eric Latham Date: Wed, 10 Jul 2024 05:34:22 -0500 Subject: [PATCH] Fix false negatives in chartNeedsAPIVersions Signed-off-by: Eric Latham --- pkg/action/action.go | 5 +++-- pkg/action/action_test.go | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/action/action.go b/pkg/action/action.go index 0e1aeb550..95ea92378 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -97,11 +97,12 @@ type Configuration struct { Log func(string, ...interface{}) } -// chartNeedsAPIVersions returns true if any template in the given Chart references .Capabilities.APIVersions. +// chartNeedsAPIVersions returns true if any of the Chart's templates reference "APIVersions". +// If it returns false, it is safe to omit Capabilities.APIVersions from rendering values. func chartNeedsAPIVersions(chart *chart.Chart) bool { if chart != nil { for _, template := range chart.Templates { - if bytes.Contains(template.Data, []byte(".Capabilities.APIVersions")) { + if bytes.Contains(template.Data, []byte("APIVersions")) { return true } } diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index d1a07fff3..4075c8c6d 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -286,6 +286,12 @@ func Test_chartNeedsAPIVersions(t *testing.T) { is.Equal(chartNeedsAPIVersions(ch), false) ch.Templates = append(ch.Templates, &chart.File{Name: "templates/api-versions", Data: []byte("{{ .Capabilities.APIVersions }}")}) is.Equal(chartNeedsAPIVersions(ch), true) + ch.Templates = append(ch.Templates, &chart.File{Name: "templates/api-versions", Data: []byte("# {{ .Capabilities.APIVersions }}")}) + is.Equal(chartNeedsAPIVersions(ch), true) + ch.Templates = append(ch.Templates, &chart.File{Name: "templates/api-versions", Data: []byte("{{ $cap.APIVersions }}")}) + is.Equal(chartNeedsAPIVersions(ch), true) + ch.Templates = append(ch.Templates, &chart.File{Name: "templates/api-versions", Data: []byte("{{ get (.Capabilities | toJson | fromJson) \"APIVersions\" }}")}) + is.Equal(chartNeedsAPIVersions(ch), true) } func TestConfiguration_Init(t *testing.T) {