#315 adding validation for the version
parent
0519fd8d75
commit
08b0b03cc6
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue