From 08b0b03cc6572757cffb89f55650acc975492901 Mon Sep 17 00:00:00 2001 From: Karolis Rusenas Date: Wed, 28 Nov 2018 17:33:22 +0000 Subject: [PATCH] #315 adding validation for the version --- util/version/version.go | 6 ++++++ util/version/version_test.go | 39 +++++++++++------------------------- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/util/version/version.go b/util/version/version.go index 9de1b278..f9c8fdfd 100644 --- a/util/version/version.go +++ b/util/version/version.go @@ -17,6 +17,7 @@ var ErrVersionTagMissing = errors.New("version tag is missing") // ErrInvalidSemVer is returned a version is found to be invalid when // being parsed. var ErrInvalidSemVer = errors.New("invalid semantic version") +var ErrNoMajorMinorPatchElementsFound = errors.New("No Major.Minor.Patch elements found") // MustParse - must parse version, if fails - panics func MustParse(version string) *types.Version { @@ -30,6 +31,11 @@ func MustParse(version string) *types.Version { // GetVersion - parse version func GetVersion(version string) (*types.Version, error) { + parts := strings.SplitN(version, ".", 3) + if len(parts) != 3 { + return nil, ErrNoMajorMinorPatchElementsFound + } + v, err := semver.NewVersion(version) if err != nil { if err == semver.ErrInvalidSemVer { diff --git a/util/version/version_test.go b/util/version/version_test.go index cde1af40..bf39527d 100644 --- a/util/version/version_test.go +++ b/util/version/version_test.go @@ -46,15 +46,10 @@ func TestGetVersionFromImageName(t *testing.T) { wantErr: false, }, { - name: "non semver, missing minor and patch", - args: args{name: "index.docker.io/application:42"}, - want: &types.Version{ - Major: 42, - Minor: 0, - Patch: 0, - Original: "42", - }, - wantErr: false, + name: "non semver, missing minor and patch", + args: args{name: "index.docker.io/application:42"}, + want: nil, + wantErr: true, }, } for _, tt := range tests { @@ -104,26 +99,16 @@ func TestGetVersion(t *testing.T) { wantErr: false, }, { - name: "not semver", - args: args{version: "23"}, - want: &types.Version{ - Major: 23, - Minor: 0, - Patch: 0, - Original: "23", - }, - wantErr: false, + name: "not semver", + args: args{version: "23"}, + want: nil, + wantErr: true, }, { - name: "not semver, long number", - args: args{version: "1234567"}, - want: &types.Version{ - Major: 1234567, - Minor: 0, - Patch: 0, - Original: "1234567", - }, - wantErr: false, + name: "not semver, long number", + args: args{version: "1234567"}, + want: nil, + wantErr: true, }, } for _, tt := range tests {