diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2018-08-26 12:56:08 +0300 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2018-08-27 10:59:18 +0300 |
commit | 60dd5be3782a53f2d10c2d0805616e5a98f4d66c (patch) | |
tree | 0ac95451efccccbe3c7fb088eacee63039a0baa3 | |
parent | ac71ee6271e2b545a063a3598531d53cb0928ef5 (diff) |
Allow merge base to take more than 2 revisions
`git merge-base` allows finding the common ancestor between more than
2 revisions. gitaly-proto already allows this.
Now gitaly validates that it gets at least 2 refs, and we tested
finding the common ancestor for more than 2 refs.
-rw-r--r-- | changelogs/unreleased/bvl-merge-base-multiple-revisions.yml | 5 | ||||
-rw-r--r-- | internal/service/repository/merge_base.go | 4 | ||||
-rw-r--r-- | internal/service/repository/merge_base_test.go | 52 |
3 files changed, 25 insertions, 36 deletions
diff --git a/changelogs/unreleased/bvl-merge-base-multiple-revisions.yml b/changelogs/unreleased/bvl-merge-base-multiple-revisions.yml new file mode 100644 index 000000000..be4b55d83 --- /dev/null +++ b/changelogs/unreleased/bvl-merge-base-multiple-revisions.yml @@ -0,0 +1,5 @@ +--- +title: Allow merge base to receive more than 2 revisions +merge_request: 869 +author: +type: changed diff --git a/internal/service/repository/merge_base.go b/internal/service/repository/merge_base.go index a9c5692e1..597f5bee1 100644 --- a/internal/service/repository/merge_base.go +++ b/internal/service/repository/merge_base.go @@ -14,8 +14,8 @@ import ( func (s *server) FindMergeBase(ctx context.Context, req *pb.FindMergeBaseRequest) (*pb.FindMergeBaseResponse, error) { revisions := req.GetRevisions() - if len(revisions) != 2 { - return nil, status.Errorf(codes.InvalidArgument, "FindMergeBase: 2 revisions are required") + if len(revisions) < 2 { + return nil, status.Errorf(codes.InvalidArgument, "FindMergeBase: at least 2 revisions are required") } args := []string{"merge-base"} diff --git a/internal/service/repository/merge_base_test.go b/internal/service/repository/merge_base_test.go index 79688ae69..53cc54d3b 100644 --- a/internal/service/repository/merge_base_test.go +++ b/internal/service/repository/merge_base_test.go @@ -58,6 +58,15 @@ func TestSuccessfulFindFindMergeBaseRequest(t *testing.T) { }, base: "", }, + { + desc: "2+ revisions", + revisions: [][]byte{ + []byte("few-commits"), + []byte("master"), + []byte("570e7b2abdd848b95f2f578043fc23bd6f6fd24d"), + }, + base: "1a0b36b3cdad1d2ee32457c102a8c0b7056fa863", + }, } for _, testCase := range testCases { @@ -88,41 +97,16 @@ func TestFailedFindMergeBaseRequestDueToValidations(t *testing.T) { testRepo, _, cleanupFn := testhelper.NewTestRepo(t) defer cleanupFn() - testCases := []struct { - desc string - revisions [][]byte - code codes.Code - }{ - { - desc: "1 revision", - revisions: [][]byte{ - []byte("372ab6950519549b14d220271ee2322caa44d4eb"), - }, - code: codes.InvalidArgument, - }, - { - desc: "2+ revisions", - revisions: [][]byte{ - []byte("master"), - []byte("gitaly-stuff"), - []byte("spooky-stuff"), - }, - code: codes.InvalidArgument, + ctx, cancel := testhelper.Context() + defer cancel() + + request := &pb.FindMergeBaseRequest{ + Repository: testRepo, + Revisions: [][]byte{ + []byte("372ab6950519549b14d220271ee2322caa44d4eb"), }, } - for _, testCase := range testCases { - t.Run(testCase.desc, func(t *testing.T) { - ctx, cancel := testhelper.Context() - defer cancel() - - request := &pb.FindMergeBaseRequest{ - Repository: testRepo, - Revisions: testCase.revisions, - } - - _, err := client.FindMergeBase(ctx, request) - testhelper.RequireGrpcError(t, err, testCase.code) - }) - } + _, err := client.FindMergeBase(ctx, request) + testhelper.RequireGrpcError(t, err, codes.InvalidArgument) } |