Merge branch 'sh-fix-utf-8-encoding-resolve-conflicts' into 'master'
Fix UTF-8 conversion issues when resolving conflicts Closes #63062 See merge request gitlab-org/gitlab-ce!29453
This commit is contained in:
commit
641d332351
3 changed files with 28 additions and 4 deletions
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix UTF-8 conversion issues when resolving conflicts
|
||||
merge_request: 29453
|
||||
author:
|
||||
type: fixed
|
|
@ -65,9 +65,9 @@ module Gitlab
|
|||
our_commit_oid: @our_commit_oid,
|
||||
target_repository: target_repository.gitaly_repository,
|
||||
their_commit_oid: @their_commit_oid,
|
||||
source_branch: source_branch,
|
||||
target_branch: target_branch,
|
||||
commit_message: resolution.commit_message,
|
||||
source_branch: encode_binary(source_branch),
|
||||
target_branch: encode_binary(target_branch),
|
||||
commit_message: encode_binary(resolution.commit_message),
|
||||
user: Gitlab::Git::User.from_gitlab(resolution.user).to_gitaly
|
||||
)
|
||||
end
|
||||
|
|
|
@ -35,7 +35,7 @@ describe Gitlab::GitalyClient::ConflictsService do
|
|||
end
|
||||
let(:source_branch) { 'master' }
|
||||
let(:target_branch) { 'feature' }
|
||||
let(:commit_message) { 'Solving conflicts' }
|
||||
let(:commit_message) { 'Solving conflicts\n\nTést' }
|
||||
let(:resolution) do
|
||||
Gitlab::Git::Conflict::Resolution.new(user, files, commit_message)
|
||||
end
|
||||
|
@ -51,6 +51,25 @@ describe Gitlab::GitalyClient::ConflictsService do
|
|||
subject
|
||||
end
|
||||
|
||||
context 'with branches with UTF-8 characters' do
|
||||
let(:source_branch) { 'testòbranch' }
|
||||
let(:target_branch) { 'ábranch' }
|
||||
|
||||
it 'handles commit messages with UTF-8 characters' do
|
||||
allow(::Gitlab::GitalyClient).to receive(:call).and_call_original
|
||||
expect(::Gitlab::GitalyClient).to receive(:call).with(anything, :conflicts_service, :resolve_conflicts, any_args) do |*args|
|
||||
# Force the generation of request messages by iterating through the enumerator
|
||||
message = args[3].to_a.first
|
||||
params = [message.header.commit_message, message.header.source_branch, message.header.target_branch]
|
||||
expect(params.map(&:encoding).uniq).to eq([Encoding::ASCII_8BIT])
|
||||
|
||||
double(resolution_error: nil)
|
||||
end
|
||||
|
||||
subject
|
||||
end
|
||||
end
|
||||
|
||||
it 'raises a relevant exception if resolution_error is present' do
|
||||
expect_any_instance_of(Gitaly::ConflictsService::Stub).to receive(:resolve_conflicts)
|
||||
.with(kind_of(Enumerator), kind_of(Hash)).and_return(double(resolution_error: "something happened"))
|
||||
|
|
Loading…
Reference in a new issue