diff options
author | Robert Speicher <rspeicher@gmail.com> | 2020-07-14 23:42:31 +0300 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2020-07-20 18:19:06 +0300 |
commit | 623be367ff5fa7822c9ca71dca4897376f30b999 (patch) | |
tree | 984cf56c12e739af26152a33ab5e0af50178c5aa | |
parent | 106bcd770d5d3c7ff5a6d0da53dedcbaf8fc4862 (diff) |
Add tests for dry-run cherry picks and reverts
-rw-r--r-- | internal/service/operations/cherry_pick_test.go | 68 | ||||
-rw-r--r-- | internal/service/operations/revert_test.go | 68 |
2 files changed, 128 insertions, 8 deletions
diff --git a/internal/service/operations/cherry_pick_test.go b/internal/service/operations/cherry_pick_test.go index 6bbb68acb..1af9c5974 100644 --- a/internal/service/operations/cherry_pick_test.go +++ b/internal/service/operations/cherry_pick_test.go @@ -34,9 +34,11 @@ func TestSuccessfulUserCherryPickRequest(t *testing.T) { cherryPickedCommit, err := log.GetCommit(ctxOuter, testRepo, "8a0f2ee90d940bfb0ba1e14e8214b0649056e4ab") require.NoError(t, err) - testRepoCopy, _, cleanup := testhelper.NewTestRepo(t) + testRepoCopy, testRepoCopyPath, cleanup := testhelper.NewTestRepo(t) // read-only repo defer cleanup() + testhelper.MustRunCommand(t, nil, "git", "-C", testRepoCopyPath, "branch", destinationBranch, "master") + testCases := []struct { desc string request *gitalypb.UserCherryPickRequest @@ -90,6 +92,58 @@ func TestSuccessfulUserCherryPickRequest(t *testing.T) { }, branchUpdate: &gitalypb.OperationBranchUpdate{BranchCreated: true}, }, + { + desc: "branch exists with dry run", + request: &gitalypb.UserCherryPickRequest{ + Repository: testRepoCopy, + User: testhelper.TestUser, + Commit: cherryPickedCommit, + BranchName: []byte(destinationBranch), + Message: []byte("Cherry-picking " + cherryPickedCommit.Id), + DryRun: true, + }, + branchUpdate: &gitalypb.OperationBranchUpdate{}, + }, + { + desc: "nonexistent branch + start_repository == repository with dry run", + request: &gitalypb.UserCherryPickRequest{ + Repository: testRepoCopy, + User: testhelper.TestUser, + Commit: cherryPickedCommit, + BranchName: []byte("to-be-cherry-picked-into-1"), + Message: []byte("Cherry-picking " + cherryPickedCommit.Id), + StartBranchName: []byte("master"), + DryRun: true, + }, + branchUpdate: &gitalypb.OperationBranchUpdate{BranchCreated: true}, + }, + { + desc: "nonexistent branch + start_repository != repository with dry run", + request: &gitalypb.UserCherryPickRequest{ + Repository: testRepoCopy, + User: testhelper.TestUser, + Commit: cherryPickedCommit, + BranchName: []byte("to-be-cherry-picked-into-2"), + Message: []byte("Cherry-picking " + cherryPickedCommit.Id), + StartRepository: testRepoCopy, + StartBranchName: []byte("master"), + DryRun: true, + }, + branchUpdate: &gitalypb.OperationBranchUpdate{BranchCreated: true}, + }, + { + desc: "nonexistent branch + empty start_repository with dry run", + request: &gitalypb.UserCherryPickRequest{ + Repository: testRepoCopy, + User: testhelper.TestUser, + Commit: cherryPickedCommit, + BranchName: []byte("to-be-cherry-picked-into-3"), + Message: []byte("Cherry-picking " + cherryPickedCommit.Id), + StartBranchName: []byte("master"), + DryRun: true, + }, + branchUpdate: &gitalypb.OperationBranchUpdate{BranchCreated: true}, + }, } for _, testCase := range testCases { @@ -100,7 +154,7 @@ func TestSuccessfulUserCherryPickRequest(t *testing.T) { response, err := client.UserCherryPick(ctx, testCase.request) require.NoError(t, err) - headCommit, err := log.GetCommit(ctx, testRepo, string(testCase.request.BranchName)) + headCommit, err := log.GetCommit(ctx, testCase.request.Repository, string(testCase.request.BranchName)) require.NoError(t, err) expectedBranchUpdate := testCase.branchUpdate @@ -109,8 +163,14 @@ func TestSuccessfulUserCherryPickRequest(t *testing.T) { require.Equal(t, expectedBranchUpdate, response.BranchUpdate) require.Empty(t, response.CreateTreeError) require.Empty(t, response.CreateTreeErrorCode) - require.Equal(t, testCase.request.Message, headCommit.Subject) - require.Equal(t, masterHeadCommit.Id, headCommit.ParentIds[0]) + + if testCase.request.DryRun { + require.Equal(t, masterHeadCommit.Subject, headCommit.Subject) + require.Equal(t, masterHeadCommit.Id, headCommit.Id) + } else { + require.Equal(t, testCase.request.Message, headCommit.Subject) + require.Equal(t, masterHeadCommit.Id, headCommit.ParentIds[0]) + } }) } } diff --git a/internal/service/operations/revert_test.go b/internal/service/operations/revert_test.go index 392255087..0a2af6296 100644 --- a/internal/service/operations/revert_test.go +++ b/internal/service/operations/revert_test.go @@ -34,9 +34,11 @@ func TestSuccessfulUserRevertRequest(t *testing.T) { revertedCommit, err := log.GetCommit(ctxOuter, testRepo, "d59c60028b053793cecfb4022de34602e1a9218e") require.NoError(t, err) - testRepoCopy, _, cleanup := testhelper.NewTestRepo(t) + testRepoCopy, testRepoCopyPath, cleanup := testhelper.NewTestRepo(t) // read-only repo defer cleanup() + testhelper.MustRunCommand(t, nil, "git", "-C", testRepoCopyPath, "branch", destinationBranch, "master") + testCases := []struct { desc string request *gitalypb.UserRevertRequest @@ -90,6 +92,58 @@ func TestSuccessfulUserRevertRequest(t *testing.T) { }, branchUpdate: &gitalypb.OperationBranchUpdate{BranchCreated: true}, }, + { + desc: "branch exists with dry run", + request: &gitalypb.UserRevertRequest{ + Repository: testRepoCopy, + User: testhelper.TestUser, + Commit: revertedCommit, + BranchName: []byte(destinationBranch), + Message: []byte("Reverting " + revertedCommit.Id), + DryRun: true, + }, + branchUpdate: &gitalypb.OperationBranchUpdate{}, + }, + { + desc: "nonexistent branch + start_repository == repository with dry run", + request: &gitalypb.UserRevertRequest{ + Repository: testRepoCopy, + User: testhelper.TestUser, + Commit: revertedCommit, + BranchName: []byte("to-be-reverted-into-1"), + Message: []byte("Reverting " + revertedCommit.Id), + StartBranchName: []byte("master"), + DryRun: true, + }, + branchUpdate: &gitalypb.OperationBranchUpdate{BranchCreated: true}, + }, + { + desc: "nonexistent branch + start_repository != repository with dry run", + request: &gitalypb.UserRevertRequest{ + Repository: testRepoCopy, + User: testhelper.TestUser, + Commit: revertedCommit, + BranchName: []byte("to-be-reverted-into-2"), + Message: []byte("Reverting " + revertedCommit.Id), + StartRepository: testRepoCopy, + StartBranchName: []byte("master"), + DryRun: true, + }, + branchUpdate: &gitalypb.OperationBranchUpdate{BranchCreated: true}, + }, + { + desc: "nonexistent branch + empty start_repository with dry run", + request: &gitalypb.UserRevertRequest{ + Repository: testRepoCopy, + User: testhelper.TestUser, + Commit: revertedCommit, + BranchName: []byte("to-be-reverted-into-3"), + Message: []byte("Reverting " + revertedCommit.Id), + StartBranchName: []byte("master"), + DryRun: true, + }, + branchUpdate: &gitalypb.OperationBranchUpdate{BranchCreated: true}, + }, } for _, testCase := range testCases { @@ -100,7 +154,7 @@ func TestSuccessfulUserRevertRequest(t *testing.T) { response, err := client.UserRevert(ctx, testCase.request) require.NoError(t, err) - headCommit, err := log.GetCommit(ctx, testRepo, string(testCase.request.BranchName)) + headCommit, err := log.GetCommit(ctx, testCase.request.Repository, string(testCase.request.BranchName)) require.NoError(t, err) expectedBranchUpdate := testCase.branchUpdate @@ -109,8 +163,14 @@ func TestSuccessfulUserRevertRequest(t *testing.T) { require.Equal(t, expectedBranchUpdate, response.BranchUpdate) require.Empty(t, response.CreateTreeError) require.Empty(t, response.CreateTreeErrorCode) - require.Equal(t, testCase.request.Message, headCommit.Subject) - require.Equal(t, masterHeadCommit.Id, headCommit.ParentIds[0]) + + if testCase.request.DryRun { + require.Equal(t, masterHeadCommit.Subject, headCommit.Subject) + require.Equal(t, masterHeadCommit.Id, headCommit.Id) + } else { + require.Equal(t, testCase.request.Message, headCommit.Subject) + require.Equal(t, masterHeadCommit.Id, headCommit.ParentIds[0]) + } }) } } |