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-03-14 18:34:19 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2022-03-15 11:24:20 +0300
commitdd410b4f2d52085b095e511664897145ec0456b9 (patch)
tree154de9917aac2eba0dec5a75633c03589da90a3f
parent50437c677227f20134d4f2dfb057f956e3b26570 (diff)
housekeeping: Inline subtests which test pruning of specific files
The test which verifies that we correctly prune specific files is using a subfunction to execute subtests, which makes the test hard to extend. Refactor it by inlining the subtests.
-rw-r--r--internal/git/housekeeping/clean_stale_data_test.go126
1 files changed, 75 insertions, 51 deletions
diff --git a/internal/git/housekeeping/clean_stale_data_test.go b/internal/git/housekeeping/clean_stale_data_test.go
index 881b1c374..985b9f092 100644
--- a/internal/git/housekeeping/clean_stale_data_test.go
+++ b/internal/git/housekeeping/clean_stale_data_test.go
@@ -413,74 +413,98 @@ func TestPerform_emptyRefDirs(t *testing.T) {
}
func TestPerform_withSpecificFile(t *testing.T) {
- for file, finder := range map[string]staleFileFinderFn{
- "HEAD.lock": findStaleLockfiles,
- "config.lock": findStaleLockfiles,
- "packed-refs.lock": findPackedRefsLock,
- "packed-refs.new": findPackedRefsNew,
- } {
- testPerformWithSpecificFile(t, file, finder)
- }
-}
-
-func testPerformWithSpecificFile(t *testing.T, file string, finder staleFileFinderFn) {
- ctx := testhelper.Context(t)
-
- cfg, repoProto, repoPath := testcfg.BuildWithRepo(t)
- repo := localrepo.NewTestRepo(t, cfg, repoProto)
- mgr := NewManager(nil)
+ t.Parallel()
- require.NoError(t, mgr.CleanStaleData(ctx, repo))
for _, tc := range []struct {
- desc string
- entries []entry
- expectedFiles []string
+ desc string
+ file string
+ finder staleFileFinderFn
}{
{
- desc: fmt.Sprintf("fresh %s is kept", file),
- entries: []entry{
- f(file, 0o700, 10*time.Minute, Keep),
- },
+ desc: "locked HEAD",
+ file: "HEAD.lock",
+ finder: findStaleLockfiles,
},
{
- desc: fmt.Sprintf("stale %s in subdir is kept", file),
- entries: []entry{
- d("subdir", 0o700, 240*time.Hour, Keep, []entry{
- f(file, 0o700, 24*time.Hour, Keep),
- }),
- },
+ desc: "locked config",
+ file: "config.lock",
+ finder: findStaleLockfiles,
},
{
- desc: fmt.Sprintf("stale %s is deleted", file),
- entries: []entry{
- f(file, 0o700, 61*time.Minute, Delete),
- },
- expectedFiles: []string{
- filepath.Join(repoPath, file),
- },
+ desc: "locked packed-refs",
+ file: "packed-refs.lock",
+ finder: findPackedRefsLock,
},
{
- desc: fmt.Sprintf("variations of %s are kept", file),
- entries: []entry{
- f(file[:len(file)-1], 0o700, 61*time.Minute, Keep),
- f("~"+file, 0o700, 61*time.Minute, Keep),
- f(file+"~", 0o700, 61*time.Minute, Keep),
- },
+ desc: "temporary packed-refs",
+ file: "packed-refs.new",
+ finder: findPackedRefsNew,
},
} {
+ tc := tc
+
t.Run(tc.desc, func(t *testing.T) {
- for _, e := range tc.entries {
- e.create(t, repoPath)
- }
+ t.Parallel()
- staleFiles, err := finder(ctx, repoPath)
- require.NoError(t, err)
- require.ElementsMatch(t, tc.expectedFiles, staleFiles)
+ ctx := testhelper.Context(t)
+
+ cfg, repoProto, repoPath := testcfg.BuildWithRepo(t)
+ repo := localrepo.NewTestRepo(t, cfg, repoProto)
+ mgr := NewManager(nil)
require.NoError(t, mgr.CleanStaleData(ctx, repo))
+ for _, subcase := range []struct {
+ desc string
+ entries []entry
+ expectedFiles []string
+ }{
+ {
+ desc: fmt.Sprintf("fresh %s is kept", tc.file),
+ entries: []entry{
+ f(tc.file, 0o700, 10*time.Minute, Keep),
+ },
+ },
+ {
+ desc: fmt.Sprintf("stale %s in subdir is kept", tc.file),
+ entries: []entry{
+ d("subdir", 0o700, 240*time.Hour, Keep, []entry{
+ f(tc.file, 0o700, 24*time.Hour, Keep),
+ }),
+ },
+ },
+ {
+ desc: fmt.Sprintf("stale %s is deleted", tc.file),
+ entries: []entry{
+ f(tc.file, 0o700, 61*time.Minute, Delete),
+ },
+ expectedFiles: []string{
+ filepath.Join(repoPath, tc.file),
+ },
+ },
+ {
+ desc: fmt.Sprintf("variations of %s are kept", tc.file),
+ entries: []entry{
+ f(tc.file[:len(tc.file)-1], 0o700, 61*time.Minute, Keep),
+ f("~"+tc.file, 0o700, 61*time.Minute, Keep),
+ f(tc.file+"~", 0o700, 61*time.Minute, Keep),
+ },
+ },
+ } {
+ t.Run(subcase.desc, func(t *testing.T) {
+ for _, e := range subcase.entries {
+ e.create(t, repoPath)
+ }
+
+ staleFiles, err := tc.finder(ctx, repoPath)
+ require.NoError(t, err)
+ require.ElementsMatch(t, subcase.expectedFiles, staleFiles)
- for _, e := range tc.entries {
- e.validate(t, repoPath)
+ require.NoError(t, mgr.CleanStaleData(ctx, repo))
+
+ for _, e := range subcase.entries {
+ e.validate(t, repoPath)
+ }
+ })
}
})
}