diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-05-02 18:15:25 +0200 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2016-05-26 13:58:01 +0200 |
commit | 309ca405fa30e1eeaeaeddc0c8918e65c98ebbf7 (patch) | |
tree | 914eedab813d679087ba1c008f91b98577bcb42a | |
parent | f2caad2467f318ec1359ee9b03509e831cde9d16 (diff) | |
download | gitlab-ce-309ca405fa30e1eeaeaeddc0c8918e65c98ebbf7.tar.gz |
Don't modify arguments in CommitRange#initialize
This method used to call strip! on input strings which will mess with
the strings if they're re-used or frozen.
-rw-r--r-- | app/models/commit_range.rb | 2 | ||||
-rw-r--r-- | spec/models/commit_range_spec.rb | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/app/models/commit_range.rb b/app/models/commit_range.rb index 51673897d98..4066958f67c 100644 --- a/app/models/commit_range.rb +++ b/app/models/commit_range.rb @@ -62,7 +62,7 @@ class CommitRange def initialize(range_string, project) @project = project - range_string.strip! + range_string = range_string.strip unless range_string =~ /\A#{PATTERN}\z/ raise ArgumentError, "invalid CommitRange string format: #{range_string}" diff --git a/spec/models/commit_range_spec.rb b/spec/models/commit_range_spec.rb index 9307d97e214..1cf51d8bab3 100644 --- a/spec/models/commit_range_spec.rb +++ b/spec/models/commit_range_spec.rb @@ -24,6 +24,16 @@ describe CommitRange, models: true do expect { described_class.new("Foo", project) }.to raise_error(ArgumentError) end + describe '#initialize' do + it 'does not modify strings in-place' do + input = "#{sha_from}...#{sha_to} " + + described_class.new(input, project) + + expect(input).to eq("#{sha_from}...#{sha_to} ") + end + end + describe '#to_s' do it 'is correct for three-dot syntax' do expect(range.to_s).to eq "#{full_sha_from}...#{full_sha_to}" |