summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2016-08-19 18:01:12 +0000
committerRuben Davila <rdavila84@gmail.com>2016-08-19 15:31:02 -0500
commitebc9d34d242e9c7821bef64acb07a5101525604d (patch)
treea24a871e9b905942af1bbf5d1e353870d14430f3
parent594f938927d273f637a68c4bb5e3271f689d17b6 (diff)
downloadgitlab-ce-ebc9d34d242e9c7821bef64acb07a5101525604d.tar.gz
Merge branch 'directory-names-containing-space' into 'master'
Do not escape URI when extracting path ## What does this MR do? - remove escaping of URI parameters after they have already been unescaped in `ExtractsPath` - remove spec that is relying on that behavior ## Why was this MR needed? - spaces in directory names were escaped leading to 404 errors on repository files page ## What are the relevant issue numbers? fixes gitlab-com/support-forum#952, #21106 See merge request !5878
-rw-r--r--CHANGELOG2
-rw-r--r--lib/extracts_path.rb12
-rw-r--r--spec/lib/extracts_path_spec.rb21
3 files changed, 15 insertions, 20 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 0e9a36ca73f..8285976ae28 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -25,6 +25,8 @@ v 8.11.0 (unreleased)
- Ignore URLs starting with // in Markdown links !5677 (winniehell)
- Fix CI status icon link underline (ClemMakesApps)
- The Repository class is now instrumented
+ - Fix commit mention font inconsistency (ClemMakesApps)
+ - Do not escape URI when extracting path !5878 (winniehell)
- Fix filter label tooltip HTML rendering (ClemMakesApps)
- Cache the commit author in RequestStore to avoid extra lookups in PostReceive
- Expand commit message width in repo view (ClemMakesApps)
diff --git a/lib/extracts_path.rb b/lib/extracts_path.rb
index 84688f6646e..a293fa2752f 100644
--- a/lib/extracts_path.rb
+++ b/lib/extracts_path.rb
@@ -94,7 +94,9 @@ module ExtractsPath
@options = params.select {|key, value| allowed_options.include?(key) && !value.blank? }
@options = HashWithIndifferentAccess.new(@options)
- @id = Addressable::URI.normalize_component(get_id)
+ @id = params[:id] || params[:ref]
+ @id += "/" + params[:path] unless params[:path].blank?
+
@ref, @path = extract_ref(@id)
@repo = @project.repository
if @options[:extended_sha1].blank?
@@ -116,12 +118,4 @@ module ExtractsPath
def tree
@tree ||= @repo.tree(@commit.id, @path)
end
-
- private
-
- def get_id
- id = params[:id] || params[:ref]
- id += "/" + params[:path] unless params[:path].blank?
- id
- end
end
diff --git a/spec/lib/extracts_path_spec.rb b/spec/lib/extracts_path_spec.rb
index 36c77206a3f..86d04ecfa36 100644
--- a/spec/lib/extracts_path_spec.rb
+++ b/spec/lib/extracts_path_spec.rb
@@ -30,17 +30,6 @@ describe ExtractsPath, lib: true do
expect(@logs_path).to eq("/#{@project.path_with_namespace}/refs/#{ref}/logs_tree/files/ruby/popen.rb")
end
- context 'escaped slash character in ref' do
- let(:ref) { 'improve%2Fawesome' }
-
- it 'has no escape sequences in @ref or @logs_path' do
- assign_ref_vars
-
- expect(@ref).to eq('improve/awesome')
- expect(@logs_path).to eq("/#{@project.path_with_namespace}/refs/#{ref}/logs_tree/files/ruby/popen.rb")
- end
- end
-
context 'ref contains %20' do
let(:ref) { 'foo%20bar' }
@@ -52,6 +41,16 @@ describe ExtractsPath, lib: true do
expect(@id).to start_with('foo%20bar/')
end
end
+
+ context 'path contains space' do
+ let(:params) { { path: 'with space', ref: '38008cb17ce1466d8fec2dfa6f6ab8dcfe5cf49e' } }
+
+ it 'is not converted to %20 in @path' do
+ assign_ref_vars
+
+ expect(@path).to eq(params[:path])
+ end
+ end
end
describe '#extract_ref' do