#315 adding validation for the version

pull/316/head
Karolis Rusenas 2018-11-28 17:33:22 +00:00
parent 0519fd8d75
commit 08b0b03cc6
2 changed files with 18 additions and 27 deletions

View File

@ -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 {

View File

@ -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 {