Eliminate mutation of Dependency objects
This commit is contained in:
parent
793d6de6c3
commit
1981e78eb2
@ -4,12 +4,15 @@ require 'dependable'
|
|||||||
class Dependency
|
class Dependency
|
||||||
include Dependable
|
include Dependable
|
||||||
|
|
||||||
attr_reader :name, :tags
|
attr_reader :name, :tags, :env_proc, :option_name
|
||||||
attr_accessor :env_proc, :option_name
|
|
||||||
|
|
||||||
def initialize(name, tags=[])
|
DEFAULT_ENV_PROC = proc {}
|
||||||
@name = @option_name = name
|
|
||||||
|
def initialize(name, tags=[], env_proc=DEFAULT_ENV_PROC, option_name=name)
|
||||||
|
@name = name
|
||||||
@tags = tags
|
@tags = tags
|
||||||
|
@env_proc = env_proc
|
||||||
|
@option_name = option_name
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
@ -47,10 +50,6 @@ class Dependency
|
|||||||
missing
|
missing
|
||||||
end
|
end
|
||||||
|
|
||||||
def universal!
|
|
||||||
tags << 'universal' if to_formula.build.has_option? 'universal'
|
|
||||||
end
|
|
||||||
|
|
||||||
def modify_build_environment
|
def modify_build_environment
|
||||||
env_proc.call unless env_proc.nil?
|
env_proc.call unless env_proc.nil?
|
||||||
end
|
end
|
||||||
@ -127,9 +126,7 @@ class Dependency
|
|||||||
|
|
||||||
deps.uniq.map do |dep|
|
deps.uniq.map do |dep|
|
||||||
tags = grouped.fetch(dep.name).map(&:tags).flatten.uniq
|
tags = grouped.fetch(dep.name).map(&:tags).flatten.uniq
|
||||||
merged_dep = dep.class.new(dep.name, tags)
|
dep.class.new(dep.name, tags, dep.env_proc)
|
||||||
merged_dep.env_proc = dep.env_proc
|
|
||||||
merged_dep
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -70,10 +70,7 @@ class Requirement
|
|||||||
def to_dependency
|
def to_dependency
|
||||||
f = self.class.default_formula
|
f = self.class.default_formula
|
||||||
raise "No default formula defined for #{inspect}" if f.nil?
|
raise "No default formula defined for #{inspect}" if f.nil?
|
||||||
dep = Dependency.new(f, tags)
|
Dependency.new(f, tags, method(:modify_build_environment), name)
|
||||||
dep.option_name = name
|
|
||||||
dep.env_proc = method(:modify_build_environment)
|
|
||||||
dep
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
@ -71,7 +71,10 @@ class DependencyExpansionTests < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_merger_preserves_env_proc
|
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
|
assert_equal env_proc, Dependency.expand(@f).first.env_proc
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user