Fix dependency equality

This commit is contained in:
Jack Nagel 2014-11-21 16:08:37 -06:00
parent 19c2e91fdc
commit a412b49c2c
6 changed files with 15 additions and 28 deletions

View File

@ -10,7 +10,7 @@ class Dependencies
end
def <<(o)
@deps << o unless include?(o)
@deps << o
self
end

View File

@ -20,12 +20,12 @@ class Dependency
end
def ==(other)
instance_of?(other.class) && name == other.name
instance_of?(other.class) && name == other.name && tags == other.tags
end
alias_method :eql?, :==
def hash
name.hash
name.hash ^ tags.hash
end
def to_formula
@ -118,12 +118,11 @@ class Dependency
throw(:action, :keep_but_prune_recursive_deps)
end
def merge_repeats(deps)
grouped = deps.group_by(&:name)
deps.uniq.map do |dep|
tags = grouped.fetch(dep.name).map(&:tags).flatten.uniq
dep.class.new(dep.name, tags, dep.env_proc)
def merge_repeats(all)
all.group_by(&:name).map do |name, deps|
dep = deps.first
tags = deps.map(&:tags).flatten.uniq
dep.class.new(name, tags, dep.env_proc)
end
end
end

View File

@ -12,13 +12,6 @@ class DependenciesTests < Homebrew::TestCase
assert_same @deps, @deps << Dependency.new("foo")
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
hash = { 0 => "foo", 1 => "bar", 2 => "baz" }
@deps << Dependency.new(hash[0])

View File

@ -47,5 +47,8 @@ class DependencyTests < Homebrew::TestCase
assert_eql foo1, foo2
refute_equal foo1, bar
refute_eql foo1, bar
foo3 = Dependency.new("foo", [:build])
refute_equal foo1, foo3
refute_eql foo1, foo3
end
end

View File

@ -37,13 +37,6 @@ class DependencyCollectorTests < Homebrew::TestCase
assert_empty Dependency.new('foo').tags
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
@d.add :x11
assert_instance_of X11Dependency, find_requirement(X11Dependency)

View File

@ -100,16 +100,15 @@ class DependencyExpansionTests < Homebrew::TestCase
end
def test_keep_dep_but_prune_recursive_deps
f = stub(:name => "f", :deps => [
build_dep(:foo, [:build], [@bar]),
build_dep(:baz, [:build]),
])
foo = build_dep(:foo, [:build], @bar)
baz = build_dep(:baz, [:build])
f = stub(:name => "f", :deps => [foo, baz])
deps = Dependency.expand(f) do |dependent, dep|
Dependency.keep_but_prune_recursive_deps if dep.build?
end
assert_equal [@foo, @baz], deps
assert_equal [foo, baz], deps
end
def test_deps_with_collection_argument