mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-22 07:13:02 -05:00
Merge pull request 'fix: keep commit count limit in file history pagination static and not increase with every page' (#6337) from emilylange/fix-file-history-commit-pagination-limit into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6337 Reviewed-by: Gusted <gusted@noreply.codeberg.org>
This commit is contained in:
commit
1e7b922e44
2 changed files with 62 additions and 1 deletions
|
@ -230,7 +230,7 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions)
|
|||
go func() {
|
||||
stderr := strings.Builder{}
|
||||
gitCmd := NewCommand(repo.Ctx, "rev-list").
|
||||
AddOptionFormat("--max-count=%d", setting.Git.CommitsRangeSize*opts.Page).
|
||||
AddOptionFormat("--max-count=%d", setting.Git.CommitsRangeSize).
|
||||
AddOptionFormat("--skip=%d", skip)
|
||||
gitCmd.AddDynamicArguments(opts.Revision)
|
||||
|
||||
|
|
|
@ -7,6 +7,9 @@ import (
|
|||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/test"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
@ -138,3 +141,61 @@ func TestGetTagCommit(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
assert.EqualValues(t, lTagCommitID, lTag.ID.String())
|
||||
}
|
||||
|
||||
func TestCommitsByRange(t *testing.T) {
|
||||
bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
|
||||
bareRepo1, err := openRepositoryWithDefaultContext(bareRepo1Path)
|
||||
require.NoError(t, err)
|
||||
defer bareRepo1.Close()
|
||||
|
||||
baseCommit, err := bareRepo1.GetBranchCommit("master")
|
||||
require.NoError(t, err)
|
||||
|
||||
testCases := []struct {
|
||||
Page int
|
||||
ExpectedCommitCount int
|
||||
}{
|
||||
{1, 3},
|
||||
{2, 3},
|
||||
{3, 1},
|
||||
{4, 0},
|
||||
}
|
||||
for _, testCase := range testCases {
|
||||
commits, err := baseCommit.CommitsByRange(testCase.Page, 3, "")
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, commits, testCase.ExpectedCommitCount, "page: %d", testCase.Page)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCommitsByFileAndRange(t *testing.T) {
|
||||
bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
|
||||
bareRepo1, err := openRepositoryWithDefaultContext(bareRepo1Path)
|
||||
require.NoError(t, err)
|
||||
defer bareRepo1.Close()
|
||||
defer test.MockVariableValue(&setting.Git.CommitsRangeSize, 2)()
|
||||
|
||||
testCases := []struct {
|
||||
File string
|
||||
Page int
|
||||
ExpectedCommitCount int
|
||||
}{
|
||||
{"file1.txt", 1, 1},
|
||||
{"file2.txt", 1, 1},
|
||||
{"file*.txt", 1, 2},
|
||||
{"foo", 1, 2},
|
||||
{"foo", 2, 1},
|
||||
{"foo", 3, 0},
|
||||
{"f*", 1, 2},
|
||||
{"f*", 2, 2},
|
||||
{"f*", 3, 1},
|
||||
}
|
||||
for _, testCase := range testCases {
|
||||
commits, err := bareRepo1.CommitsByFileAndRange(CommitsByFileAndRangeOptions{
|
||||
Revision: "master",
|
||||
File: testCase.File,
|
||||
Page: testCase.Page,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, commits, testCase.ExpectedCommitCount, "file: '%s', page: %d", testCase.File, testCase.Page)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue