You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/version/version_test.go

122 lines
2.3 KiB

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package version
import (
"testing"
gvers "github.com/hashicorp/go-version"
"github.com/stretchr/testify/assert"
)
func TestFromVersionString(t *testing.T) {
cases := []struct {
input string
want *Info
}{
{
input: "Boundary v0.12.0-beta+hcp.int (revision)",
want: &Info{
Revision: "revision",
Version: "0.12.0",
VersionPrerelease: "beta",
VersionMetadata: "hcp.int",
},
},
{
input: "Boundary v0.12.0+hcp.int",
want: &Info{
Version: "0.12.0",
VersionMetadata: "hcp.int",
},
},
{
input: "Boundary v0.12.0",
want: &Info{
Version: "0.12.0",
},
},
{
input: "0.12.0-alpha+hcp.int (revision)",
want: &Info{
Revision: "revision",
Version: "0.12.0",
VersionPrerelease: "alpha",
VersionMetadata: "hcp.int",
},
},
{
input: " 0.12.0-hcp+int ",
want: &Info{
Version: "0.12.0",
VersionPrerelease: "hcp",
VersionMetadata: "int",
},
},
{
input: "0.12.0- spaces in the prerelease are invalid",
want: nil,
},
{
input: "Boundary (version unknown)",
want: nil,
},
{
input: "(version unknown)",
want: nil,
},
}
for _, tc := range cases {
t.Run(tc.input, func(t *testing.T) {
got := FromVersionString(tc.input)
assert.Equal(t, tc.want, got)
})
}
}
func TestSemver(t *testing.T) {
cases := []struct {
name string
toTest *Info
want *gvers.Version
}{
{
name: "0.12.0+hcp.int",
toTest: &Info{
Version: "0.12.0",
VersionMetadata: "hcp.int",
},
want: gvers.Must(gvers.NewSemver("0.12.0+hcp.int")),
},
{
name: "0.12.0+hcp.int (revision)",
toTest: &Info{
Version: "0.12.0",
VersionMetadata: "hcp.int",
Revision: "revision",
},
want: gvers.Must(gvers.NewSemver("0.12.0+hcp.int")),
},
{
name: "unparsable",
toTest: &Info{
Version: "some unparsable string",
VersionMetadata: "hcp.int",
},
want: nil,
},
{
name: "nil info",
toTest: nil,
want: nil,
},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
got := tc.toTest.Semver()
assert.Equal(t, tc.want, got)
})
}
}