From ad4a6b2c032a324bc486aaddf3d10ec315fdf612 Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez Date: Sun, 14 Jan 2024 21:22:57 +0100 Subject: [PATCH] fix: parse Go RC version (#4319) --- pkg/lint/lintersdb/manager.go | 2 +- pkg/lint/lintersdb/manager_test.go | 56 ++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 pkg/lint/lintersdb/manager_test.go diff --git a/pkg/lint/lintersdb/manager.go b/pkg/lint/lintersdb/manager.go index e30d48e4..4a3c1b4d 100644 --- a/pkg/lint/lintersdb/manager.go +++ b/pkg/lint/lintersdb/manager.go @@ -991,7 +991,7 @@ func trimGoVersion(v string) string { return "" } - exp := regexp.MustCompile(`(\d\.\d+)\.\d+`) + exp := regexp.MustCompile(`(\d\.\d+)(?:\.\d+|[a-z]+\d)`) if exp.MatchString(v) { return exp.FindStringSubmatch(v)[1] diff --git a/pkg/lint/lintersdb/manager_test.go b/pkg/lint/lintersdb/manager_test.go new file mode 100644 index 00000000..0b05c9ec --- /dev/null +++ b/pkg/lint/lintersdb/manager_test.go @@ -0,0 +1,56 @@ +package lintersdb + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_trimGoVersion(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 { + test := test + t.Run(test.desc, func(t *testing.T) { + t.Parallel() + + version := trimGoVersion(test.version) + assert.Equal(t, test.expected, version) + }) + } +}