diff options
| author | Jack Nagel | 2014-02-27 14:22:43 -0600 |
|---|---|---|
| committer | Jack Nagel | 2014-02-27 14:22:43 -0600 |
| commit | 1fdf69b90382c43493a5f62f0020729289db6c70 (patch) | |
| tree | 5df567171d0085263c955ee2c9d122b076d3d20d /Library | |
| parent | 87ae0ab795e44a70bedcb93d56dd84660db0d88e (diff) | |
| download | homebrew-1fdf69b90382c43493a5f62f0020729289db6c70.tar.bz2 | |
Eliminate mutation of Dependency objects
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/dependency.rb | 19 | ||||
| -rw-r--r-- | Library/Homebrew/requirement.rb | 5 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependency_expansion.rb | 5 |
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 |
