aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2014-11-21 16:08:37 -0600
committerJack Nagel2014-11-21 17:03:58 -0600
commita412b49c2ce23d0b917f5c08e0cb453a042c1b26 (patch)
tree9f75c2dbb6f6a17c0a76bdeab84686b40cecf9b1
parent19c2e91fdc8bc34a976d3b39efe47b3ddc00030d (diff)
downloadbrew-a412b49c2ce23d0b917f5c08e0cb453a042c1b26.tar.bz2
Fix dependency equality
-rw-r--r--Library/Homebrew/dependencies.rb2
-rw-r--r--Library/Homebrew/dependency.rb15
-rw-r--r--Library/Homebrew/test/test_dependencies.rb7
-rw-r--r--Library/Homebrew/test/test_dependency.rb3
-rw-r--r--Library/Homebrew/test/test_dependency_collector.rb7
-rw-r--r--Library/Homebrew/test/test_dependency_expansion.rb9
6 files changed, 15 insertions, 28 deletions
diff --git a/Library/Homebrew/dependencies.rb b/Library/Homebrew/dependencies.rb
index bcfba0478..402ad9c20 100644
--- a/Library/Homebrew/dependencies.rb
+++ b/Library/Homebrew/dependencies.rb
@@ -10,7 +10,7 @@ class Dependencies
end
def <<(o)
- @deps << o unless include?(o)
+ @deps << o
self
end
diff --git a/Library/Homebrew/dependency.rb b/Library/Homebrew/dependency.rb
index ebfefc4b5..7fd785343 100644
--- a/Library/Homebrew/dependency.rb
+++ b/Library/Homebrew/dependency.rb
@@ -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
diff --git a/Library/Homebrew/test/test_dependencies.rb b/Library/Homebrew/test/test_dependencies.rb
index a83e7c89e..1c64e26e8 100644
--- a/Library/Homebrew/test/test_dependencies.rb
+++ b/Library/Homebrew/test/test_dependencies.rb
@@ -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])
diff --git a/Library/Homebrew/test/test_dependency.rb b/Library/Homebrew/test/test_dependency.rb
index d0806e4b7..6f9038eae 100644
--- a/Library/Homebrew/test/test_dependency.rb
+++ b/Library/Homebrew/test/test_dependency.rb
@@ -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
diff --git a/Library/Homebrew/test/test_dependency_collector.rb b/Library/Homebrew/test/test_dependency_collector.rb
index edf831611..6700a97c8 100644
--- a/Library/Homebrew/test/test_dependency_collector.rb
+++ b/Library/Homebrew/test/test_dependency_collector.rb
@@ -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)
diff --git a/Library/Homebrew/test/test_dependency_expansion.rb b/Library/Homebrew/test/test_dependency_expansion.rb
index 194aa9523..b653dc1bb 100644
--- a/Library/Homebrew/test/test_dependency_expansion.rb
+++ b/Library/Homebrew/test/test_dependency_expansion.rb
@@ -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