Resource: do not mutate passed-in specs hash

This commit is contained in:
Jack Nagel 2013-10-11 20:21:41 -05:00
parent 40c0ed8a9a
commit 167017f89a
2 changed files with 9 additions and 1 deletions

View File

@ -99,8 +99,8 @@ class Resource
def url val=nil, specs={} def url val=nil, specs={}
return @url if val.nil? return @url if val.nil?
@url = val @url = val
@using = specs.delete(:using)
@specs.merge!(specs) @specs.merge!(specs)
@using = @specs.delete(:using)
end end
def version val=nil def version val=nil

View File

@ -40,6 +40,14 @@ class ResourceTests < Test::Unit::TestCase
assert_equal GitDownloadStrategy, @resource.download_strategy assert_equal GitDownloadStrategy, @resource.download_strategy
end end
def test_does_not_mutate_specs_hash
specs = { :using => :git, :branch => 'master' }
@resource.url('foo', specs)
assert_equal({ :branch => 'master' }, @resource.specs)
assert_equal(:git, @resource.using)
assert_equal({ :using => :git, :branch => 'master' }, specs)
end
def test_version def test_version
@resource.version('1.0') @resource.version('1.0')
assert_version_equal '1.0', @resource.version assert_version_equal '1.0', @resource.version