diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2021-03-15 16:30:26 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2021-03-15 16:30:26 +0300 |
commit | 0fc3e28a00fe119679257707dadfb1b9e3354b28 (patch) | |
tree | b5e2eceac30fb9623e56b834ce0152c6b12cc4b6 | |
parent | 64df0089888030a60286ac176071d62a45684e9c (diff) | |
parent | a8a3ee6b046f7ec850f2a1752d850cd056f59880 (diff) |
Merge branch 'smh-remove-deferrer' into 'master'
Replace testhelper.Deferrer with t.Cleanup
See merge request gitlab-org/gitaly!3250
50 files changed, 197 insertions, 521 deletions
diff --git a/internal/cache/cachedb_test.go b/internal/cache/cachedb_test.go index 9ee64c33b..184305600 100644 --- a/internal/cache/cachedb_test.go +++ b/internal/cache/cachedb_test.go @@ -32,8 +32,7 @@ func testMain(m *testing.M) int { } func TestStreamDBNaiveKeyer(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) testRepo1, _, _ := gittest.CloneRepoAtStorage(t, cfg.Storages[0], "repository-1") testRepo2, _, _ := gittest.CloneRepoAtStorage(t, cfg.Storages[0], "repository-2") diff --git a/internal/cache/walker_test.go b/internal/cache/walker_test.go index 6c2a35174..1c7139ba0 100644 --- a/internal/cache/walker_test.go +++ b/internal/cache/walker_test.go @@ -16,8 +16,7 @@ import ( ) func TestDiskCacheObjectWalker(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) var shouldExist, shouldNotExist []string @@ -71,8 +70,7 @@ func TestDiskCacheObjectWalker(t *testing.T) { } func TestDiskCacheInitialClear(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) cacheDir := tempdir.CacheDir(cfg.Storages[0]) diff --git a/internal/git/catfile/batch_test.go b/internal/git/catfile/batch_test.go index 448382fbe..570e878d5 100644 --- a/internal/git/catfile/batch_test.go +++ b/internal/git/catfile/batch_test.go @@ -21,28 +21,22 @@ import ( "google.golang.org/grpc/metadata" ) -func setupBatch(t *testing.T, ctx context.Context) (Batch, testhelper.Cleanup) { +func setupBatch(t *testing.T, ctx context.Context) Batch { t.Helper() - var deferrer testhelper.Deferrer - defer deferrer.Call() - - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - deferrer.Add(cleanup) + cfg, repo, _ := testcfg.BuildWithRepo(t) c, err := New(ctx, git.NewExecCommandFactory(cfg), repo) require.NoError(t, err) - cleaner := deferrer.Relocate() - return c, cleaner.Call + return c } func TestInfo(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - c, cleanup := setupBatch(t, ctx) - defer cleanup() + c := setupBatch(t, ctx) testCases := []struct { desc string @@ -74,8 +68,7 @@ func TestBlob(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - c, cleanup := setupBatch(t, ctx) - defer cleanup() + c := setupBatch(t, ctx) gitignoreBytes, err := ioutil.ReadFile("testdata/blob-dfaa3f97ca337e20154a98ac9d0be76ddd1fcc82") require.NoError(t, err) @@ -138,8 +131,7 @@ func TestCommit(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - c, cleanup := setupBatch(t, ctx) - defer cleanup() + c := setupBatch(t, ctx) commitBytes, err := ioutil.ReadFile("testdata/commit-e63f41fe459e62e1228fcef60d7189127aeba95a") require.NoError(t, err) @@ -173,8 +165,7 @@ func TestTag(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - c, cleanup := setupBatch(t, ctx) - defer cleanup() + c := setupBatch(t, ctx) tagBytes, err := ioutil.ReadFile("testdata/tag-a509fa67c27202a2bc9dd5e014b4af7e6063ac76") require.NoError(t, err) @@ -237,8 +228,7 @@ func TestTree(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - c, cleanup := setupBatch(t, ctx) - defer cleanup() + c := setupBatch(t, ctx) treeBytes, err := ioutil.ReadFile("testdata/tree-7e2f26d033ee47cd0745649d1a28277c56197921") require.NoError(t, err) @@ -301,8 +291,7 @@ func TestRepeatedCalls(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - c, cleanup := setupBatch(t, ctx) - defer cleanup() + c := setupBatch(t, ctx) treeOid := git.Revision("7e2f26d033ee47cd0745649d1a28277c56197921") treeBytes, err := ioutil.ReadFile("testdata/tree-7e2f26d033ee47cd0745649d1a28277c56197921") @@ -360,8 +349,7 @@ func TestSpawnFailure(t *testing.T) { ctx1, cancel1 := testhelper.Context() defer cancel1() - cfg, testRepo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, testRepo, _ := testcfg.BuildWithRepo(t) gitCmdFactory := git.NewExecCommandFactory(cfg) diff --git a/internal/git/command_factory_test.go b/internal/git/command_factory_test.go index 6d00eff9d..127936180 100644 --- a/internal/git/command_factory_test.go +++ b/internal/git/command_factory_test.go @@ -16,8 +16,7 @@ import ( ) func TestGitCommandProxy(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) requestReceived := false @@ -49,8 +48,7 @@ func TestGitCommandProxy(t *testing.T) { } func TestExecCommandFactory_NewWithDir(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) gitCmdFactory := git.NewExecCommandFactory(cfg) diff --git a/internal/git/hooks_options_test.go b/internal/git/hooks_options_test.go index a9feb3367..cb3d0b453 100644 --- a/internal/git/hooks_options_test.go +++ b/internal/git/hooks_options_test.go @@ -12,8 +12,7 @@ import ( ) func TestWithRefHook(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/git/hooks_payload_test.go b/internal/git/hooks_payload_test.go index a19ef5797..6baba418a 100644 --- a/internal/git/hooks_payload_test.go +++ b/internal/git/hooks_payload_test.go @@ -11,8 +11,7 @@ import ( ) func TestHooksPayload(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) tx := metadata.Transaction{ ID: 1234, @@ -123,8 +122,7 @@ func TestHooksPayload(t *testing.T) { }) t.Run("payload with fallback git path", func(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) cfg.Git.BinPath = "" env, err := git.NewHooksPayload(cfg, repo, nil, nil, nil, git.ReceivePackHooks).Env() diff --git a/internal/git/housekeeping/housekeeping_test.go b/internal/git/housekeeping/housekeeping_test.go index ffdd068a7..3e8457294 100644 --- a/internal/git/housekeeping/housekeeping_test.go +++ b/internal/git/housekeeping/housekeeping_test.go @@ -200,8 +200,7 @@ func TestPerform(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { - cfg, repoProto, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, repoPath := testcfg.BuildWithRepo(t) repo := localrepo.New(git.NewExecCommandFactory(cfg), repoProto, cfg) ctx, cancel := testhelper.Context() @@ -287,8 +286,7 @@ func TestPerform_references(t *testing.T) { for _, tc := range testcases { t.Run(tc.desc, func(t *testing.T) { - cfg, repoProto, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, repoPath := testcfg.BuildWithRepo(t) repo := localrepo.New(git.NewExecCommandFactory(cfg), repoProto, cfg) for _, ref := range tc.refs { @@ -396,8 +394,7 @@ func TestPerform_emptyRefDirs(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { - cfg, repoProto, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, repoPath := testcfg.BuildWithRepo(t) repo := localrepo.New(git.NewExecCommandFactory(cfg), repoProto, cfg) ctx, cancel := testhelper.Context() @@ -431,8 +428,7 @@ func testPerformWithSpecificFile(t *testing.T, file string, finder staleFileFind ctx, cancel := testhelper.Context() defer cancel() - cfg, repoProto, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, repoPath := testcfg.BuildWithRepo(t) repo := localrepo.New(git.NewExecCommandFactory(cfg), repoProto, cfg) for _, tc := range []struct { @@ -546,8 +542,7 @@ func TestPerform_referenceLocks(t *testing.T) { }, } { t.Run(tc.desc, func(t *testing.T) { - cfg, repoProto, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, repoPath := testcfg.BuildWithRepo(t) repo := localrepo.New(git.NewExecCommandFactory(cfg), repoProto, cfg) for _, e := range tc.entries { @@ -650,23 +645,19 @@ func TestShouldRemoveTemporaryObject(t *testing.T) { } func TestPerformRepoDoesNotExist(t *testing.T) { - cfg, repoProto, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, repoPath := testcfg.BuildWithRepo(t) repo := localrepo.New(git.NewExecCommandFactory(cfg), repoProto, cfg) ctx, cancel := testhelper.Context() defer cancel() - // We call `cleanup()` early to make sure the repository doesn't exist anymore in an - // otherwise well-configured storage. - cleanup() + require.NoError(t, os.RemoveAll(repoPath)) require.NoError(t, Perform(ctx, repo)) } func TestPerform_UnsetConfiguration(t *testing.T) { - cfg, repoProto, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, _ := testcfg.BuildWithRepo(t) repo := localrepo.New(git.NewExecCommandFactory(cfg), repoProto, cfg) ctx, cancel := testhelper.Context() diff --git a/internal/git/localrepo/config_test.go b/internal/git/localrepo/config_test.go index 67cb9d92e..f945c4e6a 100644 --- a/internal/git/localrepo/config_test.go +++ b/internal/git/localrepo/config_test.go @@ -16,22 +16,16 @@ import ( "gitlab.com/gitlab-org/gitaly/internal/testhelper/testcfg" ) -func setupRepoConfig(t *testing.T) (Config, string, func()) { +func setupRepoConfig(t *testing.T) (Config, string) { t.Helper() - var deferrer testhelper.Deferrer - defer deferrer.Call() - - cfg, cleanup := testcfg.Build(t) - deferrer.Add(cleanup) + cfg := testcfg.Build(t) repoProto, repoPath, cleanup := gittest.InitBareRepoAt(t, cfg.Storages[0]) - deferrer.Add(cleanup) + t.Cleanup(cleanup) repo := New(git.NewExecCommandFactory(cfg), repoProto, cfg) - - cleaner := deferrer.Relocate() - return repo.Config(), repoPath, cleaner.Call + return repo.Config(), repoPath } func TestRepo_Config(t *testing.T) { @@ -69,8 +63,7 @@ func TestConfig_Add(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repoConfig, repoPath, cleanup := setupRepoConfig(t) - defer cleanup() + repoConfig, repoPath := setupRepoConfig(t) t.Run("ok", func(t *testing.T) { require.NoError(t, repoConfig.Add(ctx, "key.one", "1", git.ConfigAddOpts{})) @@ -164,8 +157,7 @@ func TestConfig_GetRegexp(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repoConfig, repoPath, cleanup := setupRepoConfig(t) - defer cleanup() + repoConfig, repoPath := setupRepoConfig(t) t.Run("ok", func(t *testing.T) { testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "config", "--add", "key.one", "one") @@ -272,8 +264,7 @@ func TestConfig_UnsetAll(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repoConfig, repoPath, cleanup := setupRepoConfig(t) - defer cleanup() + repoConfig, repoPath := setupRepoConfig(t) t.Run("unset single value", func(t *testing.T) { testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "config", "--add", "key.one", "key-one") diff --git a/internal/git/localrepo/objects_test.go b/internal/git/localrepo/objects_test.go index ef293ef93..a25305ba7 100644 --- a/internal/git/localrepo/objects_test.go +++ b/internal/git/localrepo/objects_test.go @@ -21,28 +21,22 @@ import ( "gitlab.com/gitlab-org/gitaly/proto/go/gitalypb" ) -func setupRepo(t *testing.T, bare bool) (*Repo, string, func()) { +func setupRepo(t *testing.T, bare bool) (*Repo, string) { t.Helper() - var deferrer testhelper.Deferrer - defer deferrer.Call() - - cfg, cleanup := testcfg.Build(t) - deferrer.Add(cleanup) + cfg := testcfg.Build(t) var repoProto *gitalypb.Repository var repoPath string + var repoCleanUp func() if bare { - repoProto, repoPath, cleanup = gittest.InitBareRepoAt(t, cfg.Storages[0]) + repoProto, repoPath, repoCleanUp = gittest.InitBareRepoAt(t, cfg.Storages[0]) } else { - repoProto, repoPath, cleanup = gittest.CloneRepoAtStorage(t, cfg.Storages[0], t.Name()) + repoProto, repoPath, repoCleanUp = gittest.CloneRepoAtStorage(t, cfg.Storages[0], t.Name()) } - deferrer.Add(cleanup) - - repo := New(git.NewExecCommandFactory(cfg), repoProto, cfg) + t.Cleanup(repoCleanUp) - cleaner := deferrer.Relocate() - return repo, repoPath, cleaner.Call + return New(git.NewExecCommandFactory(cfg), repoProto, cfg), repoPath } type ReaderFunc func([]byte) (int, error) @@ -53,8 +47,7 @@ func TestRepo_WriteBlob(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, repoPath, cleanup := setupRepo(t, true) - defer cleanup() + repo, repoPath := setupRepo(t, true) for _, tc := range []struct { desc string @@ -177,8 +170,7 @@ func TestRepo_WriteTag(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, repoPath, cleanup := setupRepo(t, false) - defer cleanup() + repo, repoPath := setupRepo(t, false) for _, tc := range []struct { desc string @@ -226,8 +218,7 @@ func TestRepo_ReadObject(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, _, cleanup := setupRepo(t, false) - defer cleanup() + repo, _ := setupRepo(t, false) for _, tc := range []struct { desc string @@ -259,8 +250,7 @@ func TestRepo_ReadCommit(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, _, cleanup := setupRepo(t, false) - defer cleanup() + repo, _ := setupRepo(t, false) for _, tc := range []struct { desc string @@ -398,8 +388,7 @@ func TestRepo_IsAncestor(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, _, cleanup := setupRepo(t, false) - defer cleanup() + repo, _ := setupRepo(t, false) for _, tc := range []struct { desc string diff --git a/internal/git/localrepo/refs_test.go b/internal/git/localrepo/refs_test.go index 89f0ff36d..cf91c7b65 100644 --- a/internal/git/localrepo/refs_test.go +++ b/internal/git/localrepo/refs_test.go @@ -22,8 +22,7 @@ func TestRepo_ContainsRef(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, _, cleanup := setupRepo(t, false) - defer cleanup() + repo, _ := setupRepo(t, false) testcases := []struct { desc string @@ -60,8 +59,7 @@ func TestRepo_GetReference(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, _, cleanup := setupRepo(t, false) - defer cleanup() + repo, _ := setupRepo(t, false) testcases := []struct { desc string @@ -109,8 +107,7 @@ func TestRepo_GetReferenceWithAmbiguousRefs(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, _, cleanup := setupRepo(t, false) - defer cleanup() + repo, _ := setupRepo(t, false) // Disable hooks repo.cfg.Ruby.Dir = "/var/empty" @@ -146,8 +143,7 @@ func TestRepo_GetReferences(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, _, cleanup := setupRepo(t, false) - defer cleanup() + repo, _ := setupRepo(t, false) masterBranch, err := repo.GetReference(ctx, "refs/heads/master") require.NoError(t, err) @@ -216,8 +212,7 @@ func TestRepo_GetRemoteReferences(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - cfg, clean := testcfg.Build(t) - defer clean() + cfg := testcfg.Build(t) storagePath, ok := cfg.StoragePath("default") require.True(t, ok) @@ -288,8 +283,7 @@ func TestRepo_GetBranches(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, _, cleanup := setupRepo(t, false) - defer cleanup() + repo, _ := setupRepo(t, false) refs, err := repo.GetBranches(ctx) require.NoError(t, err) @@ -300,8 +294,7 @@ func TestRepo_UpdateRef(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - repo, _, cleanup := setupRepo(t, false) - defer cleanup() + repo, _ := setupRepo(t, false) // Disable hooks repo.cfg.Ruby.Dir = "/var/empty" diff --git a/internal/git/localrepo/remote_test.go b/internal/git/localrepo/remote_test.go index 009cf205a..453d0b045 100644 --- a/internal/git/localrepo/remote_test.go +++ b/internal/git/localrepo/remote_test.go @@ -19,29 +19,24 @@ import ( "gitlab.com/gitlab-org/gitaly/proto/go/gitalypb" ) -func setupRepoRemote(t *testing.T, bare bool) (Remote, string, func()) { +func setupRepoRemote(t *testing.T, bare bool) (Remote, string) { t.Helper() - var deferrer testhelper.Deferrer - defer deferrer.Call() - - cfg, cleanup := testcfg.Build(t) - deferrer.Add(cleanup) + cfg := testcfg.Build(t) cfg.Ruby.Dir = "/var/empty" var repoProto *gitalypb.Repository var repoPath string + var repoCleanUp func() if bare { - repoProto, repoPath, cleanup = gittest.InitBareRepoAt(t, cfg.Storages[0]) + repoProto, repoPath, repoCleanUp = gittest.InitBareRepoAt(t, cfg.Storages[0]) } else { - repoProto, repoPath, cleanup = gittest.CloneRepoAtStorage(t, cfg.Storages[0], t.Name()) + repoProto, repoPath, repoCleanUp = gittest.CloneRepoAtStorage(t, cfg.Storages[0], t.Name()) } - deferrer.Add(cleanup) - repo := New(git.NewExecCommandFactory(cfg), repoProto, cfg) + t.Cleanup(repoCleanUp) - cleaner := deferrer.Relocate() - return repo.Remote(), repoPath, cleaner.Call + return New(git.NewExecCommandFactory(cfg), repoProto, cfg).Remote(), repoPath } func TestRepo_Remote(t *testing.T) { @@ -95,8 +90,7 @@ func TestRemote_Add(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - remote, repoPath, cleanup := setupRepoRemote(t, false) - defer cleanup() + remote, repoPath := setupRepoRemote(t, false) testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "remote", "remove", "origin") @@ -170,8 +164,7 @@ func TestRemote_Remove(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - remote, repoPath, cleanup := setupRepoRemote(t, true) - defer cleanup() + remote, repoPath := setupRepoRemote(t, true) t.Run("ok", func(t *testing.T) { testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "remote", "add", "first", "http://some.com.git") @@ -195,8 +188,7 @@ func TestRemote_Remove(t *testing.T) { }) t.Run("don't remove local branches", func(t *testing.T) { - remote, repoPath, cleanup := setupRepoRemote(t, false) - defer cleanup() + remote, repoPath := setupRepoRemote(t, false) // configure remote as fetch mirror testhelper.MustRunCommand(t, nil, "git", "-C", repoPath, "config", "remote.origin.fetch", "+refs/*:refs/*") @@ -218,8 +210,7 @@ func TestRemote_Exists(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - remote, _, cleanup := setupRepoRemote(t, false) - defer cleanup() + remote, _ := setupRepoRemote(t, false) found, err := remote.Exists(ctx, "origin") require.NoError(t, err) @@ -256,8 +247,7 @@ func TestRemote_SetURL(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - remote, repoPath, cleanup := setupRepoRemote(t, true) - defer cleanup() + remote, repoPath := setupRepoRemote(t, true) t.Run("invalid argument", func(t *testing.T) { for _, tc := range []struct { @@ -310,8 +300,7 @@ func TestRepo_FetchRemote(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - remoteCmd, remoteRepoPath, cleanup := setupRepoRemote(t, false) - defer cleanup() + remoteCmd, remoteRepoPath := setupRepoRemote(t, false) cfg := remoteCmd.repo.cfg initBareWithRemote := func(t *testing.T, remote string) (*Repo, string, testhelper.Cleanup) { diff --git a/internal/git/localrepo/repo_test.go b/internal/git/localrepo/repo_test.go index 0f93fa947..67da2ac34 100644 --- a/internal/git/localrepo/repo_test.go +++ b/internal/git/localrepo/repo_test.go @@ -14,8 +14,7 @@ import ( ) func TestRepo(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) gittest.TestRepository(t, cfg, func(t testing.TB, pbRepo *gitalypb.Repository) git.Repository { t.Helper() @@ -25,8 +24,7 @@ func TestRepo(t *testing.T) { func TestRepo_Path(t *testing.T) { t.Run("valid repository", func(t *testing.T) { - cfg, repoProto, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, repoPath := testcfg.BuildWithRepo(t) repo := New(git.NewExecCommandFactory(cfg), repoProto, cfg) path, err := repo.Path() @@ -35,19 +33,17 @@ func TestRepo_Path(t *testing.T) { }) t.Run("deleted repository", func(t *testing.T) { - cfg, repoProto, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, repoPath := testcfg.BuildWithRepo(t) repo := New(git.NewExecCommandFactory(cfg), repoProto, cfg) - cleanup() + require.NoError(t, os.RemoveAll(repoPath)) _, err := repo.Path() require.Equal(t, codes.NotFound, helper.GrpcCode(err)) }) t.Run("non-git repository", func(t *testing.T) { - cfg, repoProto, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repoProto, repoPath := testcfg.BuildWithRepo(t) repo := New(git.NewExecCommandFactory(cfg), repoProto, cfg) // Recreate the repository as a simple empty directory to simulate diff --git a/internal/git/log/commit_test.go b/internal/git/log/commit_test.go index f9b9580dc..918308dde 100644 --- a/internal/git/log/commit_test.go +++ b/internal/git/log/commit_test.go @@ -28,20 +28,15 @@ func testMain(m *testing.M) int { return m.Run() } -func setupBatch(t *testing.T, ctx context.Context) (config.Cfg, catfile.Batch, *gitalypb.Repository, testhelper.Cleanup) { +func setupBatch(t *testing.T, ctx context.Context) (config.Cfg, catfile.Batch, *gitalypb.Repository) { t.Helper() - var deferrer testhelper.Deferrer - defer deferrer.Call() - - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - deferrer.Add(cleanup) + cfg, repo, _ := testcfg.BuildWithRepo(t) c, err := catfile.New(ctx, git.NewExecCommandFactory(cfg), repo) require.NoError(t, err) - cleaner := deferrer.Relocate() - return cfg, c, repo, cleaner.Call + return cfg, c, repo } func TestParseRawCommit(t *testing.T) { @@ -141,8 +136,7 @@ func TestGetCommitCatfile(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - _, c, _, cleanup := setupBatch(t, ctx) - defer cleanup() + _, c, _ := setupBatch(t, ctx) ctx = metadata.NewIncomingContext(ctx, metadata.MD{}) @@ -189,8 +183,7 @@ func TestGetCommitCatfileWithTrailers(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - cfg, c, testRepo, cleanup := setupBatch(t, ctx) - defer cleanup() + cfg, c, testRepo := setupBatch(t, ctx) ctx = metadata.NewIncomingContext(ctx, metadata.MD{}) diff --git a/internal/git/log/tag_test.go b/internal/git/log/tag_test.go index 72801ea48..8065816a9 100644 --- a/internal/git/log/tag_test.go +++ b/internal/git/log/tag_test.go @@ -18,8 +18,7 @@ func TestGetTag(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - cfg, c, testRepo, cleanup := setupBatch(t, ctx) - defer cleanup() + cfg, c, testRepo := setupBatch(t, ctx) testRepoPath := filepath.Join(cfg.Storages[0].Path, testRepo.RelativePath) diff --git a/internal/git/objectpool/clone_test.go b/internal/git/objectpool/clone_test.go index 25f59eac8..4cd5b4c68 100644 --- a/internal/git/objectpool/clone_test.go +++ b/internal/git/objectpool/clone_test.go @@ -14,33 +14,27 @@ import ( "gitlab.com/gitlab-org/gitaly/proto/go/gitalypb" ) -func setupObjectPool(t *testing.T) (*ObjectPool, *gitalypb.Repository, func()) { +func setupObjectPool(t *testing.T) (*ObjectPool, *gitalypb.Repository) { t.Helper() - var deferrer testhelper.Deferrer - defer deferrer.Call() - - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - deferrer.Add(cleanup) + cfg, repo, _ := testcfg.BuildWithRepo(t) pool, err := NewObjectPool(cfg, config.NewLocator(cfg), git.NewExecCommandFactory(cfg), repo.GetStorageName(), gittest.NewObjectPoolName(t)) require.NoError(t, err) - deferrer.Add(func() { + t.Cleanup(func() { if err := pool.Remove(context.TODO()); err != nil { panic(err) } }) - cleaner := deferrer.Relocate() - return pool, repo, cleaner.Call + return pool, repo } func TestClone(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) require.NoError(t, pool.clone(ctx, testRepo)) defer pool.Remove(ctx) @@ -53,8 +47,7 @@ func TestCloneExistingPool(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) require.NoError(t, pool.clone(ctx, testRepo)) defer pool.Remove(ctx) diff --git a/internal/git/objectpool/fetch_test.go b/internal/git/objectpool/fetch_test.go index bc3ae9834..229b84de7 100644 --- a/internal/git/objectpool/fetch_test.go +++ b/internal/git/objectpool/fetch_test.go @@ -17,8 +17,7 @@ func TestFetchFromOriginDangling(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) require.NoError(t, pool.FetchFromOrigin(ctx, testRepo), "seed pool") @@ -86,8 +85,7 @@ func TestFetchFromOriginDeltaIslands(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) testRepoPath := filepath.Join(pool.cfg.Storages[0].Path, testRepo.RelativePath) require.NoError(t, pool.FetchFromOrigin(ctx, testRepo), "seed pool") @@ -110,8 +108,7 @@ func TestFetchFromOriginBitmapHashCache(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) require.NoError(t, pool.FetchFromOrigin(ctx, testRepo), "seed pool") @@ -136,8 +133,7 @@ func TestFetchFromOriginRefUpdates(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) testRepoPath := filepath.Join(pool.cfg.Storages[0].Path, testRepo.RelativePath) poolPath := pool.FullPath() diff --git a/internal/git/objectpool/link_test.go b/internal/git/objectpool/link_test.go index 08fe1f08c..faa8dd1f7 100644 --- a/internal/git/objectpool/link_test.go +++ b/internal/git/objectpool/link_test.go @@ -16,8 +16,7 @@ func TestLink(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) require.NoError(t, pool.Remove(ctx), "make sure pool does not exist prior to creation") require.NoError(t, pool.Create(ctx, testRepo), "create pool") @@ -50,8 +49,7 @@ func TestLinkRemoveBitmap(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) require.NoError(t, pool.Init(ctx)) testRepoPath := filepath.Join(pool.cfg.Storages[0].Path, testRepo.RelativePath) @@ -96,8 +94,7 @@ func TestUnlink(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) require.Error(t, pool.Unlink(ctx, testRepo), "removing a non-existing pool should be an error") @@ -114,8 +111,7 @@ func TestLinkAbsoluteLinkExists(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) testRepoPath := filepath.Join(pool.cfg.Storages[0].Path, testRepo.RelativePath) diff --git a/internal/git/objectpool/pool_test.go b/internal/git/objectpool/pool_test.go index 83a1f456c..54afde019 100644 --- a/internal/git/objectpool/pool_test.go +++ b/internal/git/objectpool/pool_test.go @@ -16,8 +16,7 @@ import ( ) func TestNewObjectPool(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) locator := config.NewLocator(cfg) @@ -32,8 +31,7 @@ func TestNewFromRepoSuccess(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) require.NoError(t, pool.Create(ctx, testRepo)) require.NoError(t, pool.Link(ctx, testRepo)) @@ -45,8 +43,7 @@ func TestNewFromRepoSuccess(t *testing.T) { } func TestNewFromRepoNoObjectPool(t *testing.T) { - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) testRepoPath := filepath.Join(pool.cfg.Storages[0].Path, testRepo.RelativePath) @@ -97,8 +94,7 @@ func TestCreate(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) testRepoPath := filepath.Join(pool.cfg.Storages[0].Path, testRepo.RelativePath) @@ -131,8 +127,7 @@ func TestCreateSubDirsExist(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) err := pool.Create(ctx, testRepo) require.NoError(t, err) @@ -148,8 +143,7 @@ func TestRemove(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - pool, testRepo, cleanup := setupObjectPool(t) - defer cleanup() + pool, testRepo := setupObjectPool(t) err := pool.Create(ctx, testRepo) require.NoError(t, err) diff --git a/internal/git/reference_test.go b/internal/git/reference_test.go index 6e9683338..47ce72e8c 100644 --- a/internal/git/reference_test.go +++ b/internal/git/reference_test.go @@ -10,8 +10,7 @@ import ( ) func TestCheckRefFormat(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/git/remoterepo/repository_test.go b/internal/git/remoterepo/repository_test.go index ca1996ede..01413e77b 100644 --- a/internal/git/remoterepo/repository_test.go +++ b/internal/git/remoterepo/repository_test.go @@ -16,8 +16,7 @@ import ( ) func TestRepository(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) serverSocketPath, cleanup := testserver.RunGitalyServer(t, cfg, nil) defer cleanup() diff --git a/internal/git/stats/analyzehttp_test.go b/internal/git/stats/analyzehttp_test.go index ab5e22e93..d4971a34b 100644 --- a/internal/git/stats/analyzehttp_test.go +++ b/internal/git/stats/analyzehttp_test.go @@ -14,8 +14,7 @@ import ( ) func TestClone(t *testing.T) { - cfg, _, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, _, repoPath := testcfg.BuildWithRepo(t) ctx, cancel := testhelper.Context() defer cancel() @@ -73,8 +72,7 @@ func TestClone(t *testing.T) { } func TestCloneWithAuth(t *testing.T) { - cfg, _, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, _, repoPath := testcfg.BuildWithRepo(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/git/stats/git_test.go b/internal/git/stats/git_test.go index 5a811b36a..bd9c76aa4 100644 --- a/internal/git/stats/git_test.go +++ b/internal/git/stats/git_test.go @@ -21,8 +21,7 @@ import ( ) func TestLogObjectInfo(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) repo1, repoPath1, cleanup1 := gittest.CloneRepoAtStorage(t, cfg.Storages[0], t.Name()+"-1") defer cleanup1() diff --git a/internal/git/stats/profile_test.go b/internal/git/stats/profile_test.go index 6ba41c568..25d6102ec 100644 --- a/internal/git/stats/profile_test.go +++ b/internal/git/stats/profile_test.go @@ -14,8 +14,7 @@ import ( ) func TestRepositoryProfile(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) testRepo, testRepoPath, cleanup := gittest.InitBareRepoAt(t, cfg.Storages[0]) defer cleanup() diff --git a/internal/git/updateref/updateref_test.go b/internal/git/updateref/updateref_test.go index 4d46ee2c7..8da1d1664 100644 --- a/internal/git/updateref/updateref_test.go +++ b/internal/git/updateref/updateref_test.go @@ -28,14 +28,10 @@ func testMain(m *testing.M) int { return m.Run() } -func setupUpdater(t *testing.T, ctx context.Context) (config.Cfg, *localrepo.Repo, *Updater, func()) { +func setupUpdater(t *testing.T, ctx context.Context) (config.Cfg, *localrepo.Repo, *Updater) { t.Helper() - var deferrer testhelper.Deferrer - defer deferrer.Call() - - cfg, protoRepo, _, cleanup := testcfg.BuildWithRepo(t) - deferrer.Add(cleanup) + cfg, protoRepo, _ := testcfg.BuildWithRepo(t) gitCmdFactory := git.NewExecCommandFactory(cfg) repo := localrepo.New(gitCmdFactory, protoRepo, cfg) @@ -43,16 +39,14 @@ func setupUpdater(t *testing.T, ctx context.Context) (config.Cfg, *localrepo.Rep updater, err := New(ctx, cfg, gitCmdFactory, repo) require.NoError(t, err) - cleaner := deferrer.Relocate() - return cfg, repo, updater, cleaner.Call + return cfg, repo, updater } func TestCreate(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - _, repo, updater, cleanup := setupUpdater(t, ctx) - defer cleanup() + _, repo, updater := setupUpdater(t, ctx) headCommit, err := repo.ReadCommit(ctx, "HEAD") require.NoError(t, err) @@ -73,8 +67,7 @@ func TestUpdate(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - _, repo, updater, cleanup := setupUpdater(t, ctx) - defer cleanup() + _, repo, updater := setupUpdater(t, ctx) headCommit, err := repo.ReadCommit(ctx, "HEAD") require.NoError(t, err) @@ -110,8 +103,7 @@ func TestDelete(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - _, repo, updater, cleanup := setupUpdater(t, ctx) - defer cleanup() + _, repo, updater := setupUpdater(t, ctx) ref := git.ReferenceName("refs/heads/feature") @@ -127,8 +119,7 @@ func TestBulkOperation(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - _, repo, updater, cleanup := setupUpdater(t, ctx) - defer cleanup() + _, repo, updater := setupUpdater(t, ctx) headCommit, err := repo.ReadCommit(ctx, "HEAD") require.NoError(t, err) @@ -149,8 +140,7 @@ func TestContextCancelAbortsRefChanges(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - cfg, repo, _, cleanup := setupUpdater(t, ctx) - defer cleanup() + cfg, repo, _ := setupUpdater(t, ctx) headCommit, err := repo.ReadCommit(ctx, "HEAD") require.NoError(t, err) @@ -176,8 +166,7 @@ func TestUpdater_closingStdinAbortsChanges(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - _, repo, updater, cleanup := setupUpdater(t, ctx) - defer cleanup() + _, repo, updater := setupUpdater(t, ctx) headCommit, err := repo.ReadCommit(ctx, "HEAD") require.NoError(t, err) @@ -203,8 +192,7 @@ func TestUpdater_capturesStderr(t *testing.T) { ctx, cancel := testhelper.Context() defer cancel() - _, _, updater, cleanup := setupUpdater(t, ctx) - defer cleanup() + _, _, updater := setupUpdater(t, ctx) ref := "refs/heads/a" newValue := strings.Repeat("1", 40) diff --git a/internal/gitaly/hook/custom_test.go b/internal/gitaly/hook/custom_test.go index d7fb309e5..f466638ef 100644 --- a/internal/gitaly/hook/custom_test.go +++ b/internal/gitaly/hook/custom_test.go @@ -51,8 +51,7 @@ echo "$0" exit 0`) func TestCustomHooksSuccess(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) testCases := []struct { hookName string @@ -103,8 +102,7 @@ func TestCustomHooksSuccess(t *testing.T) { } func TestCustomHookPartialFailure(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) globalCustomHooksDir, cleanup := testhelper.TempDir(t) defer cleanup() @@ -179,8 +177,7 @@ func TestCustomHookPartialFailure(t *testing.T) { } func TestCustomHooksMultipleHooks(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) globalCustomHooksDir, cleanup := testhelper.TempDir(t) defer cleanup() @@ -229,8 +226,7 @@ func TestCustomHooksMultipleHooks(t *testing.T) { } func TestCustomHooksWithSymlinks(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) globalCustomHooksDir, cleanup := testhelper.TempDir(t) defer cleanup() @@ -300,8 +296,7 @@ func TestCustomHooksWithSymlinks(t *testing.T) { } func TestMultilineStdin(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) globalCustomHooksDir, cleanup := testhelper.TempDir(t) defer cleanup() @@ -334,8 +329,7 @@ old3 new3 ref3 } func TestMultipleScriptsStdin(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) globalCustomHooksDir, cleanup := testhelper.TempDir(t) defer cleanup() diff --git a/internal/gitaly/hook/postreceive_test.go b/internal/gitaly/hook/postreceive_test.go index 8fececbbc..36071a883 100644 --- a/internal/gitaly/hook/postreceive_test.go +++ b/internal/gitaly/hook/postreceive_test.go @@ -61,8 +61,7 @@ func TestPrintAlert(t *testing.T) { } func TestPostReceive_customHook(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) hookManager := NewManager(config.NewLocator(cfg), transaction.NewManager(cfg), GitlabAPIStub, cfg) @@ -243,8 +242,7 @@ func (m *postreceiveAPIMock) PostReceive(ctx context.Context, glRepository, glID } func TestPostReceive_gitlab(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) payload, err := git.NewHooksPayload(cfg, repo, nil, nil, &git.ReceiveHooksPayload{ UserID: "1234", diff --git a/internal/gitaly/hook/prereceive_test.go b/internal/gitaly/hook/prereceive_test.go index cdd7c482a..9ce4f7400 100644 --- a/internal/gitaly/hook/prereceive_test.go +++ b/internal/gitaly/hook/prereceive_test.go @@ -20,8 +20,7 @@ import ( ) func TestPrereceive_customHooks(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) hookManager := NewManager(config.NewLocator(cfg), transaction.NewManager(cfg), GitlabAPIStub, cfg) @@ -205,8 +204,7 @@ func (m *prereceiveAPIMock) PostReceive(context.Context, string, string, string, } func TestPrereceive_gitlab(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) payload, err := git.NewHooksPayload(cfg, repo, nil, nil, &git.ReceiveHooksPayload{ UserID: "1234", diff --git a/internal/gitaly/hook/transactions_test.go b/internal/gitaly/hook/transactions_test.go index 40501bad8..97c4ec469 100644 --- a/internal/gitaly/hook/transactions_test.go +++ b/internal/gitaly/hook/transactions_test.go @@ -32,8 +32,7 @@ func (m *mockTransactionManager) Stop(ctx context.Context, tx metadata.Transacti } func TestHookManager_stopCalled(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) expectedTx := metadata.Transaction{ ID: 1234, Node: "primary", Primary: true, @@ -129,8 +128,7 @@ func TestHookManager_stopCalled(t *testing.T) { } func TestHookManager_contextCancellationCancelsVote(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) mockTxMgr := mockTransactionManager{ vote: func(ctx context.Context, tx metadata.Transaction, praefect metadata.PraefectServer, vote []byte) error { diff --git a/internal/gitaly/hook/update_test.go b/internal/gitaly/hook/update_test.go index d76df4ae7..edddc0009 100644 --- a/internal/gitaly/hook/update_test.go +++ b/internal/gitaly/hook/update_test.go @@ -17,8 +17,7 @@ import ( ) func TestUpdate_customHooks(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) hookManager := NewManager(config.NewLocator(cfg), transaction.NewManager(cfg), GitlabAPIStub, cfg) diff --git a/internal/gitaly/linguist/linguist_test.go b/internal/gitaly/linguist/linguist_test.go index c523eee7b..58f10e81a 100644 --- a/internal/gitaly/linguist/linguist_test.go +++ b/internal/gitaly/linguist/linguist_test.go @@ -23,8 +23,7 @@ func testMain(m *testing.M) int { } func TestStatsUnmarshalJSONError(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) ctx, cancel := testhelper.Context() defer cancel() @@ -39,8 +38,7 @@ func TestStatsUnmarshalJSONError(t *testing.T) { } func TestLoadLanguages(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) colorMap = make(map[string]Language) require.NoError(t, LoadColors(&cfg), "load colors") @@ -49,8 +47,7 @@ func TestLoadLanguages(t *testing.T) { } func TestLoadLanguagesCustomPath(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) jsonPath, err := filepath.Abs("testdata/fake-languages.json") require.NoError(t, err) diff --git a/internal/gitaly/rubyserver/concurrency_test.go b/internal/gitaly/rubyserver/concurrency_test.go index e316802f3..602337831 100644 --- a/internal/gitaly/rubyserver/concurrency_test.go +++ b/internal/gitaly/rubyserver/concurrency_test.go @@ -28,8 +28,7 @@ func waitPing(s *Server) error { // This benchmark lets you see what happens when you throw a lot of // concurrent traffic at gitaly-ruby. func BenchmarkConcurrency(b *testing.B) { - cfg, cleanup := testcfg.Build(b) - defer cleanup() + cfg := testcfg.Build(b) cfg.Ruby.NumWorkers = 2 diff --git a/internal/gitaly/rubyserver/health_test.go b/internal/gitaly/rubyserver/health_test.go index 5bc3376c8..e228d9e6c 100644 --- a/internal/gitaly/rubyserver/health_test.go +++ b/internal/gitaly/rubyserver/health_test.go @@ -9,10 +9,7 @@ import ( ) func TestPingSuccess(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() - - s := New(cfg) + s := New(testcfg.Build(t)) require.NoError(t, s.Start()) defer s.Stop() diff --git a/internal/gitaly/rubyserver/proxy_test.go b/internal/gitaly/rubyserver/proxy_test.go index f702ea778..31f61499c 100644 --- a/internal/gitaly/rubyserver/proxy_test.go +++ b/internal/gitaly/rubyserver/proxy_test.go @@ -11,8 +11,7 @@ import ( ) func TestSetHeadersBlocksUnknownMetadata(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) ctx, cancel := testhelper.Context() defer cancel() @@ -32,8 +31,7 @@ func TestSetHeadersBlocksUnknownMetadata(t *testing.T) { } func TestSetHeadersPreservesAllowlistedMetadata(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) ctx, cancel := testhelper.Context() defer cancel() @@ -52,8 +50,7 @@ func TestSetHeadersPreservesAllowlistedMetadata(t *testing.T) { } func TestRubyFeatureHeaders(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/gitaly/rubyserver/rubyserver_test.go b/internal/gitaly/rubyserver/rubyserver_test.go index e9e7e2724..d16c33aae 100644 --- a/internal/gitaly/rubyserver/rubyserver_test.go +++ b/internal/gitaly/rubyserver/rubyserver_test.go @@ -32,8 +32,7 @@ func TestStopSafe(t *testing.T) { } func TestSetHeaders(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/gitaly/service/objectpool/alternates_test.go b/internal/gitaly/service/objectpool/alternates_test.go index 4cbd3a954..d79983888 100644 --- a/internal/gitaly/service/objectpool/alternates_test.go +++ b/internal/gitaly/service/objectpool/alternates_test.go @@ -15,8 +15,7 @@ import ( ) func TestDisconnectGitAlternates(t *testing.T) { - cfg, repo, repoPath, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, repoPath, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -59,8 +58,7 @@ func TestDisconnectGitAlternates(t *testing.T) { } func TestDisconnectGitAlternatesNoAlternates(t *testing.T) { - _, repo, repoPath, locator, client, cleanup := setup(t) - defer cleanup() + _, repo, repoPath, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -76,8 +74,7 @@ func TestDisconnectGitAlternatesNoAlternates(t *testing.T) { } func TestDisconnectGitAlternatesUnexpectedAlternates(t *testing.T) { - cfg, _, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, _, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -112,8 +109,7 @@ func TestDisconnectGitAlternatesUnexpectedAlternates(t *testing.T) { } func TestRemoveAlternatesIfOk(t *testing.T) { - cfg, repo, repoPath, locator, _, cleanup := setup(t) - defer cleanup() + cfg, repo, repoPath, locator, _ := setup(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/gitaly/service/objectpool/create_test.go b/internal/gitaly/service/objectpool/create_test.go index be9753bf1..04f025000 100644 --- a/internal/gitaly/service/objectpool/create_test.go +++ b/internal/gitaly/service/objectpool/create_test.go @@ -17,8 +17,7 @@ import ( ) func TestCreate(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -53,8 +52,7 @@ func TestCreate(t *testing.T) { } func TestUnsuccessfulCreate(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -147,8 +145,7 @@ func TestUnsuccessfulCreate(t *testing.T) { } func TestDelete(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/gitaly/service/objectpool/fetch_into_object_pool_test.go b/internal/gitaly/service/objectpool/fetch_into_object_pool_test.go index 479073770..2c8f79db7 100644 --- a/internal/gitaly/service/objectpool/fetch_into_object_pool_test.go +++ b/internal/gitaly/service/objectpool/fetch_into_object_pool_test.go @@ -27,8 +27,7 @@ import ( ) func TestFetchIntoObjectPool_Success(t *testing.T) { - cfg, repo, repoPath, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, repoPath, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -82,8 +81,7 @@ func TestFetchIntoObjectPool_Success(t *testing.T) { } func TestFetchIntoObjectPool_hooksDisabled(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -124,8 +122,7 @@ func TestFetchIntoObjectPool_CollectLogStatistics(t *testing.T) { testhelper.NewTestLogger = tl }(testhelper.NewTestLogger) - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/gitaly/service/objectpool/get_test.go b/internal/gitaly/service/objectpool/get_test.go index 59e8fb994..c2f3b375a 100644 --- a/internal/gitaly/service/objectpool/get_test.go +++ b/internal/gitaly/service/objectpool/get_test.go @@ -15,8 +15,7 @@ import ( ) func TestGetObjectPoolSuccess(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) relativePoolPath := gittest.NewObjectPoolName(t) @@ -41,8 +40,7 @@ func TestGetObjectPoolSuccess(t *testing.T) { } func TestGetObjectPoolNoFile(t *testing.T) { - _, repoo, _, _, client, cleanup := setup(t) - defer cleanup() + _, repoo, _, _, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -56,8 +54,7 @@ func TestGetObjectPoolNoFile(t *testing.T) { } func TestGetObjectPoolBadFile(t *testing.T) { - _, repo, repoPath, _, client, cleanup := setup(t) - defer cleanup() + _, repo, repoPath, _, client := setup(t) alternatesFilePath := filepath.Join(repoPath, "objects", "info", "alternates") require.NoError(t, os.MkdirAll(filepath.Dir(alternatesFilePath), 0755)) diff --git a/internal/gitaly/service/objectpool/link_test.go b/internal/gitaly/service/objectpool/link_test.go index fb9b7b060..ea29a763c 100644 --- a/internal/gitaly/service/objectpool/link_test.go +++ b/internal/gitaly/service/objectpool/link_test.go @@ -18,8 +18,7 @@ import ( ) func TestLink(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -87,8 +86,7 @@ func TestLink(t *testing.T) { } func TestLinkIdempotent(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -111,8 +109,7 @@ func TestLinkIdempotent(t *testing.T) { } func TestLinkNoClobber(t *testing.T) { - cfg, repo, repoPath, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, repoPath, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -144,8 +141,7 @@ func TestLinkNoClobber(t *testing.T) { } func TestLinkNoPool(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -170,8 +166,7 @@ func TestLinkNoPool(t *testing.T) { } func TestUnlink(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() @@ -277,8 +272,7 @@ func TestUnlink(t *testing.T) { } func TestUnlinkIdempotent(t *testing.T) { - cfg, repo, _, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, _, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/gitaly/service/objectpool/reduplicate_test.go b/internal/gitaly/service/objectpool/reduplicate_test.go index 75468d2af..735fc898d 100644 --- a/internal/gitaly/service/objectpool/reduplicate_test.go +++ b/internal/gitaly/service/objectpool/reduplicate_test.go @@ -13,8 +13,7 @@ import ( ) func TestReduplicate(t *testing.T) { - cfg, repo, repoPath, locator, client, cleanup := setup(t) - defer cleanup() + cfg, repo, repoPath, locator, client := setup(t) ctx, cancel := testhelper.Context() defer cancel() diff --git a/internal/gitaly/service/objectpool/testhelper_test.go b/internal/gitaly/service/objectpool/testhelper_test.go index 41cc5a12f..a787c546a 100644 --- a/internal/gitaly/service/objectpool/testhelper_test.go +++ b/internal/gitaly/service/objectpool/testhelper_test.go @@ -30,26 +30,21 @@ func testMain(m *testing.M) int { return m.Run() } -func setup(t *testing.T) (config.Cfg, *gitalypb.Repository, string, storage.Locator, gitalypb.ObjectPoolServiceClient, testhelper.Cleanup) { +func setup(t *testing.T) (config.Cfg, *gitalypb.Repository, string, storage.Locator, gitalypb.ObjectPoolServiceClient) { t.Helper() - var deferrer testhelper.Deferrer - defer deferrer.Call() - - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - deferrer.Add(cleanup) + cfg, repo, repoPath := testcfg.BuildWithRepo(t) testhelper.ConfigureGitalyHooksBin(t, cfg) locator := config.NewLocator(cfg) server, serverSocketPath := runObjectPoolServer(t, cfg, locator) - deferrer.Add(server.Stop) + t.Cleanup(server.Stop) client, conn := newObjectPoolClient(t, serverSocketPath) - deferrer.Add(func() { conn.Close() }) + t.Cleanup(func() { conn.Close() }) - closer := deferrer.Relocate() - return cfg, repo, repoPath, locator, client, closer.Call + return cfg, repo, repoPath, locator, client } func runObjectPoolServer(t *testing.T, cfg config.Cfg, locator storage.Locator) (*grpc.Server, string) { diff --git a/internal/gitaly/service/smarthttp/inforefs_test.go b/internal/gitaly/service/smarthttp/inforefs_test.go index 65f5d0a7a..3de658dc2 100644 --- a/internal/gitaly/service/smarthttp/inforefs_test.go +++ b/internal/gitaly/service/smarthttp/inforefs_test.go @@ -30,8 +30,7 @@ import ( ) func TestSuccessfulInfoRefsUploadPack(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -50,8 +49,7 @@ func TestSuccessfulInfoRefsUploadPack(t *testing.T) { } func TestSuccessfulInfoRefsUploadWithPartialClone(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -75,8 +73,7 @@ func TestSuccessfulInfoRefsUploadWithPartialClone(t *testing.T) { } func TestSuccessfulInfoRefsUploadPackWithGitConfigOptions(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -97,8 +94,7 @@ func TestSuccessfulInfoRefsUploadPackWithGitConfigOptions(t *testing.T) { } func TestSuccessfulInfoRefsUploadPackWithGitProtocol(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) readProtocol, cfg, restore := gittest.EnableGitProtocolV2Support(t, cfg) defer restore() @@ -147,8 +143,7 @@ func makeInfoRefsUploadPackRequest(ctx context.Context, t *testing.T, serverSock } func TestSuccessfulInfoRefsReceivePack(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -176,8 +171,7 @@ func TestSuccessfulInfoRefsReceivePack(t *testing.T) { } func TestObjectPoolRefAdvertisementHiding(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) testhelper.ConfigureGitalyHooksBin(t, cfg) @@ -215,8 +209,7 @@ func TestObjectPoolRefAdvertisementHiding(t *testing.T) { } func TestFailureRepoNotFoundInfoRefsReceivePack(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -240,8 +233,7 @@ func TestFailureRepoNotFoundInfoRefsReceivePack(t *testing.T) { } func TestFailureRepoNotSetInfoRefsReceivePack(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -295,8 +287,7 @@ func (ms mockStreamer) PutStream(ctx context.Context, repo *gitalypb.Repository, } func TestCacheInfoRefsUploadPack(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() diff --git a/internal/gitaly/service/smarthttp/receive_pack_test.go b/internal/gitaly/service/smarthttp/receive_pack_test.go index b7b9cfa36..1b4e6b55a 100644 --- a/internal/gitaly/service/smarthttp/receive_pack_test.go +++ b/internal/gitaly/service/smarthttp/receive_pack_test.go @@ -43,8 +43,7 @@ const ( ) func TestSuccessfulReceivePackRequest(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) cfg.GitlabShell.Dir = "/foo/bar/gitlab-shell" @@ -109,8 +108,7 @@ func TestSuccessfulReceivePackRequest(t *testing.T) { } func TestSuccessfulReceivePackRequestWithGitProtocol(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) testhelper.ConfigureGitalyHooksBin(t, cfg) @@ -141,8 +139,7 @@ func TestSuccessfulReceivePackRequestWithGitProtocol(t *testing.T) { } func TestFailedReceivePackRequestWithGitOpts(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -165,8 +162,7 @@ func TestFailedReceivePackRequestWithGitOpts(t *testing.T) { } func TestFailedReceivePackRequestDueToHooksFailure(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) hookDir, cleanup := testhelper.TempDir(t) defer cleanup() @@ -286,8 +282,7 @@ func createCommit(t *testing.T, repoPath string, fileContents []byte) (oldHead s } func TestFailedReceivePackRequestDueToValidationError(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -319,8 +314,7 @@ func TestFailedReceivePackRequestDueToValidationError(t *testing.T) { } func TestInvalidTimezone(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) _, localRepoPath, localCleanup := gittest.CloneRepoWithWorktreeAtStorage(t, cfg.Storages[0]) defer localCleanup() @@ -345,6 +339,7 @@ func TestInvalidTimezone(t *testing.T) { fmt.Fprintf(body, "%04x%s%s", len(pkt)+4, pkt, pktFlushStr) body.Write(pack) + var cleanup func() _, cleanup = gittest.CaptureHookEnv(t) defer cleanup() @@ -381,8 +376,7 @@ func drainPostReceivePackResponse(stream gitalypb.SmartHTTPService_PostReceivePa } func TestPostReceivePackToHooks(t *testing.T) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) testhelper.ConfigureGitalyHooksBin(t, cfg) @@ -392,6 +386,7 @@ func TestPostReceivePackToHooks(t *testing.T) { glID = "key-123" ) + var cleanup func() cfg.GitlabShell.Dir, cleanup = testhelper.TempDir(t) defer cleanup() @@ -479,8 +474,7 @@ func TestPostReceiveWithTransactionsViaPraefect(t *testing.T) { } func testPostReceiveWithTransactionsViaPraefect(t *testing.T, ctx context.Context) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, repoPath := testcfg.BuildWithRepo(t) testhelper.ConfigureGitalyHooksBin(t, cfg) @@ -560,8 +554,7 @@ func (t *testTransactionServer) VoteTransaction(ctx context.Context, in *gitalyp } func TestPostReceiveWithReferenceTransactionHook(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) testhelper.ConfigureGitalyHooksBin(t, cfg) diff --git a/internal/gitaly/service/smarthttp/upload_pack_test.go b/internal/gitaly/service/smarthttp/upload_pack_test.go index 40c0e28b3..033a1f582 100644 --- a/internal/gitaly/service/smarthttp/upload_pack_test.go +++ b/internal/gitaly/service/smarthttp/upload_pack_test.go @@ -37,8 +37,7 @@ func TestSuccessfulUploadPackRequest(t *testing.T) { } func testSuccessfulUploadPackRequest(t *testing.T, ctx context.Context) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) testhelper.ConfigureGitalyHooksBin(t, cfg) @@ -116,8 +115,7 @@ func TestUploadPackRequestWithGitConfigOptions(t *testing.T) { } func testUploadPackRequestWithGitConfigOptions(t *testing.T, ctx context.Context) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) testhelper.ConfigureGitalyHooksBin(t, cfg) @@ -185,8 +183,7 @@ func TestUploadPackRequestWithGitProtocol(t *testing.T) { } func testUploadPackRequestWithGitProtocol(t *testing.T, ctx context.Context) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) readProto, cfg, restore := gittest.EnableGitProtocolV2Support(t, cfg) defer restore() @@ -235,8 +232,7 @@ func TestSuccessfulUploadPackDeepenRequest(t *testing.T) { } func testSuccessfulUploadPackDeepenRequest(t *testing.T, ctx context.Context) { - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -255,9 +251,8 @@ func testSuccessfulUploadPackDeepenRequest(t *testing.T, ctx context.Context) { } func TestUploadPackWithPackObjectsHook(t *testing.T) { - cfg, repo, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() - + cfg, repo, repoPath := testcfg.BuildWithRepo(t) + var cleanup func() cfg.BinDir, cleanup = testhelper.TempDir(t) defer cleanup() @@ -305,8 +300,7 @@ func TestFailedUploadPackRequestDueToValidationError(t *testing.T) { } func testFailedUploadPackRequestDueToValidationError(t *testing.T, ctx context.Context) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) serverSocketPath, stop := runSmartHTTPServer(t, cfg) defer stop() @@ -400,8 +394,7 @@ func TestUploadPackRequestForPartialCloneSuccess(t *testing.T) { } func testUploadPackRequestForPartialCloneSuccess(t *testing.T, ctx context.Context) { - cfg, _, repoPath, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, _, repoPath := testcfg.BuildWithRepo(t) testhelper.ConfigureGitalyHooksBin(t, cfg) diff --git a/internal/gitaly/transaction/manager_test.go b/internal/gitaly/transaction/manager_test.go index e1d3044f8..eb0cc45c6 100644 --- a/internal/gitaly/transaction/manager_test.go +++ b/internal/gitaly/transaction/manager_test.go @@ -35,8 +35,7 @@ func (s *testTransactionServer) StopTransaction(ctx context.Context, in *gitalyp } func TestPoolManager_Vote(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) transactionServer, praefect, stop := runTransactionServer(t, cfg) defer stop() @@ -108,8 +107,7 @@ func TestPoolManager_Vote(t *testing.T) { } func TestPoolManager_Stop(t *testing.T) { - cfg, cleanup := testcfg.Build(t) - defer cleanup() + cfg := testcfg.Build(t) transactionServer, praefect, stop := runTransactionServer(t, cfg) defer stop() diff --git a/internal/middleware/commandstatshandler/commandstatshandler_test.go b/internal/middleware/commandstatshandler/commandstatshandler_test.go index 1f28b93fe..177b02a45 100644 --- a/internal/middleware/commandstatshandler/commandstatshandler_test.go +++ b/internal/middleware/commandstatshandler/commandstatshandler_test.go @@ -59,8 +59,7 @@ func TestInterceptor(t *testing.T) { cleanup := testhelper.Configure() defer cleanup() - cfg, repo, _, cleanup := testcfg.BuildWithRepo(t) - defer cleanup() + cfg, repo, _ := testcfg.BuildWithRepo(t) logBuffer := &bytes.Buffer{} testhelper.NewTestLogger = func(tb testing.TB) *logrus.Logger { diff --git a/internal/praefect/server_test.go b/internal/praefect/server_test.go index f092677cc..13d8737f7 100644 --- a/internal/praefect/server_test.go +++ b/internal/praefect/server_test.go @@ -177,8 +177,7 @@ func TestGitalyServerInfoBadNode(t *testing.T) { func TestDiskStatistics(t *testing.T) { praefectCfg := config.Config{VirtualStorages: []*config.VirtualStorage{{Name: "praefect"}}} for _, name := range []string{"gitaly-1", "gitaly-2"} { - gitalyCfg, cleanup := testcfg.Build(t) - defer cleanup() + gitalyCfg := testcfg.Build(t) gitalyAddr, cleanupGitaly := testserver.RunGitalyServer(t, gitalyCfg, nil) defer cleanupGitaly() diff --git a/internal/testhelper/deferrer.go b/internal/testhelper/deferrer.go deleted file mode 100644 index 82d72502f..000000000 --- a/internal/testhelper/deferrer.go +++ /dev/null @@ -1,38 +0,0 @@ -package testhelper - -// Deferrer allows to collect a list of anonymous functions and call them all in reverse order. -// This is useful if you want to make sure that the Deferrer is getting executed in case the -// surrounding function errors, but return the not-yet-executed Deferrer in case it didn't -// by calling Relocate() before the function returns successfully. -type Deferrer []func() - -// Add adds another function to the list. -func (c *Deferrer) Add(f func()) { - *c = append(*c, f) -} - -// Call calls all the functions previously added to the list in reverse order. -func (c *Deferrer) Call() { - for i := len(*c) - 1; i >= 0; i-- { - (*c)[i]() - } -} - -// Relocate moves all functions into another instance and returns that instance back to the caller. -func (c *Deferrer) Relocate() Deferrer { - clone := c.clone() - c.reset() - return clone -} - -// reset removes all functions from the list. -func (c *Deferrer) reset() { - *c = nil -} - -// clone creates a copy of the Deferrer. -func (c *Deferrer) clone() Deferrer { - clone := make([]func(), len(*c)) - copy(clone, *c) - return clone -} diff --git a/internal/testhelper/deferrer_test.go b/internal/testhelper/deferrer_test.go deleted file mode 100644 index fd4d2e49a..000000000 --- a/internal/testhelper/deferrer_test.go +++ /dev/null @@ -1,83 +0,0 @@ -package testhelper - -import ( - "testing" - - "github.com/stretchr/testify/require" -) - -func TestDeferrer(t *testing.T) { - t.Run("nothing to call", func(t *testing.T) { - var deferrer Deferrer - deferrer.Call() - }) - - t.Run("call executes in right order", func(t *testing.T) { - var deferrer Deferrer - - calls := make(map[string]int) - deferrer.Add(func() { calls["right"] = len(calls) }) - deferrer.Add(func() { calls["is"] = len(calls) }) - deferrer.Add(func() { calls["order"] = len(calls) }) - - deferrer.Call() - require.Equal(t, map[string]int{"order": 0, "is": 1, "right": 2}, calls) - }) - - t.Run("reset", func(t *testing.T) { - t.Run("empty", func(t *testing.T) { - var deferrer Deferrer - deferrer.reset() - deferrer.Call() - }) - - t.Run("not empty", func(t *testing.T) { - var deferrer Deferrer - var updated bool - deferrer.Add(func() { updated = true }) - deferrer.reset() - deferrer.Call() - require.False(t, updated) - }) - }) - - t.Run("clone", func(t *testing.T) { - t.Run("empty", func(t *testing.T) { - var deferrer Deferrer - cloned := deferrer.clone() - deferrer.Call() - cloned.Call() - }) - - t.Run("not empty", func(t *testing.T) { - var deferrer Deferrer - var called int - deferrer.Add(func() { called++ }) - cloned := deferrer.clone() - deferrer.Call() - require.Equal(t, called, 1) - cloned.Call() - require.Equal(t, called, 2) - }) - }) - - t.Run("Relocate", func(t *testing.T) { - t.Run("empty", func(t *testing.T) { - var deferrer Deferrer - relocated := deferrer.Relocate() - deferrer.Call() - relocated.Call() - }) - - t.Run("not empty", func(t *testing.T) { - var deferrer Deferrer - var called int - deferrer.Add(func() { called++ }) - relocated := deferrer.Relocate() - deferrer.Call() - require.Equal(t, called, 0) - relocated.Call() - require.Equal(t, called, 1) - }) - }) -} diff --git a/internal/testhelper/testcfg/gitaly_builder.go b/internal/testhelper/testcfg/gitaly_builder.go index 9d6870e16..0caa780a1 100644 --- a/internal/testhelper/testcfg/gitaly_builder.go +++ b/internal/testhelper/testcfg/gitaly_builder.go @@ -147,29 +147,20 @@ func (gc *GitalyCfgBuilder) BuildWithRepoAt(t testing.TB, relativePath string) ( } // Build creates a minimal configuration setup with no options and returns it with cleanup function. -func Build(t testing.TB) (config.Cfg, testhelper.Cleanup) { - var deferrer testhelper.Deferrer - defer deferrer.Call() - +func Build(t testing.TB) config.Cfg { cfgBuilder := NewGitalyCfgBuilder() - deferrer.Add(cfgBuilder.Cleanup) + t.Cleanup(cfgBuilder.Cleanup) - cfg := cfgBuilder.Build(t) - cleaner := deferrer.Relocate() - return cfg, cleaner.Call + return cfgBuilder.Build(t) } // BuildWithRepo creates a minimal configuration setup with no options. // It also clones test repository at the storage and returns it with the full path to the repository. -func BuildWithRepo(t testing.TB) (config.Cfg, *gitalypb.Repository, string, testhelper.Cleanup) { - var deferrer testhelper.Deferrer - defer deferrer.Call() - +func BuildWithRepo(t testing.TB) (config.Cfg, *gitalypb.Repository, string) { cfgBuilder := NewGitalyCfgBuilder() - deferrer.Add(cfgBuilder.Cleanup) + t.Cleanup(cfgBuilder.Cleanup) cfg, repos := cfgBuilder.BuildWithRepoAt(t, t.Name()) repoPath := filepath.Join(cfg.Storages[0].Path, repos[0].RelativePath) - cleaner := deferrer.Relocate() - return cfg, repos[0], repoPath, cleaner.Call + return cfg, repos[0], repoPath } |