Skip to content
Snippets Groups Projects
Commit a412b49c authored by Jack Nagel's avatar Jack Nagel
Browse files

Fix dependency equality

parent 19c2e91f
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@ class Dependencies
end
def <<(o)
@deps << o unless include?(o)
@deps << o
self
end
......
......@@ -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
......
......@@ -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])
......
......@@ -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
......@@ -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)
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment