diff options
| author | Jack Nagel | 2014-11-21 16:08:37 -0600 | 
|---|---|---|
| committer | Jack Nagel | 2014-11-21 17:03:58 -0600 | 
| commit | a412b49c2ce23d0b917f5c08e0cb453a042c1b26 (patch) | |
| tree | 9f75c2dbb6f6a17c0a76bdeab84686b40cecf9b1 | |
| parent | 19c2e91fdc8bc34a976d3b39efe47b3ddc00030d (diff) | |
| download | brew-a412b49c2ce23d0b917f5c08e0cb453a042c1b26.tar.bz2 | |
Fix dependency equality
| -rw-r--r-- | Library/Homebrew/dependencies.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/dependency.rb | 15 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependencies.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependency.rb | 3 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependency_collector.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependency_expansion.rb | 9 | 
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 | 
