Fix for Gitaly nil encoding issue
This commit is contained in:
parent
d14230dd6b
commit
27cc1c2b28
4 changed files with 18 additions and 2 deletions
|
@ -233,6 +233,8 @@ module Gitlab
|
|||
end
|
||||
|
||||
def self.encode(s)
|
||||
return "" if s.nil?
|
||||
|
||||
s.dup.force_encoding(Encoding::ASCII_8BIT)
|
||||
end
|
||||
|
||||
|
|
|
@ -274,7 +274,7 @@ module Gitlab
|
|||
repository: @gitaly_repo,
|
||||
left_commit_id: from_id,
|
||||
right_commit_id: to_id,
|
||||
paths: options.fetch(:paths, []).map { |path| GitalyClient.encode(path) }
|
||||
paths: options.fetch(:paths, []).compact.map { |path| GitalyClient.encode(path) }
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ describe Gitlab::GitalyClient::CommitService do
|
|||
end
|
||||
|
||||
it 'encodes paths correctly' do
|
||||
expect { client.diff_from_parent(commit, paths: ['encoding/test.txt', 'encoding/テスト.txt']) }.not_to raise_error
|
||||
expect { client.diff_from_parent(commit, paths: ['encoding/test.txt', 'encoding/テスト.txt', nil]) }.not_to raise_error
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -38,6 +38,20 @@ describe Gitlab::GitalyClient, skip_gitaly_mock: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'encode' do
|
||||
[
|
||||
[nil, ""],
|
||||
["", ""],
|
||||
[" ", " "],
|
||||
%w(a1 a1),
|
||||
["编码", "\xE7\xBC\x96\xE7\xA0\x81".b]
|
||||
].each do |input, result|
|
||||
it "encodes #{input.inspect} to #{result.inspect}" do
|
||||
expect(described_class.encode(input)).to eq result
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'allow_n_plus_1_calls' do
|
||||
context 'when RequestStore is enabled', :request_store do
|
||||
it 'returns the result of the allow_n_plus_1_calls block' do
|
||||
|
|
Loading…
Reference in a new issue