forked from forgejo/forgejo
Fix issue link rendering in commit messages (#2897)
* Fix issue link rendering in commit messages * Update page.tmpl * No links for parens * remove comment
This commit is contained in:
parent
47f40ccd5e
commit
5481be0ac5
7 changed files with 126 additions and 52 deletions
|
@ -55,9 +55,12 @@ func link(href, contents string) string {
|
|||
return fmt.Sprintf("<a href=\"%s\">%s</a>", href, contents)
|
||||
}
|
||||
|
||||
func testRenderIssueIndexPattern(t *testing.T, input, expected string, metas map[string]string) {
|
||||
assert.Equal(t, expected,
|
||||
string(RenderIssueIndexPattern([]byte(input), AppSubURL, metas)))
|
||||
func testRenderIssueIndexPattern(t *testing.T, input, expected string, opts RenderIssueIndexPatternOptions) {
|
||||
if len(opts.URLPrefix) == 0 {
|
||||
opts.URLPrefix = AppSubURL
|
||||
}
|
||||
actual := string(RenderIssueIndexPattern([]byte(input), opts))
|
||||
assert.Equal(t, expected, actual)
|
||||
}
|
||||
|
||||
func TestURLJoin(t *testing.T) {
|
||||
|
@ -88,8 +91,8 @@ func TestURLJoin(t *testing.T) {
|
|||
func TestRender_IssueIndexPattern(t *testing.T) {
|
||||
// numeric: render inputs without valid mentions
|
||||
test := func(s string) {
|
||||
testRenderIssueIndexPattern(t, s, s, nil)
|
||||
testRenderIssueIndexPattern(t, s, s, numericMetas)
|
||||
testRenderIssueIndexPattern(t, s, s, RenderIssueIndexPatternOptions{})
|
||||
testRenderIssueIndexPattern(t, s, s, RenderIssueIndexPatternOptions{Metas: numericMetas})
|
||||
}
|
||||
|
||||
// should not render anything when there are no mentions
|
||||
|
@ -123,13 +126,13 @@ func TestRender_IssueIndexPattern2(t *testing.T) {
|
|||
links[i] = numericIssueLink(URLJoin(setting.AppSubURL, "issues"), index)
|
||||
}
|
||||
expectedNil := fmt.Sprintf(expectedFmt, links...)
|
||||
testRenderIssueIndexPattern(t, s, expectedNil, nil)
|
||||
testRenderIssueIndexPattern(t, s, expectedNil, RenderIssueIndexPatternOptions{})
|
||||
|
||||
for i, index := range indices {
|
||||
links[i] = numericIssueLink("https://someurl.com/someUser/someRepo/", index)
|
||||
}
|
||||
expectedNum := fmt.Sprintf(expectedFmt, links...)
|
||||
testRenderIssueIndexPattern(t, s, expectedNum, numericMetas)
|
||||
testRenderIssueIndexPattern(t, s, expectedNum, RenderIssueIndexPatternOptions{Metas: numericMetas})
|
||||
}
|
||||
|
||||
// should render freestanding mentions
|
||||
|
@ -155,7 +158,7 @@ func TestRender_IssueIndexPattern3(t *testing.T) {
|
|||
|
||||
// alphanumeric: render inputs without valid mentions
|
||||
test := func(s string) {
|
||||
testRenderIssueIndexPattern(t, s, s, alphanumericMetas)
|
||||
testRenderIssueIndexPattern(t, s, s, RenderIssueIndexPatternOptions{Metas: alphanumericMetas})
|
||||
}
|
||||
test("")
|
||||
test("this is a test")
|
||||
|
@ -187,13 +190,32 @@ func TestRender_IssueIndexPattern4(t *testing.T) {
|
|||
links[i] = alphanumIssueLink("https://someurl.com/someUser/someRepo/", name)
|
||||
}
|
||||
expected := fmt.Sprintf(expectedFmt, links...)
|
||||
testRenderIssueIndexPattern(t, s, expected, alphanumericMetas)
|
||||
testRenderIssueIndexPattern(t, s, expected, RenderIssueIndexPatternOptions{Metas: alphanumericMetas})
|
||||
}
|
||||
test("OTT-1234 test", "%s test", "OTT-1234")
|
||||
test("test T-12 issue", "test %s issue", "T-12")
|
||||
test("test issue ABCDEFGHIJ-1234567890", "test issue %s", "ABCDEFGHIJ-1234567890")
|
||||
}
|
||||
|
||||
func TestRenderIssueIndexPatternWithDefaultURL(t *testing.T) {
|
||||
setting.AppURL = AppURL
|
||||
setting.AppSubURL = AppSubURL
|
||||
|
||||
test := func(input string, expected string) {
|
||||
testRenderIssueIndexPattern(t, input, expected, RenderIssueIndexPatternOptions{
|
||||
DefaultURL: AppURL,
|
||||
})
|
||||
}
|
||||
test("hello #123 world",
|
||||
fmt.Sprintf(`<a rel="nofollow" href="%s">hello</a> `, AppURL)+
|
||||
fmt.Sprintf(`<a href="%sissues/123">#123</a> `, AppSubURL)+
|
||||
fmt.Sprintf(`<a rel="nofollow" href="%s">world</a>`, AppURL))
|
||||
test("hello (#123) world",
|
||||
fmt.Sprintf(`<a rel="nofollow" href="%s">hello </a>`, AppURL)+
|
||||
fmt.Sprintf(`(<a href="%sissues/123">#123</a>)`, AppSubURL)+
|
||||
fmt.Sprintf(`<a rel="nofollow" href="%s"> world</a>`, AppURL))
|
||||
}
|
||||
|
||||
func TestRender_AutoLink(t *testing.T) {
|
||||
setting.AppURL = AppURL
|
||||
setting.AppSubURL = AppSubURL
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue