mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-01 02:30:22 +00:00
4d6e172a0d
Unfortunately, we can't completely remove the ctx from git.Repository, because the CatFileBatch still heavily depends on a parent context. If we remove the Repository ctx, the CatFileBatch will become a mess and create a lot of unnecessary git processes. http://localhost:3000/-/admin/monitor/perftrace * Before: open a repo home, dozens of git processes (duplicate cat-file) * After: only a few (no duplicate cat-file)
32 lines
799 B
Go
32 lines
799 B
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
//go:build !gogit
|
|
|
|
package git
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRepoCatFileBatch(t *testing.T) {
|
|
t.Run("MissingRepoAndClose", func(t *testing.T) {
|
|
testDir := filepath.Join(t.TempDir(), "testdir")
|
|
_ = os.Mkdir(testDir, 0o755)
|
|
repo, err := OpenRepositoryLocal(t.Context(), testDir)
|
|
require.NoError(t, err)
|
|
// when the repo is missing (it usually occurs during testing because the fixtures are synced frequently)
|
|
err = os.Remove(testDir)
|
|
require.NoError(t, err)
|
|
_, _, err = repo.CatFileBatch()
|
|
require.Error(t, err)
|
|
require.NoError(t, repo.Close()) // shouldn't panic
|
|
})
|
|
|
|
// TODO: test more methods and concurrency queries
|
|
}
|