diff --git a/pkg/chart/common/capabilities.go b/pkg/chart/common/capabilities.go index 16910acaa..dd5beeebe 100644 --- a/pkg/chart/common/capabilities.go +++ b/pkg/chart/common/capabilities.go @@ -20,7 +20,6 @@ import ( "slices" "strconv" "strings" - "testing" "github.com/Masterminds/semver/v3" "k8s.io/client-go/kubernetes/scheme" @@ -41,16 +40,18 @@ var ( // DefaultVersionSet is the default version set, which includes only Core V1 ("v1"). DefaultVersionSet = allKnownVersions() - DefaultCapabilities = func() *Capabilities { - caps, err := makeDefaultCapabilities() - if err != nil { - panic(fmt.Sprintf("failed to create default capabilities: %v", err)) - } - return caps - - }() + // DefaultCapabilities is initialized during init(). + DefaultCapabilities *Capabilities ) +func init() { + var err error + DefaultCapabilities, err = makeDefaultCapabilities() + if err != nil { + panic(fmt.Sprintf("failed to create default capabilities: %v", err)) + } +} + // Capabilities describes the capabilities of the Kubernetes cluster. type Capabilities struct { // KubeVersion is the Kubernetes version. @@ -143,16 +144,11 @@ func allKnownVersions() VersionSet { } func makeDefaultCapabilities() (*Capabilities, error) { - // Test builds don't include debug info / module info - // (And even if they did, we probably want stable capabilities for tests anyway) - // Return a default value for test builds - if testing.Testing() { - return newCapabilities(kubeVersionMajorTesting, kubeVersionMinorTesting) - } - vstr, err := helmversion.K8sIOClientGoModVersion() if err != nil { - return nil, fmt.Errorf("failed to retrieve k8s.io/client-go version: %w", err) + // Test builds and environments without k8s.io/client-go build info + // fall back to a stable default version. + return newCapabilities(kubeVersionMajorTesting, kubeVersionMinorTesting) } v, err := semver.NewVersion(vstr)