diff options
| author | Jack Nagel | 2014-02-27 14:22:43 -0600 | 
|---|---|---|
| committer | Jack Nagel | 2014-02-27 14:22:43 -0600 | 
| commit | 1981e78eb2fe7231c999edf86c862597320ec5fe (patch) | |
| tree | 15dfee9382d1a31f228a8635c3bbb73813d3e039 | |
| parent | 793d6de6c3211ffea112770081e788e760806366 (diff) | |
| download | brew-1981e78eb2fe7231c999edf86c862597320ec5fe.tar.bz2 | |
Eliminate mutation of Dependency objects
| -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 | 
