diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-03-14 18:34:19 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-03-15 11:24:20 +0300 |
commit | dd410b4f2d52085b095e511664897145ec0456b9 (patch) | |
tree | 154de9917aac2eba0dec5a75633c03589da90a3f | |
parent | 50437c677227f20134d4f2dfb057f956e3b26570 (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.go | 126 |
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) + } + }) } }) } |