diff options
author | Pavlo Strokov <pstrokov@gitlab.com> | 2021-04-27 19:23:28 +0300 |
---|---|---|
committer | Pavlo Strokov <pstrokov@gitlab.com> | 2021-04-29 22:13:52 +0300 |
commit | 89ccf01817e30f8ea7fc072ff69d152209654274 (patch) | |
tree | f8dbd18ab3654f4f7f486bc3dff04ff6870d985b | |
parent | e0c4194d510e4fa60fbdc026d3734b462c2a6220 (diff) |
Replace MustRunCommand with Exec|ExecStream in TestDeltaIslands
Usages of the MustRunCommand replaced with Exec or ExecStream
in order to break dependency on the global config.Config variable.
Part of: https://gitlab.com/gitlab-org/gitaly/-/issues/2699
-rw-r--r-- | internal/git/gittest/delta_islands.go | 34 | ||||
-rw-r--r-- | internal/git/objectpool/fetch_test.go | 2 | ||||
-rw-r--r-- | internal/gitaly/service/repository/gc_test.go | 4 | ||||
-rw-r--r-- | internal/gitaly/service/repository/repack_test.go | 4 |
4 files changed, 22 insertions, 22 deletions
diff --git a/internal/git/gittest/delta_islands.go b/internal/git/gittest/delta_islands.go index 4d1aab9e6..51073f529 100644 --- a/internal/git/gittest/delta_islands.go +++ b/internal/git/gittest/delta_islands.go @@ -12,12 +12,12 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "gitlab.com/gitlab-org/gitaly/internal/git" - "gitlab.com/gitlab-org/gitaly/internal/testhelper" + "gitlab.com/gitlab-org/gitaly/internal/gitaly/config" ) // TestDeltaIslands is based on the tests in // https://github.com/git/git/blob/master/t/t5320-delta-islands.sh . -func TestDeltaIslands(t *testing.T, repoPath string, repack func() error) { +func TestDeltaIslands(t *testing.T, cfg config.Cfg, repoPath string, repack func() error) { // Create blobs that we expect Git to use delta compression on. blob1, err := ioutil.ReadAll(io.LimitReader(rand.Reader, 100000)) require.NoError(t, err) @@ -27,49 +27,49 @@ func TestDeltaIslands(t *testing.T, repoPath string, repack func() error) { // Assume Git prefers the largest blob as the delta base. badBlob := append(blob2, "\nbad blob"...) - blob1ID := commitBlob(t, repoPath, "refs/heads/branch1", blob1) - blob2ID := commitBlob(t, repoPath, "refs/tags/tag2", blob2) + blob1ID := commitBlob(t, cfg, repoPath, "refs/heads/branch1", blob1) + blob2ID := commitBlob(t, cfg, repoPath, "refs/tags/tag2", blob2) // The bad blob will only be reachable via a non-standard ref. Because of // that it should be excluded from delta chains in the main island. - badBlobID := commitBlob(t, repoPath, "refs/bad/ref3", badBlob) + badBlobID := commitBlob(t, cfg, repoPath, "refs/bad/ref3", badBlob) // So far we have create blobs and commits but they will be in loose // object files; we want them to be delta compressed. Run repack to make // that happen. - testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "repack", "-ad") + Exec(t, cfg, "-C", repoPath, "repack", "-ad") - assert.Equal(t, badBlobID, deltaBase(t, repoPath, blob1ID), "expect blob 1 delta base to be bad blob after test setup") - assert.Equal(t, badBlobID, deltaBase(t, repoPath, blob2ID), "expect blob 2 delta base to be bad blob after test setup") + assert.Equal(t, badBlobID, deltaBase(t, cfg, repoPath, blob1ID), "expect blob 1 delta base to be bad blob after test setup") + assert.Equal(t, badBlobID, deltaBase(t, cfg, repoPath, blob2ID), "expect blob 2 delta base to be bad blob after test setup") require.NoError(t, repack(), "repack after delta island setup") - assert.Equal(t, blob2ID, deltaBase(t, repoPath, blob1ID), "blob 1 delta base should be blob 2 after repack") + assert.Equal(t, blob2ID, deltaBase(t, cfg, repoPath, blob1ID), "blob 1 delta base should be blob 2 after repack") // blob2 is the bigger of the two so it should be the delta base - assert.Equal(t, git.ZeroOID.String(), deltaBase(t, repoPath, blob2ID), "blob 2 should not be delta compressed after repack") + assert.Equal(t, git.ZeroOID.String(), deltaBase(t, cfg, repoPath, blob2ID), "blob 2 should not be delta compressed after repack") } -func commitBlob(t *testing.T, repoPath, ref string, content []byte) string { - hashObjectOut := testhelper.MustRunCommand(t, bytes.NewReader(content), "git", "-C", repoPath, "hash-object", "-w", "--stdin") +func commitBlob(t *testing.T, cfg config.Cfg, repoPath, ref string, content []byte) string { + hashObjectOut := ExecStream(t, cfg, bytes.NewReader(content), "-C", repoPath, "hash-object", "-w", "--stdin") blobID := chompToString(hashObjectOut) treeSpec := fmt.Sprintf("100644 blob %s\tfile\n", blobID) - mktreeOut := testhelper.MustRunCommand(t, strings.NewReader(treeSpec), "git", "-C", repoPath, "mktree") + mktreeOut := ExecStream(t, cfg, strings.NewReader(treeSpec), "-C", repoPath, "mktree") treeID := chompToString(mktreeOut) // No parent, that means this will be an initial commit. Not very // realistic but it doesn't matter for delta compression. - commitTreeOut := testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "commit-tree", "-m", "msg", treeID) + commitTreeOut := Exec(t, cfg, "-C", repoPath, "commit-tree", "-m", "msg", treeID) commitID := chompToString(commitTreeOut) - testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "update-ref", ref, commitID) + Exec(t, cfg, "-C", repoPath, "update-ref", ref, commitID) return blobID } -func deltaBase(t *testing.T, repoPath string, blobID string) string { - catfileOut := testhelper.MustRunCommand(t, strings.NewReader(blobID), "git", "-C", repoPath, "cat-file", "--batch-check=%(deltabase)") +func deltaBase(t *testing.T, cfg config.Cfg, repoPath string, blobID string) string { + catfileOut := ExecStream(t, cfg, strings.NewReader(blobID), "-C", repoPath, "cat-file", "--batch-check=%(deltabase)") return chompToString(catfileOut) } diff --git a/internal/git/objectpool/fetch_test.go b/internal/git/objectpool/fetch_test.go index 229b84de7..81304361a 100644 --- a/internal/git/objectpool/fetch_test.go +++ b/internal/git/objectpool/fetch_test.go @@ -91,7 +91,7 @@ func TestFetchFromOriginDeltaIslands(t *testing.T) { require.NoError(t, pool.FetchFromOrigin(ctx, testRepo), "seed pool") require.NoError(t, pool.Link(ctx, testRepo)) - gittest.TestDeltaIslands(t, testRepoPath, func() error { + gittest.TestDeltaIslands(t, pool.cfg, testRepoPath, func() error { // This should create a new packfile with good delta chains in the pool if err := pool.FetchFromOrigin(ctx, testRepo); err != nil { return err diff --git a/internal/gitaly/service/repository/gc_test.go b/internal/gitaly/service/repository/gc_test.go index fc554dd04..897e26bc3 100644 --- a/internal/gitaly/service/repository/gc_test.go +++ b/internal/gitaly/service/repository/gc_test.go @@ -316,12 +316,12 @@ func mustCreateFileWithTimes(t testing.TB, path string, mTime time.Time) { } func TestGarbageCollectDeltaIslands(t *testing.T) { - _, repo, repoPath, client := setupRepositoryService(t) + cfg, repo, repoPath, client := setupRepositoryService(t) ctx, cancel := testhelper.Context() defer cancel() - gittest.TestDeltaIslands(t, repoPath, func() error { + gittest.TestDeltaIslands(t, cfg, repoPath, func() error { _, err := client.GarbageCollect(ctx, &gitalypb.GarbageCollectRequest{Repository: repo}) return err }) diff --git a/internal/gitaly/service/repository/repack_test.go b/internal/gitaly/service/repository/repack_test.go index e49ee8d2b..a5d110931 100644 --- a/internal/gitaly/service/repository/repack_test.go +++ b/internal/gitaly/service/repository/repack_test.go @@ -224,12 +224,12 @@ func TestRepackFullFailure(t *testing.T) { } func TestRepackFullDeltaIslands(t *testing.T) { - _, repo, repoPath, client := setupRepositoryService(t) + cfg, repo, repoPath, client := setupRepositoryService(t) ctx, cancel := testhelper.Context() defer cancel() - gittest.TestDeltaIslands(t, repoPath, func() error { + gittest.TestDeltaIslands(t, cfg, repoPath, func() error { _, err := client.RepackFull(ctx, &gitalypb.RepackFullRequest{Repository: repo}) return err }) |