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.
This commit is contained in:
parent
f2caad2467
commit
309ca405fa
2 changed files with 11 additions and 1 deletions
|
@ -62,7 +62,7 @@ class CommitRange
|
||||||
def initialize(range_string, project)
|
def initialize(range_string, project)
|
||||||
@project = project
|
@project = project
|
||||||
|
|
||||||
range_string.strip!
|
range_string = range_string.strip
|
||||||
|
|
||||||
unless range_string =~ /\A#{PATTERN}\z/
|
unless range_string =~ /\A#{PATTERN}\z/
|
||||||
raise ArgumentError, "invalid CommitRange string format: #{range_string}"
|
raise ArgumentError, "invalid CommitRange string format: #{range_string}"
|
||||||
|
|
|
@ -24,6 +24,16 @@ describe CommitRange, models: true do
|
||||||
expect { described_class.new("Foo", project) }.to raise_error(ArgumentError)
|
expect { described_class.new("Foo", project) }.to raise_error(ArgumentError)
|
||||||
end
|
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
|
describe '#to_s' do
|
||||||
it 'is correct for three-dot syntax' do
|
it 'is correct for three-dot syntax' do
|
||||||
expect(range.to_s).to eq "#{full_sha_from}...#{full_sha_to}"
|
expect(range.to_s).to eq "#{full_sha_from}...#{full_sha_to}"
|
||||||
|
|
Loading…
Reference in a new issue