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 |