Commit e25ddca0c462522703af93822863023f4a754390
1 parent
73d5e51a
Exists in
master
and in
4 other branches
Fix bug with branches whose name contains slash
Showing
2 changed files
with
9 additions
and
9 deletions
Show diff stats
lib/extracts_path.rb
@@ -56,22 +56,22 @@ module ExtractsPath | @@ -56,22 +56,22 @@ module ExtractsPath | ||
56 | 56 | ||
57 | # Append a trailing slash if we only get a ref and no file path | 57 | # Append a trailing slash if we only get a ref and no file path |
58 | id = input | 58 | id = input |
59 | - id += '/' unless id.include?('/') | ||
60 | - | 59 | + id += '/' unless id.ends_with?('/') |
60 | + | ||
61 | valid_refs = @project.branches + @project.tags | 61 | valid_refs = @project.branches + @project.tags |
62 | - valid_refs.select! { |v| id.start_with?("#{v}/") } | ||
63 | - | 62 | + valid_refs.select! { |v| id.start_with?("#{v.name}/") } |
63 | + | ||
64 | if valid_refs.length != 1 | 64 | if valid_refs.length != 1 |
65 | # No exact ref match, so just try our best | 65 | # No exact ref match, so just try our best |
66 | pair = id.match(/([^\/]+)(.*)/).captures | 66 | pair = id.match(/([^\/]+)(.*)/).captures |
67 | else | 67 | else |
68 | # Partition the string into the ref and the path, ignoring the empty first value | 68 | # Partition the string into the ref and the path, ignoring the empty first value |
69 | - pair = id.partition(valid_refs.first)[1..-1] | 69 | + pair = id.partition(valid_refs.first.name)[1..-1] |
70 | end | 70 | end |
71 | end | 71 | end |
72 | 72 | ||
73 | - # Remove leading slash from path | ||
74 | - pair[1].gsub!(/^\//, '') | 73 | + # Remove ending slashes from path |
74 | + pair[1].gsub!(/^\/|\/$/, '') | ||
75 | 75 | ||
76 | pair | 76 | pair |
77 | end | 77 | end |
spec/lib/extracts_path_spec.rb
@@ -7,8 +7,8 @@ describe ExtractsPath do | @@ -7,8 +7,8 @@ describe ExtractsPath do | ||
7 | 7 | ||
8 | before do | 8 | before do |
9 | @project = project | 9 | @project = project |
10 | - project.stub(:branches).and_return(['master', 'foo/bar/baz']) | ||
11 | - project.stub(:tags).and_return(['v1.0.0', 'v2.0.0']) | 10 | + project.stub(:branches).and_return([stub(name: 'master'), stub(name: 'foo/bar/baz')]) |
11 | + project.stub(:tags).and_return([stub(name: 'master'), stub(name: 'master')]) | ||
12 | end | 12 | end |
13 | 13 | ||
14 | describe '#extract_ref' do | 14 | describe '#extract_ref' do |