From f2ebc0e32546146f6a4773c8386b3e19df1f784e Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Fri, 13 Sep 2013 09:51:23 -0500 Subject: [PATCH] Stop mutating dependency specifications --- Library/Homebrew/dependency_collector.rb | 6 +++++- Library/Homebrew/test/test_dependency_collector.rb | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/dependency_collector.rb b/Library/Homebrew/dependency_collector.rb index 378e12cbbe..8d0aac452c 100644 --- a/Library/Homebrew/dependency_collector.rb +++ b/Library/Homebrew/dependency_collector.rb @@ -40,7 +40,7 @@ class DependencyCollector def build(spec) spec, tags = case spec - when Hash then spec.shift + when Hash then destructure_spec_hash(spec) else spec end @@ -49,6 +49,10 @@ class DependencyCollector private + def destructure_spec_hash(spec) + spec.each { |o| return o } + end + def parse_spec(spec, tags) case spec when String diff --git a/Library/Homebrew/test/test_dependency_collector.rb b/Library/Homebrew/test/test_dependency_collector.rb index dafc83da09..f12fef7972 100644 --- a/Library/Homebrew/test/test_dependency_collector.rb +++ b/Library/Homebrew/test/test_dependency_collector.rb @@ -128,4 +128,11 @@ class DependencyCollectorTests < Test::Unit::TestCase def test_raises_typeerror_for_unknown_types assert_raises(TypeError) { @d.add(Object.new) } end + + def test_does_not_mutate_dependency_spec + spec = { 'foo' => :optional } + copy = spec.dup + @d.add(spec) + assert_equal copy, spec + end end