summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/extracts_path.rb14
-rw-r--r--spec/lib/extracts_path_spec.rb4
2 files changed, 9 insertions, 9 deletions
diff --git a/lib/extracts_path.rb b/lib/extracts_path.rb
index f36dae5289b..020ff5cdf14 100644
--- a/lib/extracts_path.rb
+++ b/lib/extracts_path.rb
@@ -56,22 +56,22 @@ module ExtractsPath
# Append a trailing slash if we only get a ref and no file path
id = input
- id += '/' unless id.include?('/')
-
+ id += '/' unless id.ends_with?('/')
+
valid_refs = @project.branches + @project.tags
- valid_refs.select! { |v| id.start_with?("#{v}/") }
-
+ valid_refs.select! { |v| id.start_with?("#{v.name}/") }
+
if valid_refs.length != 1
# No exact ref match, so just try our best
pair = id.match(/([^\/]+)(.*)/).captures
else
# Partition the string into the ref and the path, ignoring the empty first value
- pair = id.partition(valid_refs.first)[1..-1]
+ pair = id.partition(valid_refs.first.name)[1..-1]
end
end
- # Remove leading slash from path
- pair[1].gsub!(/^\//, '')
+ # Remove ending slashes from path
+ pair[1].gsub!(/^\/|\/$/, '')
pair
end
diff --git a/spec/lib/extracts_path_spec.rb b/spec/lib/extracts_path_spec.rb
index 8876373dffa..3ee729c93e8 100644
--- a/spec/lib/extracts_path_spec.rb
+++ b/spec/lib/extracts_path_spec.rb
@@ -7,8 +7,8 @@ describe ExtractsPath do
before do
@project = project
- project.stub(:branches).and_return(['master', 'foo/bar/baz'])
- project.stub(:tags).and_return(['v1.0.0', 'v2.0.0'])
+ project.stub(:branches).and_return([stub(name: 'master'), stub(name: 'foo/bar/baz')])
+ project.stub(:tags).and_return([stub(name: 'master'), stub(name: 'master')])
end
describe '#extract_ref' do