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 issueRefRegexpStrNoKeyword = `(?:\s|^|\(|\[)(?:([0-9a-zA-Z-_\.]+)/([0-9a-zA-Z-_\.]+))?(#[0-9]+)(?:\s|$|\)|\]|\.(\s|$))` | ||||
| 
 | ||||
| func assembleKeywordsPattern(words []string) string { | ||||
| 	return fmt.Sprintf(`(?i)(?:%s)(?::?) %s`, strings.Join(words, "|"), issueRefRegexpStr) | ||||
|  | @ -73,7 +74,7 @@ func assembleKeywordsPattern(words []string) string { | |||
| func init() { | ||||
| 	issueCloseKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(issueCloseKeywords)) | ||||
| 	issueReopenKeywordsPat = regexp.MustCompile(assembleKeywordsPattern(issueReopenKeywords)) | ||||
| 	issueReferenceKeywordsPat = regexp.MustCompile(issueRefRegexpStr) | ||||
| 	issueReferenceKeywordsPat = regexp.MustCompile(issueRefRegexpStrNoKeyword) | ||||
| } | ||||
| 
 | ||||
| // Action represents user operation type and other information to
 | ||||
|  |  | |||
|  | @ -155,6 +155,25 @@ func TestPushCommits_AvatarLink(t *testing.T) { | |||
| 		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) { | ||||
| 	assert.NoError(t, PrepareTestDatabase()) | ||||
| 	repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue