summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2018-03-12 12:43:32 +0000
committerIan Baum <ibaum@gitlab.com>2018-03-15 13:13:52 -0500
commite5944b812d53b145f915c6a532a44f79e8ad7f1c (patch)
treede18c29520c1db1c1159de7d1a880dae3b3304a4
parentbf95d272e7221140cdf0ee36dae8f2c5ed350b35 (diff)
downloadgitlab-ce-e5944b812d53b145f915c6a532a44f79e8ad7f1c.tar.gz
Merge branch 'fix-code-search-500-with-non-ascii-filename' into 'master'
Fix code and wiki search results when filename is non-ASCII See merge request gitlab-org/gitlab-ce!17685
-rw-r--r--changelogs/unreleased/fix-code-search-500-with-non-ascii-filename.yml5
-rw-r--r--lib/gitlab/search_results.rb4
-rw-r--r--spec/lib/gitlab/project_search_results_spec.rb16
3 files changed, 21 insertions, 4 deletions
diff --git a/changelogs/unreleased/fix-code-search-500-with-non-ascii-filename.yml b/changelogs/unreleased/fix-code-search-500-with-non-ascii-filename.yml
new file mode 100644
index 00000000000..29e3b7be985
--- /dev/null
+++ b/changelogs/unreleased/fix-code-search-500-with-non-ascii-filename.yml
@@ -0,0 +1,5 @@
+---
+title: Fix code and wiki search results when filename is non-ASCII
+merge_request:
+author:
+type: fixed
diff --git a/lib/gitlab/search_results.rb b/lib/gitlab/search_results.rb
index 781783f4d97..c637b85b9f7 100644
--- a/lib/gitlab/search_results.rb
+++ b/lib/gitlab/search_results.rb
@@ -7,8 +7,8 @@ module Gitlab
def initialize(opts = {})
@id = opts.fetch(:id, nil)
- @filename = opts.fetch(:filename, nil)
- @basename = opts.fetch(:basename, nil)
+ @filename = encode_utf8(opts.fetch(:filename, nil))
+ @basename = encode_utf8(opts.fetch(:basename, nil))
@ref = opts.fetch(:ref, nil)
@startline = opts.fetch(:startline, nil)
@data = encode_utf8(opts.fetch(:data, nil))
diff --git a/spec/lib/gitlab/project_search_results_spec.rb b/spec/lib/gitlab/project_search_results_spec.rb
index d8250e4b4c6..367de8434f2 100644
--- a/spec/lib/gitlab/project_search_results_spec.rb
+++ b/spec/lib/gitlab/project_search_results_spec.rb
@@ -108,14 +108,26 @@ describe Gitlab::ProjectSearchResults do
context 'when the search returns non-ASCII data' do
context 'with UTF-8' do
- let(:results) { project.repository.search_files_by_content("файл", 'master') }
+ let(:results) { project.repository.search_files_by_content('файл', 'master') }
it 'returns results as UTF-8' do
expect(subject.filename).to eq('encoding/russian.rb')
expect(subject.basename).to eq('encoding/russian')
expect(subject.ref).to eq('master')
expect(subject.startline).to eq(1)
- expect(subject.data).to eq("Хороший файл")
+ expect(subject.data).to eq('Хороший файл')
+ end
+ end
+
+ context 'with UTF-8 in the filename' do
+ let(:results) { project.repository.search_files_by_content('webhook', 'master') }
+
+ it 'returns results as UTF-8' do
+ expect(subject.filename).to eq('encoding/テスト.txt')
+ expect(subject.basename).to eq('encoding/テスト')
+ expect(subject.ref).to eq('master')
+ expect(subject.startline).to eq(3)
+ expect(subject.data).to include('WebHookの確認')
end
end