diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index 718454e063..89e5727b16 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -244,6 +244,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 5cf9816d22..6525a2e0fd 100644 --- a/tests/integration/repo_test.go +++ b/tests/integration/repo_test.go @@ -995,3 +995,21 @@ func TestViewRepoOpenWith(t *testing.T) { testOpenWith([]string{"test://"}) }) } + +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) + }) +}