Fix dependency equality
This commit is contained in:
parent
19c2e91fdc
commit
a412b49c2c
@ -10,7 +10,7 @@ class Dependencies
|
|||||||
end
|
end
|
||||||
|
|
||||||
def <<(o)
|
def <<(o)
|
||||||
@deps << o unless include?(o)
|
@deps << o
|
||||||
self
|
self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -20,12 +20,12 @@ class Dependency
|
|||||||
end
|
end
|
||||||
|
|
||||||
def ==(other)
|
def ==(other)
|
||||||
instance_of?(other.class) && name == other.name
|
instance_of?(other.class) && name == other.name && tags == other.tags
|
||||||
end
|
end
|
||||||
alias_method :eql?, :==
|
alias_method :eql?, :==
|
||||||
|
|
||||||
def hash
|
def hash
|
||||||
name.hash
|
name.hash ^ tags.hash
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_formula
|
def to_formula
|
||||||
@ -118,12 +118,11 @@ class Dependency
|
|||||||
throw(:action, :keep_but_prune_recursive_deps)
|
throw(:action, :keep_but_prune_recursive_deps)
|
||||||
end
|
end
|
||||||
|
|
||||||
def merge_repeats(deps)
|
def merge_repeats(all)
|
||||||
grouped = deps.group_by(&:name)
|
all.group_by(&:name).map do |name, deps|
|
||||||
|
dep = deps.first
|
||||||
deps.uniq.map do |dep|
|
tags = deps.map(&:tags).flatten.uniq
|
||||||
tags = grouped.fetch(dep.name).map(&:tags).flatten.uniq
|
dep.class.new(name, tags, dep.env_proc)
|
||||||
dep.class.new(dep.name, tags, dep.env_proc)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -12,13 +12,6 @@ class DependenciesTests < Homebrew::TestCase
|
|||||||
assert_same @deps, @deps << Dependency.new("foo")
|
assert_same @deps, @deps << Dependency.new("foo")
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_no_duplicate_deps
|
|
||||||
@deps << Dependency.new("foo")
|
|
||||||
@deps << Dependency.new("foo", [:build])
|
|
||||||
@deps << Dependency.new("foo", [:build])
|
|
||||||
assert_equal 1, @deps.count
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_preserves_order
|
def test_preserves_order
|
||||||
hash = { 0 => "foo", 1 => "bar", 2 => "baz" }
|
hash = { 0 => "foo", 1 => "bar", 2 => "baz" }
|
||||||
@deps << Dependency.new(hash[0])
|
@deps << Dependency.new(hash[0])
|
||||||
|
@ -47,5 +47,8 @@ class DependencyTests < Homebrew::TestCase
|
|||||||
assert_eql foo1, foo2
|
assert_eql foo1, foo2
|
||||||
refute_equal foo1, bar
|
refute_equal foo1, bar
|
||||||
refute_eql foo1, bar
|
refute_eql foo1, bar
|
||||||
|
foo3 = Dependency.new("foo", [:build])
|
||||||
|
refute_equal foo1, foo3
|
||||||
|
refute_eql foo1, foo3
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -37,13 +37,6 @@ class DependencyCollectorTests < Homebrew::TestCase
|
|||||||
assert_empty Dependency.new('foo').tags
|
assert_empty Dependency.new('foo').tags
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_no_duplicate_dependencies
|
|
||||||
@d.add 'foo'
|
|
||||||
@d.add 'foo' => :build
|
|
||||||
assert_equal 1, @d.deps.count
|
|
||||||
assert_empty find_dependency("foo").tags
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_requirement_creation
|
def test_requirement_creation
|
||||||
@d.add :x11
|
@d.add :x11
|
||||||
assert_instance_of X11Dependency, find_requirement(X11Dependency)
|
assert_instance_of X11Dependency, find_requirement(X11Dependency)
|
||||||
|
@ -100,16 +100,15 @@ class DependencyExpansionTests < Homebrew::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_keep_dep_but_prune_recursive_deps
|
def test_keep_dep_but_prune_recursive_deps
|
||||||
f = stub(:name => "f", :deps => [
|
foo = build_dep(:foo, [:build], @bar)
|
||||||
build_dep(:foo, [:build], [@bar]),
|
baz = build_dep(:baz, [:build])
|
||||||
build_dep(:baz, [:build]),
|
f = stub(:name => "f", :deps => [foo, baz])
|
||||||
])
|
|
||||||
|
|
||||||
deps = Dependency.expand(f) do |dependent, dep|
|
deps = Dependency.expand(f) do |dependent, dep|
|
||||||
Dependency.keep_but_prune_recursive_deps if dep.build?
|
Dependency.keep_but_prune_recursive_deps if dep.build?
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_equal [@foo, @baz], deps
|
assert_equal [foo, baz], deps
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_deps_with_collection_argument
|
def test_deps_with_collection_argument
|
||||||
|
Loading…
x
Reference in New Issue
Block a user