golangci-lint/pkg/goutil/version_test.go
2024-08-27 22:50:05 +02:00

153 lines
2.8 KiB
Go

package goutil
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestCheckGoVersion(t *testing.T) {
testCases := []struct {
desc string
version string
require require.ErrorAssertionFunc
}{
{
desc: "version greater than runtime version (patch)",
version: "1.30.1",
require: require.Error,
},
{
desc: "version greater than runtime version (family)",
version: "1.30",
require: require.Error,
},
{
desc: "version greater than runtime version (RC)",
version: "1.30.0-rc1",
require: require.Error,
},
{
desc: "version equals to runtime version",
version: func() string {
rv, _ := CleanRuntimeVersion()
return rv
}(),
require: require.NoError,
},
{
desc: "version lower than runtime version (patch)",
version: "1.19.1",
require: require.NoError,
},
{
desc: "version lower than runtime version (family)",
version: "1.19",
require: require.NoError,
},
{
desc: "version lower than runtime version (RC)",
version: "1.19.0-rc1",
require: require.NoError,
},
}
for _, test := range testCases {
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
err := CheckGoVersion(test.version)
test.require(t, err)
})
}
}
func TestTrimGoVersion(t *testing.T) {
testCases := []struct {
desc string
version string
expected string
}{
{
desc: "patched version",
version: "1.22.0",
expected: "1.22",
},
{
desc: "minor version",
version: "1.22",
expected: "1.22",
},
{
desc: "RC version",
version: "1.22rc1",
expected: "1.22",
},
{
desc: "alpha version",
version: "1.22alpha1",
expected: "1.22",
},
{
desc: "beta version",
version: "1.22beta1",
expected: "1.22",
},
{
desc: "semver RC version",
version: "1.22.0-rc1",
expected: "1.22",
},
}
for _, test := range testCases {
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
version := TrimGoVersion(test.version)
assert.Equal(t, test.expected, version)
})
}
}
func Test_cleanRuntimeVersion(t *testing.T) {
testCases := []struct {
desc string
version string
expected string
}{
{
desc: "go version",
version: "go1.22.0",
expected: "go1.22.0",
},
{
desc: "language version",
version: "go1.22",
expected: "go1.22",
},
{
desc: "GOEXPERIMENT",
version: "go1.23.0 X:boringcrypto",
expected: "go1.23.0",
},
{
desc: "devel",
version: "devel go1.24-e705a2d Wed Aug 7 01:16:42 2024 +0000 linux/amd64",
expected: "go1.24-e705a2d",
},
}
for _, test := range testCases {
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
v, err := cleanRuntimeVersion(test.version)
require.NoError(t, err)
assert.Equal(t, test.expected, v)
})
}
}