Fix regex for issues in commit messages (#7444)
* Fix regex for issues in commit messages Use same regex as markup for matching in commits. Fixes #7438 * make fmt
This commit is contained in:
parent
97078d1bdf
commit
fb0c562f8b
2 changed files with 21 additions and 1 deletions
|
@ -65,6 +65,7 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
const issueRefRegexpStr = `(?:([0-9a-zA-Z-_\.]+)/([0-9a-zA-Z-_\.]+))?(#[0-9]+)+`
|
const issueRefRegexpStr = `(?:([0-9a-zA-Z-_\.]+)/([0-9a-zA-Z-_\.]+))?(#[0-9]+)+`
|
||||||
|
const issueRefRegexpStrNoKeyword = `(?:\s|^|\(|\[)(?:([0-9a-zA-Z-_\.]+)/([0-9a-zA-Z-_\.]+))?(#[0-9]+)(?:\s|$|\)|\]|\.(\s|$))`
|
||||||
|
|
||||||
func assembleKeywordsPattern(words []string) string {
|
func assembleKeywordsPattern(words []string) string {
|
||||||
return fmt.Sprintf(`(?i)(?:%s)(?::?) %s`, strings.Join(words, "|"), issueRefRegexpStr)
|
return fmt.Sprintf(`(?i)(?:%s)(?::?) %s`, strings.Join(words, "|"), issueRefRegexpStr)
|
||||||
|
@ -73,7 +74,7 @@ func assembleKeywordsPattern(words []string) string {
|
||||||
func init() {
|
func init() {
|
||||||
issueCloseKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(issueCloseKeywords))
|
issueCloseKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(issueCloseKeywords))
|
||||||
issueReopenKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(issueReopenKeywords))
|
issueReopenKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(issueReopenKeywords))
|
||||||
issueReferenceKeywordsPat = regexp.MustCompile(issueRefRegexpStr)
|
issueReferenceKeywordsPat = regexp.MustCompile(issueRefRegexpStrNoKeyword)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Action represents user operation type and other information to
|
// Action represents user operation type and other information to
|
||||||
|
|
|
@ -155,6 +155,25 @@ func TestPushCommits_AvatarLink(t *testing.T) {
|
||||||
pushCommits.AvatarLink("nonexistent@example.com"))
|
pushCommits.AvatarLink("nonexistent@example.com"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRegExp_issueReferenceKeywordsPat(t *testing.T) {
|
||||||
|
trueTestCases := []string{
|
||||||
|
"#2",
|
||||||
|
"[#2]",
|
||||||
|
"please see go-gitea/gitea#5",
|
||||||
|
}
|
||||||
|
falseTestCases := []string{
|
||||||
|
"kb#2",
|
||||||
|
"#2xy",
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, testCase := range trueTestCases {
|
||||||
|
assert.True(t, issueReferenceKeywordsPat.MatchString(testCase))
|
||||||
|
}
|
||||||
|
for _, testCase := range falseTestCases {
|
||||||
|
assert.False(t, issueReferenceKeywordsPat.MatchString(testCase))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func Test_getIssueFromRef(t *testing.T) {
|
func Test_getIssueFromRef(t *testing.T) {
|
||||||
assert.NoError(t, PrepareTestDatabase())
|
assert.NoError(t, PrepareTestDatabase())
|
||||||
repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
|
repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
|
||||||
|
|
Reference in a new issue