aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2014-02-27 14:22:43 -0600
committerJack Nagel2014-02-27 14:22:43 -0600
commit1fdf69b90382c43493a5f62f0020729289db6c70 (patch)
tree5df567171d0085263c955ee2c9d122b076d3d20d
parent87ae0ab795e44a70bedcb93d56dd84660db0d88e (diff)
downloadhomebrew-1fdf69b90382c43493a5f62f0020729289db6c70.tar.bz2
Eliminate mutation of Dependency objects
-rw-r--r--Library/Homebrew/dependency.rb19
-rw-r--r--Library/Homebrew/requirement.rb5
-rw-r--r--Library/Homebrew/test/test_dependency_expansion.rb5
3 files changed, 13 insertions, 16 deletions
diff --git a/Library/Homebrew/dependency.rb b/Library/Homebrew/dependency.rb
index 02d981b01..f2da14a06 100644
--- a/Library/Homebrew/dependency.rb
+++ b/Library/Homebrew/dependency.rb
@@ -4,12 +4,15 @@ require 'dependable'
class Dependency
include Dependable
- attr_reader :name, :tags
- attr_accessor :env_proc, :option_name
+ attr_reader :name, :tags, :env_proc, :option_name
- def initialize(name, tags=[])
- @name = @option_name = name
+ DEFAULT_ENV_PROC = proc {}
+
+ def initialize(name, tags=[], env_proc=DEFAULT_ENV_PROC, option_name=name)
+ @name = name
@tags = tags
+ @env_proc = env_proc
+ @option_name = option_name
end
def to_s
@@ -47,10 +50,6 @@ class Dependency
missing
end
- def universal!
- tags << 'universal' if to_formula.build.has_option? 'universal'
- end
-
def modify_build_environment
env_proc.call unless env_proc.nil?
end
@@ -127,9 +126,7 @@ class Dependency
deps.uniq.map do |dep|
tags = grouped.fetch(dep.name).map(&:tags).flatten.uniq
- merged_dep = dep.class.new(dep.name, tags)
- merged_dep.env_proc = dep.env_proc
- merged_dep
+ dep.class.new(dep.name, tags, dep.env_proc)
end
end
end
diff --git a/Library/Homebrew/requirement.rb b/Library/Homebrew/requirement.rb
index 9062d2d13..85ef527fd 100644
--- a/Library/Homebrew/requirement.rb
+++ b/Library/Homebrew/requirement.rb
@@ -70,10 +70,7 @@ class Requirement
def to_dependency
f = self.class.default_formula
raise "No default formula defined for #{inspect}" if f.nil?
- dep = Dependency.new(f, tags)
- dep.option_name = name
- dep.env_proc = method(:modify_build_environment)
- dep
+ Dependency.new(f, tags, method(:modify_build_environment), name)
end
private
diff --git a/Library/Homebrew/test/test_dependency_expansion.rb b/Library/Homebrew/test/test_dependency_expansion.rb
index 08165b2d1..227a7d37d 100644
--- a/Library/Homebrew/test/test_dependency_expansion.rb
+++ b/Library/Homebrew/test/test_dependency_expansion.rb
@@ -71,7 +71,10 @@ class DependencyExpansionTests < Test::Unit::TestCase
end
def test_merger_preserves_env_proc
- env_proc = @foo.env_proc = stub
+ env_proc = stub
+ dep = Dependency.new("foo", [], env_proc)
+ dep.stubs(:to_formula).returns(stub(:deps => []))
+ @deps.replace [dep]
assert_equal env_proc, Dependency.expand(@f).first.env_proc
end