From 6a49e3f468455476a99c520deae7cb0526da00d1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 21 Jul 2024 01:59:12 +0200 Subject: [PATCH] [BUG] Fix panic on too high page number - Fixes a panic where the file history router would panic if the page number was set to a page where no commits would be returned. It now returns a 404 in such case. - Regresion of a5b1c1b0b32a3746690fc10c9a4594a5b5b5c54f - Panic log provided by @algernon. - Minimal integration test added. Co-authored-by: Gergely Nagy --- routers/web/repo/commit.go | 6 ++++++ tests/integration/repo_test.go | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index 33491ec69..bf9a448ec 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -242,6 +242,12 @@ func FileHistory(ctx *context.Context) { ctx.ServerError("CommitsByFileAndRange", err) return } + + if len(commits) == 0 { + ctx.NotFound("CommitsByFileAndRange", nil) + return + } + oldestCommit := commits[len(commits)-1] renamedFiles, err := git.GetCommitFileRenames(ctx, ctx.Repo.GitRepo.Path, oldestCommit.ID.String()) diff --git a/tests/integration/repo_test.go b/tests/integration/repo_test.go index a61c57422..224a8e67a 100644 --- a/tests/integration/repo_test.go +++ b/tests/integration/repo_test.go @@ -1022,3 +1022,21 @@ func TestRepoCodeSearchForm(t *testing.T) { testSearchForm(t, true) }) } + +func TestFileHistoryPager(t *testing.T) { + defer tests.PrepareTestEnv(t)() + + t.Run("Normal page number", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + + req := NewRequest(t, "GET", "/user2/repo1/commits/branch/master/README.md?page=1") + MakeRequest(t, req, http.StatusOK) + }) + + t.Run("Too high page number", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + + req := NewRequest(t, "GET", "/user2/repo1/commits/branch/master/README.md?page=9999") + MakeRequest(t, req, http.StatusNotFound) + }) +}