From c2a30fb8687ea4acfd7e01dfb59a58f5894ae279 Mon Sep 17 00:00:00 2001 From: Lukasz Raczylo Date: Sat, 11 Dec 2021 11:14:01 +0000 Subject: [PATCH] Additional testing --- cmd/main.go | 15 +++++++------ cmd/main_test.go | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 6 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 3e388ea..cc65ea2 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -21,6 +21,7 @@ import ( "fmt" "net/url" "os" + "regexp" "sort" "strconv" "strings" @@ -112,15 +113,17 @@ func debugPrint(content string) { } } +var extractNumber = regexp.MustCompile("[0-9]+") + func parseExistingSemver(tagName string) (semanticVersion SemVer) { var tagNameParts []string tagNameParts = strings.Split(tagName, ".") - semanticVersion.Major, _ = strconv.Atoi(tagNameParts[0]) - semanticVersion.Minor, _ = strconv.Atoi(tagNameParts[1]) - semanticVersion.Patch, _ = strconv.Atoi(tagNameParts[2]) - tagReleaseParts := strings.Split(tagNameParts[2], "-rc.") - if len(tagReleaseParts) > 1 { - semanticVersion.Release, _ = strconv.Atoi(tagNameParts[3]) + semanticVersion.Major, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[0], -1)[0]) + semanticVersion.Minor, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[1], -1)[0]) + semanticVersion.Patch, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[2], -1)[0]) + if len(tagNameParts) > 3 { + semanticVersion.Release, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[3], -1)[0]) + semanticVersion.EnableReleaseCandidate = true } return } diff --git a/cmd/main_test.go b/cmd/main_test.go index 70cbcef..339ce06 100644 --- a/cmd/main_test.go +++ b/cmd/main_test.go @@ -522,3 +522,58 @@ func (suite *Tests) Test_main() { }) } } + +func (suite *Tests) Test_parseExistingSemver() { + type args struct { + tagName string + } + tests := []struct { + name string + args args + wantSemanticVersion SemVer + }{ + { + name: "Test parsing existing semver", + args: args{ + tagName: "1.2.3", + }, + wantSemanticVersion: SemVer{ + Major: 1, + Minor: 2, + Patch: 3, + }, + }, + { + name: "Test parsing existing semver with v", + args: args{ + tagName: "v1.2.3", + }, + wantSemanticVersion: SemVer{ + Major: 1, + Minor: 2, + Patch: 3, + }, + }, + { + name: "Test parsing existing semver with rc", + args: args{ + tagName: "1.2.5-rc.7", + }, + wantSemanticVersion: SemVer{ + Major: 1, + Minor: 2, + Patch: 5, + Release: 7, + }, + }, + } + for _, tt := range tests { + suite.T().Run(tt.name, func(t *testing.T) { + got := parseExistingSemver(tt.args.tagName) + assert.Equal(tt.wantSemanticVersion.Major, got.Major, "Unexpected MAJOR semver result in "+tt.name) + assert.Equal(tt.wantSemanticVersion.Minor, got.Minor, "Unexpected MINOR semver result in "+tt.name) + assert.Equal(tt.wantSemanticVersion.Patch, got.Patch, "Unexpected PATCH semver result in "+tt.name) + assert.Equal(tt.wantSemanticVersion.Release, got.Release, "Unexpected RELEASE semver result in "+tt.name) + }) + } +}