aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2013-09-13 09:51:23 -0500
committerJack Nagel2013-09-13 09:57:53 -0500
commitf2ebc0e32546146f6a4773c8386b3e19df1f784e (patch)
tree6679ae85fc5db39c4c1d93ad51e7bdce27fc5191
parent448ce269804afa6a8914323e07edcd0ce1d9d1c4 (diff)
downloadbrew-f2ebc0e32546146f6a4773c8386b3e19df1f784e.tar.bz2
Stop mutating dependency specifications
-rw-r--r--Library/Homebrew/dependency_collector.rb6
-rw-r--r--Library/Homebrew/test/test_dependency_collector.rb7
2 files changed, 12 insertions, 1 deletions
diff --git a/Library/Homebrew/dependency_collector.rb b/Library/Homebrew/dependency_collector.rb
index 378e12cbb..8d0aac452 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 dafc83da0..f12fef797 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