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:
authorKim Carlbäcker <kim.carlbacker@gmail.com>2018-06-07 13:55:27 +0300
committerKim Carlbäcker <kim.carlbacker@gmail.com>2018-06-07 13:55:27 +0300
commitedebf1a1a8e65c4c41f149a9e5b0239970417699 (patch)
treeeb7a294265c7ff7fbd8beef988aa0dd822006d38
parentec6f155bfba06b2f1d9029ba0766dad231bb6ef3 (diff)
parent726d07cb415e82953a67fe713ce719ee49168166 (diff)
Merge branch 'zj-unsupported-encoding' into 'master'
Reraise UnsupportedEncodingError as FailedPrecondition See merge request gitlab-org/gitaly!718
-rw-r--r--changelogs/unreleased/zj-unsupported-encoding.yml5
-rw-r--r--internal/service/conflicts/list_conflict_files_test.go33
-rw-r--r--ruby/lib/gitaly_server/conflicts_service.rb10
3 files changed, 46 insertions, 2 deletions
diff --git a/changelogs/unreleased/zj-unsupported-encoding.yml b/changelogs/unreleased/zj-unsupported-encoding.yml
new file mode 100644
index 000000000..a0aadb1ae
--- /dev/null
+++ b/changelogs/unreleased/zj-unsupported-encoding.yml
@@ -0,0 +1,5 @@
+---
+title: Reraise UnsupportedEncodingError as FailedPrecondition
+merge_request: 718
+author:
+type: fixed
diff --git a/internal/service/conflicts/list_conflict_files_test.go b/internal/service/conflicts/list_conflict_files_test.go
index 993b49426..3454f9de7 100644
--- a/internal/service/conflicts/list_conflict_files_test.go
+++ b/internal/service/conflicts/list_conflict_files_test.go
@@ -112,7 +112,38 @@ func TestFailedListConflictFilesRequestDueToConflictSideMissing(t *testing.T) {
TheirCommitOid: theirCommitOid,
}
- c, _ := client.ListConflictFiles(ctx, request)
+ c, err := client.ListConflictFiles(ctx, request)
+ require.NoError(t, err)
+ testhelper.RequireGrpcError(t, drainListConflictFilesResponse(c), codes.FailedPrecondition)
+}
+
+func TestFailedListConflictFilesFailedPrecondition(t *testing.T) {
+ server, serverSocketPath := runConflictsServer(t)
+ defer server.Stop()
+
+ client, conn := NewConflictsClient(t, serverSocketPath)
+ defer conn.Close()
+
+ testRepo, _, cleanupFn := testhelper.NewTestRepo(t)
+ defer cleanupFn()
+
+ // These commits have a conflict on the 'VERSION' file in the test repo.
+ // The conflict is expected to raise an encoding error.
+ ourCommitOid := "bd493d44ae3c4dd84ce89cb75be78c4708cbd548"
+ theirCommitOid := "7df99c9ad5b8c9bfc5ae4fb7a91cc87adcce02ef"
+
+ ctx, cancel := testhelper.Context()
+ defer cancel()
+
+ request := &pb.ListConflictFilesRequest{
+ Repository: testRepo,
+ OurCommitOid: ourCommitOid,
+ TheirCommitOid: theirCommitOid,
+ }
+
+ c, err := client.ListConflictFiles(ctx, request)
+ require.NoError(t, err)
+
testhelper.RequireGrpcError(t, drainListConflictFilesResponse(c), codes.FailedPrecondition)
}
diff --git a/ruby/lib/gitaly_server/conflicts_service.rb b/ruby/lib/gitaly_server/conflicts_service.rb
index 0105c5e32..e44a7c7d8 100644
--- a/ruby/lib/gitaly_server/conflicts_service.rb
+++ b/ruby/lib/gitaly_server/conflicts_service.rb
@@ -14,7 +14,7 @@ module GitalyServer
msg_size = 0
Enumerator.new do |y|
- conflicts.each do |file|
+ enumerate_conflicts(conflicts) do |file|
files << Gitaly::ConflictFile.new(header: conflict_file_header(file))
strio = StringIO.new(file.content)
@@ -88,5 +88,13 @@ module GitalyServer
our_mode: file.our_mode
)
end
+
+ def enumerate_conflicts(conflicts)
+ conflicts.each do |file|
+ yield file
+ end
+ rescue Gitlab::Git::Conflict::File::UnsupportedEncoding => e
+ raise GRPC::FailedPrecondition.new(e.message)
+ end
end
end