From d7331aaa7ec8d314764a270edf970db71c4a3011 Mon Sep 17 00:00:00 2001 From: "Iskander (Alex) Sharipov" Date: Tue, 12 Oct 2021 12:32:09 +0300 Subject: [PATCH] releaser: Fix regexp Original regexp used a char class which caused the regexp to only check 1 symbol instead of a substring like "See" and "Closes". So it would match `e #x` instead of `See #x` and many other weird combinations. Tests were passing as they never checked against an input that would confuse that regexp. Found with go-critic static analyzer, `badRegexp` checker. --- releaser/git.go | 2 +- releaser/git_test.go | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/releaser/git.go b/releaser/git.go index 4db1c232..a03a48e9 100644 --- a/releaser/git.go +++ b/releaser/git.go @@ -23,7 +23,7 @@ import ( "github.com/gohugoio/hugo/common/hexec" ) -var issueRe = regexp.MustCompile(`(?i)[Updates?|Closes?|Fix.*|See] #(\d+)`) +var issueRe = regexp.MustCompile(`(?i)(?:Updates?|Closes?|Fix.*|See) #(\d+)`) const ( notesChanges = "notesChanges" diff --git a/releaser/git_test.go b/releaser/git_test.go index 21d261a6..ff77eb8c 100644 --- a/releaser/git_test.go +++ b/releaser/git_test.go @@ -45,6 +45,16 @@ See #456 c.Assert(len(issues), qt.Equals, 4) c.Assert(issues[0], qt.Equals, 123) c.Assert(issues[2], qt.Equals, 543) + + bodyNoIssues := ` +This is a commit message without issue refs. + +But it has e #10 to make old regexp confused. +Streets #20. + ` + + emptyIssuesList := extractIssues(bodyNoIssues) + c.Assert(len(emptyIssuesList), qt.Equals, 0) } func TestGitVersionTagBefore(t *testing.T) {