aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJack Nagel2013-10-11 20:21:41 -0500
committerJack Nagel2013-10-11 20:21:41 -0500
commit167017f89aaab05943d69ff127854bd52ca3455f (patch)
treeaa5c590bb04582b8fd11e1d5f1e26f25a80e8891 /Library
parent40c0ed8a9a2c7355da6cf880b0d541afa8a2b60c (diff)
downloadbrew-167017f89aaab05943d69ff127854bd52ca3455f.tar.bz2
Resource: do not mutate passed-in specs hash
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/resource.rb2
-rw-r--r--Library/Homebrew/test/test_resource.rb8
2 files changed, 9 insertions, 1 deletions
diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb
index 922fbfa59..c7d73ffa7 100644
--- a/Library/Homebrew/resource.rb
+++ b/Library/Homebrew/resource.rb
@@ -99,8 +99,8 @@ class Resource
def url val=nil, specs={}
return @url if val.nil?
@url = val
- @using = specs.delete(:using)
@specs.merge!(specs)
+ @using = @specs.delete(:using)
end
def version val=nil
diff --git a/Library/Homebrew/test/test_resource.rb b/Library/Homebrew/test/test_resource.rb
index a649ad142..50ebd4c0f 100644
--- a/Library/Homebrew/test/test_resource.rb
+++ b/Library/Homebrew/test/test_resource.rb
@@ -40,6 +40,14 @@ class ResourceTests < Test::Unit::TestCase
assert_equal GitDownloadStrategy, @resource.download_strategy
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
@resource.version('1.0')
assert_version_equal '1.0', @resource.version