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 | 56 | |
| 57 | 57 | # Append a trailing slash if we only get a ref and no file path |
| 58 | 58 | id = input |
| 59 | - id += '/' unless id.include?('/') | |
| 60 | - | |
| 59 | + id += '/' unless id.ends_with?('/') | |
| 60 | + | |
| 61 | 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 | 64 | if valid_refs.length != 1 |
| 65 | 65 | # No exact ref match, so just try our best |
| 66 | 66 | pair = id.match(/([^\/]+)(.*)/).captures |
| 67 | 67 | else |
| 68 | 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 | 70 | end |
| 71 | 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 | 76 | pair |
| 77 | 77 | end | ... | ... |
spec/lib/extracts_path_spec.rb
| ... | ... | @@ -7,8 +7,8 @@ describe ExtractsPath do |
| 7 | 7 | |
| 8 | 8 | before do |
| 9 | 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 | 12 | end |
| 13 | 13 | |
| 14 | 14 | describe '#extract_ref' do | ... | ... |