Skip to content

Commit fd273b0

Browse files
Correctly link URLs to users/repos with dashes, dots or underscores (#18890)
* Add tests for references with dashes This commit adds tests for full URLs referencing repos names and user names containing a dash. * Extend regex to match URLs to repos/users with dashes
1 parent 9d7a431 commit fd273b0

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

modules/markup/html.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ var issueFullPatternOnce sync.Once
9999
func getIssueFullPattern() *regexp.Regexp {
100100
issueFullPatternOnce.Do(func() {
101101
issueFullPattern = regexp.MustCompile(regexp.QuoteMeta(setting.AppURL) +
102-
`\w+/\w+/(?:issues|pulls)/((?:\w{1,10}-)?[1-9][0-9]*)([\?|#](\S+)?)?\b`)
102+
`[\w_.-]+/[\w_.-]+/(?:issues|pulls)/((?:\w{1,10}-)?[1-9][0-9]*)([\?|#](\S+)?)?\b`)
103103
})
104104
return issueFullPattern
105105
}

modules/markup/html_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,15 @@ func TestRender_CrossReferences(t *testing.T) {
9797
test(
9898
"/home/gitea/go-gitea/gitea#12345",
9999
`<p>/home/gitea/go-gitea/gitea#12345</p>`)
100+
test(
101+
util.URLJoin(TestAppURL, "gogitea", "gitea", "issues", "12345"),
102+
`<p><a href="`+util.URLJoin(TestAppURL, "gogitea", "gitea", "issues", "12345")+`" class="ref-issue" rel="nofollow">gogitea/gitea#12345</a></p>`)
103+
test(
104+
util.URLJoin(TestAppURL, "go-gitea", "gitea", "issues", "12345"),
105+
`<p><a href="`+util.URLJoin(TestAppURL, "go-gitea", "gitea", "issues", "12345")+`" class="ref-issue" rel="nofollow">go-gitea/gitea#12345</a></p>`)
106+
test(
107+
util.URLJoin(TestAppURL, "gogitea", "some-repo-name", "issues", "12345"),
108+
`<p><a href="`+util.URLJoin(TestAppURL, "gogitea", "some-repo-name", "issues", "12345")+`" class="ref-issue" rel="nofollow">gogitea/some-repo-name#12345</a></p>`)
100109
}
101110

102111
func TestMisc_IsSameDomain(t *testing.T) {

0 commit comments

Comments
 (0)