diff --git a/version/version.go b/version/version.go index 799a7ad793..90a6d5a830 100644 --- a/version/version.go +++ b/version/version.go @@ -33,20 +33,21 @@ const ( // NOTE: If you are changing this line, please also update the minimum kubernetes // version listed here: // https://github.com/knative/docs/blob/main/docs/snippets/prerequisites.md - defaultMinimumVersion = "v1.34.0" -) -// MinimumVersion returns the minimum Kubernetes version Knative is built -// and tested against. The returned value has a leading "v" (e.g. "v1.34.0"). -func MinimumVersion() string { - return defaultMinimumVersion -} + // DefaultKubernetesMinVersion is the default minimum Kubernetes version + // Knative is built and tested against. The value has a leading "v" + // (e.g. "v1.34.0"). + DefaultKubernetesMinVersion = "v1.34.0" +) -func getMinimumVersion() string { +// KubernetesMinimumVersion returns the minimum Kubernetes version required by +// Knative. It returns the value of the KUBERNETES_MIN_VERSION environment +// variable if set, otherwise DefaultKubernetesMinVersion. +func KubernetesMinimumVersion() string { if v := os.Getenv(KubernetesMinVersionKey); v != "" { return v } - return defaultMinimumVersion + return DefaultKubernetesMinVersion } // CheckMinimumVersion checks if the currently installed version of @@ -65,7 +66,7 @@ func CheckMinimumVersion(versioner discovery.ServerVersionInterface) error { if err != nil { return err } - minimumVersion, err := semver.Make(normalizeVersion(getMinimumVersion())) + minimumVersion, err := semver.Make(normalizeVersion(KubernetesMinimumVersion())) if err != nil { return err } diff --git a/version/version_test.go b/version/version_test.go index 1c94d45b29..7a956171f3 100644 --- a/version/version_test.go +++ b/version/version_test.go @@ -99,18 +99,27 @@ func TestVersionCheck(t *testing.T) { err := CheckMinimumVersion(test.actualVersion) if err == nil && test.wantError { - t.Errorf("Expected an error for minimum: %q, actual: %v", getMinimumVersion(), test.actualVersion) + t.Errorf("Expected an error for minimum: %q, actual: %v", KubernetesMinimumVersion(), test.actualVersion) } if err != nil && !test.wantError { - t.Errorf("Expected no error but got %v for minimum: %q, actual: %v", err, getMinimumVersion(), test.actualVersion) + t.Errorf("Expected no error but got %v for minimum: %q, actual: %v", err, KubernetesMinimumVersion(), test.actualVersion) } }) } } -func TestMinimumVersion(t *testing.T) { - if got := MinimumVersion(); got != defaultMinimumVersion { - t.Errorf("MinimumVersion() = %q, want %q", got, defaultMinimumVersion) - } +func TestKubernetesMinimumVersion(t *testing.T) { + t.Run("default", func(t *testing.T) { + t.Setenv(KubernetesMinVersionKey, "") + if got := KubernetesMinimumVersion(); got != DefaultKubernetesMinVersion { + t.Errorf("KubernetesMinimumVersion() = %q, want %q", got, DefaultKubernetesMinVersion) + } + }) + t.Run("override", func(t *testing.T) { + t.Setenv(KubernetesMinVersionKey, "v1.99.0") + if got := KubernetesMinimumVersion(); got != "v1.99.0" { + t.Errorf("KubernetesMinimumVersion() = %q, want %q", got, "v1.99.0") + } + }) }