From 078229a5e458c850a9fff711b4ebb11c5ce61756 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Thu, 25 Apr 2024 16:23:12 +0200 Subject: [PATCH] fix(ui): /settings/lfs/find 500 error When in the repository settings, visiting - `LFS` to `/{owner}/{repo}/settings/lfs` - `Find pointer files` to `/{owner}/{repo}/settings/lfs/pointers` - `Find commits` to `/{owner}/{repo}/settings/lfs/find?oid=...` failed with an error 500 because of an incorrect evaluation of the template. Regression introduced by https://codeberg.org/forgejo/forgejo/commit/cbf923e87bca0f50c2c01a60ccf544b63c365e98 A test is added to visit the page and guard against future regressions. Refs: https://codeberg.org/forgejo/forgejo/issues/3438 --- RELEASE-NOTES.md | 4 ++-- templates/repo/settings/lfs_file_find.tmpl | 4 ++-- tests/integration/lfs_view_test.go | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index f5df5b6aa..981a07b07 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -26,8 +26,8 @@ In addition to the following notable bug fixes, you can browse the [full list of * **Bug fixes:** * The regression in the [`fogejo admin user create`](https://forgejo.org/docs/v7.0/admin/command-line/#admin-user-create) CLI command [is fixed](https://codeberg.org/forgejo/forgejo/issues/3399) and it is backward compatible. - -- Fixed a bug where the `/api/v1/repos/{owner}/{repo}/wiki` API endpoints were using a hardcoded "master" branch for the wiki, rather than the branch they really use. ([#3430](https://codeberg.org/forgejo/forgejo/pulls/3430)) + * Fixed a bug where the `/api/v1/repos/{owner}/{repo}/wiki` API endpoints were using a hardcoded "master" branch for the wiki, rather than the branch they really use. ([#3430](https://codeberg.org/forgejo/forgejo/pulls/3430)) + * Fixed an error 500 when visiting [the LFS settings]() at `/{owner}/{repo}/settings/lfs/find?oid=...`. ## 7.0.0 diff --git a/templates/repo/settings/lfs_file_find.tmpl b/templates/repo/settings/lfs_file_find.tmpl index 809a028b2..54dbdb482 100644 --- a/templates/repo/settings/lfs_file_find.tmpl +++ b/templates/repo/settings/lfs_file_find.tmpl @@ -23,9 +23,9 @@ {{svg "octicon-git-branch"}}{{.BranchName}} - {{if .ParentHashes}} + {{if .ParentIDs}} {{ctx.Locale.Tr "repo.diff.parent"}} - {{range .ParentHashes}} + {{range .ParentIDs}} {{ShortSha .String}} {{end}} {{end}} diff --git a/tests/integration/lfs_view_test.go b/tests/integration/lfs_view_test.go index 1775fa629..b50c075cc 100644 --- a/tests/integration/lfs_view_test.go +++ b/tests/integration/lfs_view_test.go @@ -80,4 +80,26 @@ func TestLFSRender(t *testing.T) { content := doc.Find("div.file-view").Text() assert.Contains(t, content, "Testing READMEs in LFS") }) + + t.Run("/settings/lfs/pointers", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + + // visit /user2/lfs/settings/lfs/pointer + req := NewRequest(t, "GET", "/user2/lfs/settings/lfs/pointers") + resp := session.MakeRequest(t, req, http.StatusOK) + + // follow the first link to /user2/lfs/settings/lfs/find?oid=.... + filesTable := NewHTMLParser(t, resp.Body).doc.Find("#lfs-files-table") + assert.Contains(t, filesTable.Text(), "Find commits") + lfsFind := filesTable.Find(`.primary.button[href^="/user2"]`) + assert.Greater(t, lfsFind.Length(), 0) + lfsFindPath, exists := lfsFind.First().Attr("href") + assert.True(t, exists) + + assert.Contains(t, lfsFindPath, "oid=") + req = NewRequest(t, "GET", lfsFindPath) + resp = session.MakeRequest(t, req, http.StatusOK) + doc := NewHTMLParser(t, resp.Body).doc + assert.Contains(t, doc.Text(), "README.md") + }) }