From 956f07188f8850256ad6f32bf7bd40ed30a5726f Mon Sep 17 00:00:00 2001 From: ZouYu Date: Fri, 22 May 2020 15:23:25 +0800 Subject: [PATCH] Add unit test case for pkg/apis/kops/util/versions_test.go Signed-off-by: ZouYu --- pkg/apis/kops/util/BUILD.bazel | 1 + pkg/apis/kops/util/versions_test.go | 83 +++++++++++++++++++++++------ 2 files changed, 69 insertions(+), 15 deletions(-) diff --git a/pkg/apis/kops/util/BUILD.bazel b/pkg/apis/kops/util/BUILD.bazel index 8552a454b7..1097bb67d4 100644 --- a/pkg/apis/kops/util/BUILD.bazel +++ b/pkg/apis/kops/util/BUILD.bazel @@ -23,6 +23,7 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//vendor/github.com/blang/semver:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", ], diff --git a/pkg/apis/kops/util/versions_test.go b/pkg/apis/kops/util/versions_test.go index 007e86cb11..5b1aef63d8 100644 --- a/pkg/apis/kops/util/versions_test.go +++ b/pkg/apis/kops/util/versions_test.go @@ -17,26 +17,79 @@ limitations under the License. package util import ( + "fmt" + "reflect" "testing" + + "github.com/blang/semver" ) func Test_ParseKubernetesVersion(t *testing.T) { - grid := map[string]string{ - "1.3.7": "1.3.7", - "v1.4.0-beta.8": "1.4.0-beta.8", - "1.5.0": "1.5.0", - "https://storage.googleapis.com/kubernetes-release-dev/ci/v1.4.0-alpha.2.677+ea69570f61af8e/": "1.4.0", + cases := []struct { + version string + expected *semver.Version + expectedError error + }{ + { + version: "1.3.7", + expected: &semver.Version{ + Major: 1, + Minor: 3, + Patch: 7, + }, + }, + { + version: "v1.4.0-beta.8", + expected: &semver.Version{ + Major: 1, + Minor: 4, + Patch: 0, + Pre: []semver.PRVersion{ + { + VersionStr: "beta", + }, + { + VersionNum: 8, + IsNum: true, + }, + }, + }, + }, + { + version: "1.5.0", + expected: &semver.Version{ + Major: 1, + Minor: 5, + Patch: 0, + }, + }, + { + version: "https://storage.googleapis.com/kubernetes-release-dev/ci/v1.4.0-alpha.2.677+ea69570f61af8e/", + expected: &semver.Version{ + Major: 1, + Minor: 4, + Patch: 0, + }, + }, + { + version: "", + expectedError: fmt.Errorf("unable to parse kubernetes version \"\""), + }, + { + version: "abc", + expectedError: fmt.Errorf("unable to parse kubernetes version \"abc\""), + }, } - for version, expected := range grid { - sv, err := ParseKubernetesVersion(version) - if err != nil { - t.Errorf("ParseKubernetesVersion error parsing %q: %v", version, err) - } - - actual := sv.String() - if actual != expected { - t.Errorf("version mismatch: %q -> %q but expected %q", version, actual, expected) - } + for _, c := range cases { + t.Run(c.version, func(t *testing.T) { + actual, err := ParseKubernetesVersion(c.version) + if !reflect.DeepEqual(err, c.expectedError) { + t.Errorf("ParseKubernetesVersion error parsing %q: %v", c.version, err) + } + if !reflect.DeepEqual(actual, c.expected) { + t.Errorf("version mismatch: %q -> %q but expected %q", c.version, actual, c.expected) + } + }) } }