|
|
@ -25,13 +25,11 @@ var localMetas = map[string]string{ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestRender_Commits(t *testing.T) { |
|
|
|
func TestRender_Commits(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test := func(input, expected string) { |
|
|
|
test := func(input, expected string) { |
|
|
|
buffer, err := RenderString(&RenderContext{ |
|
|
|
buffer, err := RenderString(&RenderContext{ |
|
|
|
Filename: ".md", |
|
|
|
Filename: ".md", |
|
|
|
URLPrefix: setting.AppSubURL, |
|
|
|
URLPrefix: TestRepoURL, |
|
|
|
Metas: localMetas, |
|
|
|
Metas: localMetas, |
|
|
|
}, input) |
|
|
|
}, input) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.NoError(t, err) |
|
|
@ -39,15 +37,30 @@ func TestRender_Commits(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var sha = "65f1bf27bc3bf70f64657658635e66094edbcb4d" |
|
|
|
var sha = "65f1bf27bc3bf70f64657658635e66094edbcb4d" |
|
|
|
var commit = util.URLJoin(AppSubURL, "commit", sha) |
|
|
|
var repo = TestRepoURL |
|
|
|
var subtree = util.URLJoin(commit, "src") |
|
|
|
var commit = util.URLJoin(repo, "commit", sha) |
|
|
|
var tree = strings.ReplaceAll(subtree, "/commit/", "/tree/") |
|
|
|
var tree = util.URLJoin(repo, "tree", sha, "src") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var file = util.URLJoin(repo, "commit", sha, "example.txt") |
|
|
|
|
|
|
|
var fileWithExtra = file + ":" |
|
|
|
|
|
|
|
var fileWithHash = file + "#L2" |
|
|
|
|
|
|
|
var fileWithHasExtra = file + "#L2:" |
|
|
|
|
|
|
|
var commitCompare = util.URLJoin(repo, "compare", sha+"..."+sha) |
|
|
|
|
|
|
|
var commitCompareWithHash = commitCompare + "#L2" |
|
|
|
|
|
|
|
|
|
|
|
test(sha, `<p><a href="`+commit+`" rel="nofollow"><code>65f1bf27bc</code></a></p>`) |
|
|
|
test(sha, `<p><a href="`+commit+`" rel="nofollow"><code>65f1bf27bc</code></a></p>`) |
|
|
|
test(sha[:7], `<p><a href="`+commit[:len(commit)-(40-7)]+`" rel="nofollow"><code>65f1bf2</code></a></p>`) |
|
|
|
test(sha[:7], `<p><a href="`+commit[:len(commit)-(40-7)]+`" rel="nofollow"><code>65f1bf2</code></a></p>`) |
|
|
|
test(sha[:39], `<p><a href="`+commit[:len(commit)-(40-39)]+`" rel="nofollow"><code>65f1bf27bc</code></a></p>`) |
|
|
|
test(sha[:39], `<p><a href="`+commit[:len(commit)-(40-39)]+`" rel="nofollow"><code>65f1bf27bc</code></a></p>`) |
|
|
|
test(commit, `<p><a href="`+commit+`" rel="nofollow"><code>65f1bf27bc</code></a></p>`) |
|
|
|
test(commit, `<p><a href="`+commit+`" rel="nofollow"><code>65f1bf27bc</code></a></p>`) |
|
|
|
test(tree, `<p><a href="`+tree+`" rel="nofollow"><code>65f1bf27bc/src</code></a></p>`) |
|
|
|
test(tree, `<p><a href="`+tree+`" rel="nofollow"><code>65f1bf27bc/src</code></a></p>`) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test(file, `<p><a href="`+file+`" rel="nofollow"><code>65f1bf27bc/example.txt</code></a></p>`) |
|
|
|
|
|
|
|
test(fileWithExtra, `<p><a href="`+file+`" rel="nofollow"><code>65f1bf27bc/example.txt</code></a>:</p>`) |
|
|
|
|
|
|
|
test(fileWithHash, `<p><a href="`+fileWithHash+`" rel="nofollow"><code>65f1bf27bc/example.txt (L2)</code></a></p>`) |
|
|
|
|
|
|
|
test(fileWithHasExtra, `<p><a href="`+fileWithHash+`" rel="nofollow"><code>65f1bf27bc/example.txt (L2)</code></a>:</p>`) |
|
|
|
|
|
|
|
test(commitCompare, `<p><a href="`+commitCompare+`" rel="nofollow"><code>65f1bf27bc...65f1bf27bc</code></a></p>`) |
|
|
|
|
|
|
|
test(commitCompareWithHash, `<p><a href="`+commitCompareWithHash+`" rel="nofollow"><code>65f1bf27bc...65f1bf27bc (L2)</code></a></p>`) |
|
|
|
|
|
|
|
|
|
|
|
test("commit "+sha, `<p>commit <a href="`+commit+`" rel="nofollow"><code>65f1bf27bc</code></a></p>`) |
|
|
|
test("commit "+sha, `<p>commit <a href="`+commit+`" rel="nofollow"><code>65f1bf27bc</code></a></p>`) |
|
|
|
test("/home/gitea/"+sha, "<p>/home/gitea/"+sha+"</p>") |
|
|
|
test("/home/gitea/"+sha, "<p>/home/gitea/"+sha+"</p>") |
|
|
|
test("deadbeef", `<p>deadbeef</p>`) |
|
|
|
test("deadbeef", `<p>deadbeef</p>`) |
|
|
@ -61,8 +74,7 @@ func TestRender_Commits(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestRender_CrossReferences(t *testing.T) { |
|
|
|
func TestRender_CrossReferences(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test := func(input, expected string) { |
|
|
|
test := func(input, expected string) { |
|
|
|
buffer, err := RenderString(&RenderContext{ |
|
|
|
buffer, err := RenderString(&RenderContext{ |
|
|
@ -76,21 +88,20 @@ func TestRender_CrossReferences(t *testing.T) { |
|
|
|
|
|
|
|
|
|
|
|
test( |
|
|
|
test( |
|
|
|
"gogits/gogs#12345", |
|
|
|
"gogits/gogs#12345", |
|
|
|
`<p><a href="`+util.URLJoin(AppURL, "gogits", "gogs", "issues", "12345")+`" class="ref-issue" rel="nofollow">gogits/gogs#12345</a></p>`) |
|
|
|
`<p><a href="`+util.URLJoin(TestAppURL, "gogits", "gogs", "issues", "12345")+`" class="ref-issue" rel="nofollow">gogits/gogs#12345</a></p>`) |
|
|
|
test( |
|
|
|
test( |
|
|
|
"go-gitea/gitea#12345", |
|
|
|
"go-gitea/gitea#12345", |
|
|
|
`<p><a href="`+util.URLJoin(AppURL, "go-gitea", "gitea", "issues", "12345")+`" class="ref-issue" rel="nofollow">go-gitea/gitea#12345</a></p>`) |
|
|
|
`<p><a href="`+util.URLJoin(TestAppURL, "go-gitea", "gitea", "issues", "12345")+`" class="ref-issue" rel="nofollow">go-gitea/gitea#12345</a></p>`) |
|
|
|
test( |
|
|
|
test( |
|
|
|
"/home/gitea/go-gitea/gitea#12345", |
|
|
|
"/home/gitea/go-gitea/gitea#12345", |
|
|
|
`<p>/home/gitea/go-gitea/gitea#12345</p>`) |
|
|
|
`<p>/home/gitea/go-gitea/gitea#12345</p>`) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestMisc_IsSameDomain(t *testing.T) { |
|
|
|
func TestMisc_IsSameDomain(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var sha = "b6dd6210eaebc915fd5be5579c58cce4da2e2579" |
|
|
|
var sha = "b6dd6210eaebc915fd5be5579c58cce4da2e2579" |
|
|
|
var commit = util.URLJoin(AppSubURL, "commit", sha) |
|
|
|
var commit = util.URLJoin(TestRepoURL, "commit", sha) |
|
|
|
|
|
|
|
|
|
|
|
assert.True(t, IsSameDomain(commit)) |
|
|
|
assert.True(t, IsSameDomain(commit)) |
|
|
|
assert.False(t, IsSameDomain("http://google.com/ncr")) |
|
|
|
assert.False(t, IsSameDomain("http://google.com/ncr")) |
|
|
@ -98,13 +109,12 @@ func TestMisc_IsSameDomain(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestRender_links(t *testing.T) { |
|
|
|
func TestRender_links(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test := func(input, expected string) { |
|
|
|
test := func(input, expected string) { |
|
|
|
buffer, err := RenderString(&RenderContext{ |
|
|
|
buffer, err := RenderString(&RenderContext{ |
|
|
|
Filename: "a.md", |
|
|
|
Filename: "a.md", |
|
|
|
URLPrefix: setting.AppSubURL, |
|
|
|
URLPrefix: TestRepoURL, |
|
|
|
}, input) |
|
|
|
}, input) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) |
|
|
@ -198,13 +208,12 @@ func TestRender_links(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestRender_email(t *testing.T) { |
|
|
|
func TestRender_email(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test := func(input, expected string) { |
|
|
|
test := func(input, expected string) { |
|
|
|
res, err := RenderString(&RenderContext{ |
|
|
|
res, err := RenderString(&RenderContext{ |
|
|
|
Filename: "a.md", |
|
|
|
Filename: "a.md", |
|
|
|
URLPrefix: setting.AppSubURL, |
|
|
|
URLPrefix: TestRepoURL, |
|
|
|
}, input) |
|
|
|
}, input) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(res)) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(res)) |
|
|
@ -255,15 +264,14 @@ func TestRender_email(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestRender_emoji(t *testing.T) { |
|
|
|
func TestRender_emoji(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
setting.StaticURLPrefix = TestAppURL |
|
|
|
setting.StaticURLPrefix = AppURL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test := func(input, expected string) { |
|
|
|
test := func(input, expected string) { |
|
|
|
expected = strings.ReplaceAll(expected, "&", "&") |
|
|
|
expected = strings.ReplaceAll(expected, "&", "&") |
|
|
|
buffer, err := RenderString(&RenderContext{ |
|
|
|
buffer, err := RenderString(&RenderContext{ |
|
|
|
Filename: "a.md", |
|
|
|
Filename: "a.md", |
|
|
|
URLPrefix: setting.AppSubURL, |
|
|
|
URLPrefix: TestRepoURL, |
|
|
|
}, input) |
|
|
|
}, input) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) |
|
|
@ -320,9 +328,8 @@ func TestRender_emoji(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestRender_ShortLinks(t *testing.T) { |
|
|
|
func TestRender_ShortLinks(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
tree := util.URLJoin(TestRepoURL, "src", "master") |
|
|
|
tree := util.URLJoin(AppSubURL, "src", "master") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test := func(input, expected, expectedWiki string) { |
|
|
|
test := func(input, expected, expectedWiki string) { |
|
|
|
buffer, err := markdown.RenderString(&RenderContext{ |
|
|
|
buffer, err := markdown.RenderString(&RenderContext{ |
|
|
@ -331,7 +338,7 @@ func TestRender_ShortLinks(t *testing.T) { |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) |
|
|
|
buffer, err = markdown.RenderString(&RenderContext{ |
|
|
|
buffer, err = markdown.RenderString(&RenderContext{ |
|
|
|
URLPrefix: setting.AppSubURL, |
|
|
|
URLPrefix: TestRepoURL, |
|
|
|
Metas: localMetas, |
|
|
|
Metas: localMetas, |
|
|
|
IsWiki: true, |
|
|
|
IsWiki: true, |
|
|
|
}, input) |
|
|
|
}, input) |
|
|
@ -339,7 +346,7 @@ func TestRender_ShortLinks(t *testing.T) { |
|
|
|
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(buffer)) |
|
|
|
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(buffer)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
rawtree := util.URLJoin(AppSubURL, "raw", "master") |
|
|
|
rawtree := util.URLJoin(TestRepoURL, "raw", "master") |
|
|
|
url := util.URLJoin(tree, "Link") |
|
|
|
url := util.URLJoin(tree, "Link") |
|
|
|
otherURL := util.URLJoin(tree, "Other-Link") |
|
|
|
otherURL := util.URLJoin(tree, "Other-Link") |
|
|
|
encodedURL := util.URLJoin(tree, "Link%3F") |
|
|
|
encodedURL := util.URLJoin(tree, "Link%3F") |
|
|
@ -347,13 +354,13 @@ func TestRender_ShortLinks(t *testing.T) { |
|
|
|
otherImgurl := util.URLJoin(rawtree, "Link+Other.jpg") |
|
|
|
otherImgurl := util.URLJoin(rawtree, "Link+Other.jpg") |
|
|
|
encodedImgurl := util.URLJoin(rawtree, "Link+%23.jpg") |
|
|
|
encodedImgurl := util.URLJoin(rawtree, "Link+%23.jpg") |
|
|
|
notencodedImgurl := util.URLJoin(rawtree, "some", "path", "Link+#.jpg") |
|
|
|
notencodedImgurl := util.URLJoin(rawtree, "some", "path", "Link+#.jpg") |
|
|
|
urlWiki := util.URLJoin(AppSubURL, "wiki", "Link") |
|
|
|
urlWiki := util.URLJoin(TestRepoURL, "wiki", "Link") |
|
|
|
otherURLWiki := util.URLJoin(AppSubURL, "wiki", "Other-Link") |
|
|
|
otherURLWiki := util.URLJoin(TestRepoURL, "wiki", "Other-Link") |
|
|
|
encodedURLWiki := util.URLJoin(AppSubURL, "wiki", "Link%3F") |
|
|
|
encodedURLWiki := util.URLJoin(TestRepoURL, "wiki", "Link%3F") |
|
|
|
imgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link.jpg") |
|
|
|
imgurlWiki := util.URLJoin(TestRepoURL, "wiki", "raw", "Link.jpg") |
|
|
|
otherImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link+Other.jpg") |
|
|
|
otherImgurlWiki := util.URLJoin(TestRepoURL, "wiki", "raw", "Link+Other.jpg") |
|
|
|
encodedImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link+%23.jpg") |
|
|
|
encodedImgurlWiki := util.URLJoin(TestRepoURL, "wiki", "raw", "Link+%23.jpg") |
|
|
|
notencodedImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "some", "path", "Link+#.jpg") |
|
|
|
notencodedImgurlWiki := util.URLJoin(TestRepoURL, "wiki", "raw", "some", "path", "Link+#.jpg") |
|
|
|
favicon := "http://google.com/favicon.ico" |
|
|
|
favicon := "http://google.com/favicon.ico" |
|
|
|
|
|
|
|
|
|
|
|
test( |
|
|
|
test( |
|
|
@ -427,9 +434,8 @@ func TestRender_ShortLinks(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestRender_RelativeImages(t *testing.T) { |
|
|
|
func TestRender_RelativeImages(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
tree := util.URLJoin(TestRepoURL, "src", "master") |
|
|
|
tree := util.URLJoin(AppSubURL, "src", "master") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test := func(input, expected, expectedWiki string) { |
|
|
|
test := func(input, expected, expectedWiki string) { |
|
|
|
buffer, err := markdown.RenderString(&RenderContext{ |
|
|
|
buffer, err := markdown.RenderString(&RenderContext{ |
|
|
@ -439,7 +445,7 @@ func TestRender_RelativeImages(t *testing.T) { |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.NoError(t, err) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) |
|
|
|
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) |
|
|
|
buffer, err = markdown.RenderString(&RenderContext{ |
|
|
|
buffer, err = markdown.RenderString(&RenderContext{ |
|
|
|
URLPrefix: setting.AppSubURL, |
|
|
|
URLPrefix: TestRepoURL, |
|
|
|
Metas: localMetas, |
|
|
|
Metas: localMetas, |
|
|
|
IsWiki: true, |
|
|
|
IsWiki: true, |
|
|
|
}, input) |
|
|
|
}, input) |
|
|
@ -447,8 +453,8 @@ func TestRender_RelativeImages(t *testing.T) { |
|
|
|
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(buffer)) |
|
|
|
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(buffer)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
rawwiki := util.URLJoin(AppSubURL, "wiki", "raw") |
|
|
|
rawwiki := util.URLJoin(TestRepoURL, "wiki", "raw") |
|
|
|
mediatree := util.URLJoin(AppSubURL, "media", "master") |
|
|
|
mediatree := util.URLJoin(TestRepoURL, "media", "master") |
|
|
|
|
|
|
|
|
|
|
|
test( |
|
|
|
test( |
|
|
|
`<img src="Link">`, |
|
|
|
`<img src="Link">`, |
|
|
@ -462,8 +468,7 @@ func TestRender_RelativeImages(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func Test_ParseClusterFuzz(t *testing.T) { |
|
|
|
func Test_ParseClusterFuzz(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var localMetas = map[string]string{ |
|
|
|
var localMetas = map[string]string{ |
|
|
|
"user": "go-gitea", |
|
|
|
"user": "go-gitea", |
|
|
@ -493,8 +498,7 @@ func Test_ParseClusterFuzz(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func TestIssue16020(t *testing.T) { |
|
|
|
func TestIssue16020(t *testing.T) { |
|
|
|
setting.AppURL = AppURL |
|
|
|
setting.AppURL = TestAppURL |
|
|
|
setting.AppSubURL = AppSubURL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var localMetas = map[string]string{ |
|
|
|
var localMetas = map[string]string{ |
|
|
|
"user": "go-gitea", |
|
|
|
"user": "go-gitea", |
|
|
|