diff options
author | Karthik Nayak <knayak@gitlab.com> | 2023-05-03 12:38:01 +0300 |
---|---|---|
committer | Karthik Nayak <knayak@gitlab.com> | 2023-05-03 12:38:01 +0300 |
commit | 00a1b2b8ba959eb69d6c72cd4ef3916038496394 (patch) | |
tree | 0fdd76ac4f0cb0c86c382fce8fae9cd69d851d6e | |
parent | 308b5daa0d527660cae0121ee9ce5e98e290d1ad (diff) |
localrepo: Use `setupData` struct for `TestMergeTree`
Move the `expectedErr` inline and use a `setupData` struct for the tests
in `TestMergeTree`. This is in preparation of adding more tests here.
-rw-r--r-- | internal/git/localrepo/merge_test.go | 94 |
1 files changed, 53 insertions, 41 deletions
diff --git a/internal/git/localrepo/merge_test.go b/internal/git/localrepo/merge_test.go index 39426f229..d30724144 100644 --- a/internal/git/localrepo/merge_test.go +++ b/internal/git/localrepo/merge_test.go @@ -17,14 +17,20 @@ import ( func TestMergeTree(t *testing.T) { cfg := testcfg.Build(t) + type setupData struct { + ours git.ObjectID + theirs git.ObjectID + expectedTreeEntries []gittest.TreeEntry + expectedErr error + } + testCases := []struct { - desc string - expectedErr error - setupFunc func(t *testing.T, ctx context.Context, repoPath string) (ours, theirs git.ObjectID, expectedTreeEntries []gittest.TreeEntry) + desc string + setup func(t *testing.T, ctx context.Context, repoPath string) setupData }{ { desc: "normal merge", - setupFunc: func(t *testing.T, ctx context.Context, repoPath string) (git.ObjectID, git.ObjectID, []gittest.TreeEntry) { + setup: func(t *testing.T, ctx context.Context, repoPath string) setupData { tree1 := gittest.WriteTree(t, cfg, repoPath, []gittest.TreeEntry{ { Mode: "100644", @@ -74,31 +80,32 @@ func TestMergeTree(t *testing.T) { gittest.WithCommitterName("Buzz"), ) - return ours, theirs, []gittest.TreeEntry{ - { - Mode: "100644", - Path: "file1", - Content: "foo", - }, - { - Mode: "100644", - Path: "file2", - Content: "baz", - }, - { - Mode: "100644", - Path: "file3", - Content: "bar", + return setupData{ + ours: ours, + theirs: theirs, + expectedTreeEntries: []gittest.TreeEntry{ + { + Mode: "100644", + Path: "file1", + Content: "foo", + }, + { + Mode: "100644", + Path: "file2", + Content: "baz", + }, + { + Mode: "100644", + Path: "file3", + Content: "bar", + }, }, } }, }, { desc: "no shared ancestors", - expectedErr: &MergeTreeError{ - InfoMessage: "unrelated histories", - }, - setupFunc: func(t *testing.T, ctx context.Context, repoPath string) (git.ObjectID, git.ObjectID, []gittest.TreeEntry) { + setup: func(t *testing.T, ctx context.Context, repoPath string) setupData { tree1 := gittest.WriteTree(t, cfg, repoPath, []gittest.TreeEntry{ { Mode: "100644", @@ -124,22 +131,16 @@ func TestMergeTree(t *testing.T) { gittest.WithCommitterName("Buzz"), ) - return ours, theirs, nil + return setupData{ + ours: ours, + theirs: theirs, + expectedErr: &MergeTreeError{InfoMessage: "unrelated histories"}, + } }, }, { desc: "with conflicts", - expectedErr: &MergeTreeError{ - ConflictingFileInfo: []ConflictingFileInfo{ - { - FileName: "file2", - OID: "", - Stage: 0, - }, - }, - InfoMessage: "Auto-merging file2\nCONFLICT (add/add): Merge conflict in file2", - }, - setupFunc: func(t *testing.T, ctx context.Context, repoPath string) (git.ObjectID, git.ObjectID, []gittest.TreeEntry) { + setup: func(t *testing.T, ctx context.Context, repoPath string) setupData { tree1 := gittest.WriteTree(t, cfg, repoPath, []gittest.TreeEntry{ { Mode: "100644", @@ -189,7 +190,18 @@ func TestMergeTree(t *testing.T) { gittest.WithCommitterName("Buzz"), ) - return ours, theirs, nil + return setupData{ + ours: ours, + theirs: theirs, + expectedErr: &MergeTreeError{ + ConflictingFileInfo: []ConflictingFileInfo{ + { + FileName: "file2", + }, + }, + InfoMessage: "Auto-merging file2\nCONFLICT (add/add): Merge conflict in file2", + }, + } }, }, } @@ -203,18 +215,18 @@ func TestMergeTree(t *testing.T) { }) repo := NewTestRepo(t, cfg, repoProto) - ours, theirs, treeEntries := tc.setupFunc(t, ctx, repoPath) + data := tc.setup(t, ctx, repoPath) - mergeTreeResult, err := repo.MergeTree(ctx, string(ours), string(theirs), WithConflictingFileNamesOnly()) + mergeTreeResult, err := repo.MergeTree(ctx, string(data.ours), string(data.theirs), WithConflictingFileNamesOnly()) - require.Equal(t, tc.expectedErr, err) - if tc.expectedErr == nil { + require.Equal(t, data.expectedErr, err) + if data.expectedErr == nil { gittest.RequireTree( t, cfg, repoPath, string(mergeTreeResult), - treeEntries, + data.expectedTreeEntries, ) } }) |