diff options
author | Kim "BKC" Carlbäcker <kim.carlbacker@gmail.com> | 2018-05-29 17:38:05 +0300 |
---|---|---|
committer | Kim "BKC" Carlbäcker <kim.carlbacker@gmail.com> | 2018-05-29 17:38:05 +0300 |
commit | 6d8ec9764f064377ae4e3ecf0c06c7300cc1a198 (patch) | |
tree | 76c6b65e835ed7e0d366df419a9be3824a1a5ea4 | |
parent | 5390620c16663b6fd379e667f6eabda598c30977 (diff) |
broken impl.1141-rewrite-commit-diff-broken
-rw-r--r-- | internal/service/diff/commit.go | 2 | ||||
-rw-r--r-- | internal/service/diff/commit_test.go | 16 | ||||
-rw-r--r-- | ruby/lib/gitaly_server/diff_service.rb | 8 |
3 files changed, 17 insertions, 9 deletions
diff --git a/internal/service/diff/commit.go b/internal/service/diff/commit.go index 66eeda178..e32b81d01 100644 --- a/internal/service/diff/commit.go +++ b/internal/service/diff/commit.go @@ -20,7 +20,7 @@ type requestWithLeftRightCommitIds interface { } func (s *server) CommitDiff(in *pb.CommitDiffRequest, stream pb.DiffService_CommitDiffServer) error { - if true { + if false { if err := validateRequest(in); err != nil { return status.Errorf(codes.InvalidArgument, "CommitDiff: %v", err) } diff --git a/internal/service/diff/commit_test.go b/internal/service/diff/commit_test.go index 8a0e5ec60..8e062a9ed 100644 --- a/internal/service/diff/commit_test.go +++ b/internal/service/diff/commit_test.go @@ -10,6 +10,7 @@ import ( "gitlab.com/gitlab-org/gitaly/internal/diff" "gitlab.com/gitlab-org/gitaly/internal/testhelper" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "golang.org/x/net/context" "google.golang.org/grpc/codes" @@ -600,22 +601,25 @@ func TestSuccessfulCommitDiffRequestWithLimits(t *testing.T) { receivedDiffs := getDiffsFromCommitDiffClient(t, c) - for _, v := range receivedDiffs { - t.Logf("%q", v.FromPath) + i := 0 + for j, v := range receivedDiffs { + t.Logf("%s == %s", v.FromPath, requestAndResult.result[j].path) + i = i + len(v.Patch) } + t.Logf("bytes: %d", i) require.Equal(t, len(requestAndResult.result), len(receivedDiffs), "number of diffs received") for i, diff := range receivedDiffs { if overflowMarker := requestAndResult.result[i].overflowMarker; overflowMarker { - require.Equal(t, overflowMarker, diff.OverflowMarker, "overflow marker on %q", diff.FromPath) + assert.Equal(t, overflowMarker, diff.OverflowMarker, "overflow marker on %q", diff.FromPath) continue } - require.Equal(t, requestAndResult.result[i].path, string(diff.FromPath), "path on %q", diff.FromPath) + assert.Equal(t, requestAndResult.result[i].path, string(diff.FromPath), "path on %q", diff.FromPath) collapsed := requestAndResult.result[i].collapsed - require.Equal(t, collapsed, diff.Collapsed, "collapsed on %q", diff.FromPath) + assert.Equal(t, collapsed, diff.Collapsed, "collapsed on %q", diff.FromPath) if collapsed { - require.Empty(t, diff.Patch, "patch on %q", diff.FromPath) + assert.Empty(t, diff.Patch, "patch on %q", diff.FromPath) } } }) diff --git a/ruby/lib/gitaly_server/diff_service.rb b/ruby/lib/gitaly_server/diff_service.rb index 85993e2ef..91f149680 100644 --- a/ruby/lib/gitaly_server/diff_service.rb +++ b/ruby/lib/gitaly_server/diff_service.rb @@ -35,7 +35,9 @@ module GitalyServer Enumerator.new do |y| begin diffs = repo.diff(request.left_commit_id, request.right_commit_id, options, *request.paths.to_a) - diffs.each do |diff| + diffsarr = diffs.to_a + difs_len = diffsarr.length + diffsarr.each_with_index do |diff, idx| response = Gitaly::CommitDiffResponse.new( :from_path => diff.old_path.b, :to_path => diff.new_path.b, @@ -44,9 +46,11 @@ module GitalyServer :old_mode => diff.a_mode.to_i(base=8), :new_mode => diff.b_mode.to_i(base=8), :binary => diff.has_binary_notice?, - :overflow_marker => diff.too_large?, :collapsed => diff.collapsed? ) + if idx == difs_len - 1 && diffs.overflow? + break + end io = StringIO.new(diff.diff) chunk = io.read(Gitlab.config.git.write_buffer_size) |