summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorEarl Warren <109468362+earl-warren@users.noreply.github.com>2023-08-08 11:04:04 +0200
committerGitHub <noreply@github.com>2023-08-08 09:04:04 +0000
commit20f47bbca932b1f6a5290fda3391928686ed0c24 (patch)
tree51d3a49f0561eae9a01fe77a96821e2bbc82d127 /tests
parent71d253f42e6f7d73fdaad5039df58893c336a0e6 (diff)
downloadgitea-20f47bbca932b1f6a5290fda3391928686ed0c24.tar.gz
gitea-20f47bbca932b1f6a5290fda3391928686ed0c24.zip
fix generated source URL on rendered files (#26364)
- The permalink and 'Reference in New issue' URL of an renderable file (those where you can see the source and a rendered version of it, such as markdown) doesn't contain `?display=source`. This leads the issue that the URL doesn't have any effect, as by default the rendered version is shown and thus not the source. - Add `?display=source` to the permalink URL and to 'Reference in New Issue' if it's renderable file. - Add integration testing. Refs: https://codeberg.org/forgejo/forgejo/pulls/1088 Co-authored-by: Gusted <postmaster@gusted.xyz> Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/repo_test.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/integration/repo_test.go b/tests/integration/repo_test.go
index 2fb1a37d31..9ace3ca30c 100644
--- a/tests/integration/repo_test.go
+++ b/tests/integration/repo_test.go
@@ -408,3 +408,39 @@ func TestMarkDownReadmeImageSubfolder(t *testing.T) {
assert.True(t, exists, "Image not found in markdown file")
assert.Equal(t, "/user2/repo1/media/branch/sub-home-md-img-check/docs/test-fake-img.jpg", src)
}
+
+func TestGeneratedSourceLink(t *testing.T) {
+ defer tests.PrepareTestEnv(t)()
+
+ t.Run("Rendered file", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+ req := NewRequest(t, "GET", "/user2/repo1/src/branch/master/README.md?display=source")
+ resp := MakeRequest(t, req, http.StatusOK)
+ doc := NewHTMLParser(t, resp.Body)
+
+ dataURL, exists := doc.doc.Find(".copy-line-permalink").Attr("data-url")
+ assert.True(t, exists)
+ assert.Equal(t, "/user2/repo1/src/commit/65f1bf27bc3bf70f64657658635e66094edbcb4d/README.md?display=source", dataURL)
+
+ dataURL, exists = doc.doc.Find(".ref-in-new-issue").Attr("data-url-param-body-link")
+ assert.True(t, exists)
+ assert.Equal(t, "/user2/repo1/src/commit/65f1bf27bc3bf70f64657658635e66094edbcb4d/README.md?display=source", dataURL)
+ })
+
+ t.Run("Non-Rendered file", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+
+ session := loginUser(t, "user27")
+ req := NewRequest(t, "GET", "/user27/repo49/src/branch/master/test/test.txt")
+ resp := session.MakeRequest(t, req, http.StatusOK)
+ doc := NewHTMLParser(t, resp.Body)
+
+ dataURL, exists := doc.doc.Find(".copy-line-permalink").Attr("data-url")
+ assert.True(t, exists)
+ assert.Equal(t, "/user27/repo49/src/commit/aacbdfe9e1c4b47f60abe81849045fa4e96f1d75/test/test.txt", dataURL)
+
+ dataURL, exists = doc.doc.Find(".ref-in-new-issue").Attr("data-url-param-body-link")
+ assert.True(t, exists)
+ assert.Equal(t, "/user27/repo49/src/commit/aacbdfe9e1c4b47f60abe81849045fa4e96f1d75/test/test.txt", dataURL)
+ })
+}