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:
authorRobert Speicher <rspeicher@gmail.com>2020-07-14 23:42:31 +0300
committerRobert Speicher <rspeicher@gmail.com>2020-07-20 18:19:06 +0300
commit623be367ff5fa7822c9ca71dca4897376f30b999 (patch)
tree984cf56c12e739af26152a33ab5e0af50178c5aa
parent106bcd770d5d3c7ff5a6d0da53dedcbaf8fc4862 (diff)
Add tests for dry-run cherry picks and reverts
-rw-r--r--internal/service/operations/cherry_pick_test.go68
-rw-r--r--internal/service/operations/revert_test.go68
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])
+ }
})
}
}