Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2022-07-29 15:06:01 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2022-08-01 12:54:47 +0300
commit034bf89226f1cdafe16a434d9fa2e66051b44dae (patch)
treea19eca80a714affced3aa653a6f047f96d6285f5
parent22ba52fbb31975501393c9b94a71626551f50f0b (diff)
gittest: Create test data at runtime in the repository suite
The shared repository suite that is used to verify both the localrepo and remoterepo implementations currently uses a toggle to tell the implementation-specific setup function whether the repository should be seeded or not. This doesn't make a whole lot of sense: setup of the test data really should be handled by the suite itself. Refactor the code and create the test data at runtime. This also enables us to easily test against SHA256.
-rw-r--r--internal/git/gittest/repository_suite.go44
-rw-r--r--internal/git/localrepo/repo_test.go15
-rw-r--r--internal/git/remoterepo/repository_test.go13
3 files changed, 27 insertions, 45 deletions
diff --git a/internal/git/gittest/repository_suite.go b/internal/git/gittest/repository_suite.go
index 676e17564..505279598 100644
--- a/internal/git/gittest/repository_suite.go
+++ b/internal/git/gittest/repository_suite.go
@@ -13,7 +13,7 @@ import (
// GetRepositoryFunc is used to get a clean test repository for the different implementations of the
// Repository interface in the common test suite TestRepository.
-type GetRepositoryFunc func(ctx context.Context, t testing.TB, seeded bool) (git.Repository, string)
+type GetRepositoryFunc func(ctx context.Context, t testing.TB) (git.Repository, string)
// TestRepository tests an implementation of Repository.
func TestRepository(t *testing.T, cfg config.Cfg, getRepository GetRepositoryFunc) {
@@ -43,6 +43,12 @@ func TestRepository(t *testing.T, cfg config.Cfg, getRepository GetRepositoryFun
func testRepositoryResolveRevision(t *testing.T, cfg config.Cfg, getRepository GetRepositoryFunc) {
ctx := testhelper.Context(t)
+ repo, repoPath := getRepository(ctx, t)
+
+ firstParentCommitID := WriteCommit(t, cfg, repoPath, WithMessage("first parent"))
+ secondParentCommitID := WriteCommit(t, cfg, repoPath, WithMessage("second parent"))
+ masterCommitID := WriteCommit(t, cfg, repoPath, WithBranch("master"), WithParents(firstParentCommitID, secondParentCommitID))
+
for _, tc := range []struct {
desc string
revision string
@@ -51,22 +57,22 @@ func testRepositoryResolveRevision(t *testing.T, cfg config.Cfg, getRepository G
{
desc: "unqualified master branch",
revision: "master",
- expected: "1e292f8fedd741b75372e19097c76d327140c312",
+ expected: masterCommitID,
},
{
desc: "fully qualified master branch",
revision: "refs/heads/master",
- expected: "1e292f8fedd741b75372e19097c76d327140c312",
+ expected: masterCommitID,
},
{
desc: "typed commit",
revision: "refs/heads/master^{commit}",
- expected: "1e292f8fedd741b75372e19097c76d327140c312",
+ expected: masterCommitID,
},
{
desc: "extended SHA notation",
revision: "refs/heads/master^2",
- expected: "c1c67abbaf91f624347bb3ae96eabe3a1b742478",
+ expected: secondParentCommitID,
},
{
desc: "nonexistent branch",
@@ -78,7 +84,6 @@ func testRepositoryResolveRevision(t *testing.T, cfg config.Cfg, getRepository G
},
} {
t.Run(tc.desc, func(t *testing.T) {
- repo, _ := getRepository(ctx, t, true)
oid, err := repo.ResolveRevision(ctx, git.Revision(tc.revision))
if tc.expected == "" {
require.Equal(t, err, git.ErrReferenceNotFound)
@@ -94,7 +99,7 @@ func testRepositoryResolveRevision(t *testing.T, cfg config.Cfg, getRepository G
func testRepositoryHasBranches(t *testing.T, cfg config.Cfg, getRepository GetRepositoryFunc) {
ctx := testhelper.Context(t)
- repo, repoPath := getRepository(ctx, t, false)
+ repo, repoPath := getRepository(ctx, t)
emptyCommit := text.ChompBytes(Exec(t, cfg, "-C", repoPath, "commit-tree", DefaultObjectHash.EmptyTreeOID.String()))
@@ -112,7 +117,6 @@ func testRepositoryHasBranches(t *testing.T, cfg config.Cfg, getRepository GetRe
}
func testRepositoryGetDefaultBranch(t *testing.T, cfg config.Cfg, getRepository GetRepositoryFunc) {
- const testOID = "1a0b36b3cdad1d2ee32457c102a8c0b7056fa863"
ctx := testhelper.Context(t)
for _, tc := range []struct {
@@ -123,7 +127,7 @@ func testRepositoryGetDefaultBranch(t *testing.T, cfg config.Cfg, getRepository
{
desc: "default ref",
repo: func(t *testing.T) git.Repository {
- repo, repoPath := getRepository(ctx, t, false)
+ repo, repoPath := getRepository(ctx, t)
oid := WriteCommit(t, cfg, repoPath, WithBranch("apple"))
WriteCommit(t, cfg, repoPath, WithParents(oid), WithBranch("main"))
return repo
@@ -133,7 +137,7 @@ func testRepositoryGetDefaultBranch(t *testing.T, cfg config.Cfg, getRepository
{
desc: "legacy default ref",
repo: func(t *testing.T) git.Repository {
- repo, repoPath := getRepository(ctx, t, false)
+ repo, repoPath := getRepository(ctx, t)
oid := WriteCommit(t, cfg, repoPath, WithBranch("apple"))
WriteCommit(t, cfg, repoPath, WithParents(oid), WithBranch("master"))
return repo
@@ -143,14 +147,14 @@ func testRepositoryGetDefaultBranch(t *testing.T, cfg config.Cfg, getRepository
{
desc: "no branches",
repo: func(t *testing.T) git.Repository {
- repo, _ := getRepository(ctx, t, false)
+ repo, _ := getRepository(ctx, t)
return repo
},
},
{
desc: "one branch",
repo: func(t *testing.T) git.Repository {
- repo, repoPath := getRepository(ctx, t, false)
+ repo, repoPath := getRepository(ctx, t)
WriteCommit(t, cfg, repoPath, WithBranch("apple"))
return repo
},
@@ -159,7 +163,7 @@ func testRepositoryGetDefaultBranch(t *testing.T, cfg config.Cfg, getRepository
{
desc: "no default branches",
repo: func(t *testing.T) git.Repository {
- repo, repoPath := getRepository(ctx, t, false)
+ repo, repoPath := getRepository(ctx, t)
oid := WriteCommit(t, cfg, repoPath, WithBranch("apple"))
WriteCommit(t, cfg, repoPath, WithParents(oid), WithBranch("banana"))
return repo
@@ -167,19 +171,13 @@ func testRepositoryGetDefaultBranch(t *testing.T, cfg config.Cfg, getRepository
expectedName: git.NewReferenceNameFromBranchName("apple"),
},
{
- desc: "test repo default",
- repo: func(t *testing.T) git.Repository {
- repo, _ := getRepository(ctx, t, true)
- return repo
- },
- expectedName: git.LegacyDefaultRef,
- },
- {
desc: "test repo HEAD set",
repo: func(t *testing.T) git.Repository {
- repo, repoPath := getRepository(ctx, t, true)
- Exec(t, cfg, "-C", repoPath, "update-ref", "refs/heads/feature", testOID)
+ repo, repoPath := getRepository(ctx, t)
+
+ WriteCommit(t, cfg, repoPath, WithBranch("feature"))
Exec(t, cfg, "-C", repoPath, "symbolic-ref", "HEAD", "refs/heads/feature")
+
return repo
},
expectedName: git.NewReferenceNameFromBranchName("feature"),
diff --git a/internal/git/localrepo/repo_test.go b/internal/git/localrepo/repo_test.go
index 8d68dc821..bdfa53ed7 100644
--- a/internal/git/localrepo/repo_test.go
+++ b/internal/git/localrepo/repo_test.go
@@ -24,24 +24,15 @@ import (
func TestRepo(t *testing.T) {
cfg := testcfg.Build(t)
- gittest.TestRepository(t, cfg, func(ctx context.Context, t testing.TB, seeded bool) (git.Repository, string) {
+ gittest.TestRepository(t, cfg, func(ctx context.Context, t testing.TB) (git.Repository, string) {
t.Helper()
- var (
- pbRepo *gitalypb.Repository
- repoPath string
- )
-
- if seeded {
- pbRepo, repoPath = gittest.CloneRepo(t, cfg, cfg.Storages[0])
- } else {
- pbRepo, repoPath = gittest.InitRepo(t, cfg, cfg.Storages[0])
- }
+ repoProto, repoPath := gittest.InitRepo(t, cfg, cfg.Storages[0])
gitCmdFactory := gittest.NewCommandFactory(t, cfg)
catfileCache := catfile.NewCache(cfg)
t.Cleanup(catfileCache.Stop)
- return New(config.NewLocator(cfg), gitCmdFactory, catfileCache, pbRepo), repoPath
+ return New(config.NewLocator(cfg), gitCmdFactory, catfileCache, repoProto), repoPath
})
}
diff --git a/internal/git/remoterepo/repository_test.go b/internal/git/remoterepo/repository_test.go
index d99af35f3..7057718bb 100644
--- a/internal/git/remoterepo/repository_test.go
+++ b/internal/git/remoterepo/repository_test.go
@@ -55,22 +55,15 @@ func TestRepository(t *testing.T) {
pool := client.NewPool()
defer pool.Close()
- gittest.TestRepository(t, cfg, func(ctx context.Context, t testing.TB, seeded bool) (git.Repository, string) {
+ gittest.TestRepository(t, cfg, func(ctx context.Context, t testing.TB) (git.Repository, string) {
t.Helper()
- seed := ""
- if seeded {
- seed = gittest.SeedGitLabTest
- }
-
ctx, err := storage.InjectGitalyServers(ctx, "default", cfg.SocketPath, cfg.Auth.Token)
require.NoError(t, err)
- pbRepo, repoPath := gittest.CreateRepository(ctx, t, cfg, gittest.CreateRepositoryConfig{
- Seed: seed,
- })
+ repoProto, repoPath := gittest.CreateRepository(ctx, t, cfg)
- repo, err := remoterepo.New(metadata.OutgoingToIncoming(ctx), pbRepo, pool)
+ repo, err := remoterepo.New(metadata.OutgoingToIncoming(ctx), repoProto, pool)
require.NoError(t, err)
return repo, repoPath
})