aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIskander (Alex) Sharipov <[email protected]>2021-10-12 12:32:09 +0300
committerGitHub <[email protected]>2021-10-12 11:32:09 +0200
commitd7331aaa7ec8d314764a270edf970db71c4a3011 (patch)
tree278ba2b9ace6e63d911f161871f5aac4957a7b65
parentcd4e67af182a1b3aa19db7609c7581c424e9310f (diff)
downloadhugo-d7331aaa7ec8d314764a270edf970db71c4a3011.tar.gz
hugo-d7331aaa7ec8d314764a270edf970db71c4a3011.zip
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.
-rw-r--r--releaser/git.go2
-rw-r--r--releaser/git_test.go10
2 files changed, 11 insertions, 1 deletions
diff --git a/releaser/git.go b/releaser/git.go
index 4db1c2329..a03a48e99 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 21d261a62..ff77eb8c6 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) {