From 167017f89aaab05943d69ff127854bd52ca3455f Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Fri, 11 Oct 2013 20:21:41 -0500 Subject: [PATCH] Resource: do not mutate passed-in specs hash --- Library/Homebrew/resource.rb | 2 +- Library/Homebrew/test/test_resource.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 922fbfa598..c7d73ffa7c 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 a649ad1426..50ebd4c0fe 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