Eliminate mutation of Dependency objects
This commit is contained in:
parent
793d6de6c3
commit
1981e78eb2
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user