buildr/internal/semver/parsing_test.go
Peter 1261932bdc
All checks were successful
continuous-integration/drone/push Build is passing
refactor: apply golangci-lint findings
2023-06-22 19:16:00 +02:00

108 lines
1.9 KiB
Go

package semver_test
import (
"reflect"
"testing"
"code.icb4dc0.de/buildr/buildr/internal/semver"
)
func TestParseVersion(t *testing.T) {
t.Parallel()
type args struct {
version string
}
tests := []struct {
name string
args args
want semver.Version
wantErr bool
}{
{
name: "Simple version",
args: args{
version: "0.1.1",
},
want: semver.Version{
Major: 0,
Minor: 1,
Patch: 1,
},
wantErr: false,
},
{
name: "Invalid version",
args: args{
version: "0.1.1.3",
},
wantErr: true,
},
{
name: "Simple version with prefix",
args: args{
version: "v0.1.1",
},
want: semver.Version{
Major: 0,
Minor: 1,
Patch: 1,
},
wantErr: false,
},
{
name: "Simple version with prefix and prerelease",
args: args{
version: "v0.1.1-alpha",
},
want: semver.Version{
Major: 0,
Minor: 1,
Patch: 1,
Prerelease: "alpha",
},
wantErr: false,
},
{
name: "Simple version with prefix and build metadata",
args: args{
version: "v0.1.1+1234.abc",
},
want: semver.Version{
Major: 0,
Minor: 1,
Patch: 1,
BuildMetadata: "1234.abc",
},
wantErr: false,
},
{
name: "Simple version with prefix prerelease and build metadata",
args: args{
version: "v0.1.1-alpha+1234.abc",
},
want: semver.Version{
Major: 0,
Minor: 1,
Patch: 1,
Prerelease: "alpha",
BuildMetadata: "1234.abc",
},
wantErr: false,
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
got, err := semver.ParseVersion(tt.args.version)
if (err != nil) != tt.wantErr {
t.Errorf("ParseVersion() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("ParseVersion() got = %v, want %v", got, tt.want)
}
})
}
}