diff --git a/Library/Homebrew/cmd/deps.rb b/Library/Homebrew/cmd/deps.rb index a26dca03ca..b260300822 100644 --- a/Library/Homebrew/cmd/deps.rb +++ b/Library/Homebrew/cmd/deps.rb @@ -22,7 +22,9 @@ module Homebrew extend self end else raise FormulaUnspecifiedError if ARGV.named.empty? - all_deps = ARGV.formulae.map{ |f| ARGV.one? ? f.deps : f.recursive_deps }.intersection + all_deps = ARGV.formulae.map do |f| + ARGV.one? ? f.deps : f.recursive_deps + end.intersection.map(&:name) all_deps.sort! unless ARGV.include? "-n" puts all_deps end diff --git a/Library/Homebrew/dependencies.rb b/Library/Homebrew/dependencies.rb index 8b4916279b..623591c786 100644 --- a/Library/Homebrew/dependencies.rb +++ b/Library/Homebrew/dependencies.rb @@ -145,27 +145,23 @@ class Dependency def initialize(name, *tags) @name = name - @tags = [tags].flatten.compact - end - - def hash - @name.hash + @tags = tags.flatten.compact end def to_s - @name + name end def ==(other) - @name == other.to_s - end - - def <=>(other) - @name <=> other.to_s + name == other.name end def eql?(other) - other.is_a? self.class and hash == other.hash + other.is_a?(self.class) && hash == other.hash + end + + def hash + name.hash end end @@ -199,7 +195,7 @@ class Requirement end def eql?(other) - other.is_a? self.class and hash == other.hash + other.is_a?(self.class) && hash == other.hash end def hash diff --git a/Library/Homebrew/test/test_dependencies.rb b/Library/Homebrew/test/test_dependencies.rb index ebfd8ac01c..68c4043cbb 100644 --- a/Library/Homebrew/test/test_dependencies.rb +++ b/Library/Homebrew/test/test_dependencies.rb @@ -75,17 +75,48 @@ end class DependableTests < Test::Unit::TestCase def setup @tags = ["foo", "bar", :build] - @deps = Struct.new(:tags).new(@tags) - @deps.extend(Dependable) + @dep = Struct.new(:tags).new(@tags).extend(Dependable) end def test_options - assert_equal %w{--foo --bar}.sort, @deps.options.sort + assert_equal %w{--foo --bar}.sort, @dep.options.sort end def test_interrogation - assert @deps.build? - assert !@deps.optional? - assert !@deps.recommended? + assert @dep.build? + assert !@dep.optional? + assert !@dep.recommended? + end +end + +class DependencyTests < Test::Unit::TestCase + def test_accepts_single_tag + dep = Dependency.new("foo", "bar") + assert_equal %w{bar}, dep.tags + end + + def test_accepts_multiple_tags + dep = Dependency.new("foo", %w{bar baz}) + assert_equal %w{bar baz}.sort, dep.tags.sort + end + + def test_preserves_symbol_tags + dep = Dependency.new("foo", :build) + assert_equal [:build], dep.tags + end + + def test_accepts_symbol_and_string_tags + dep = Dependency.new("foo", [:build, "bar"]) + assert_equal [:build, "bar"], dep.tags + end + + def test_equality + foo1 = Dependency.new("foo") + foo2 = Dependency.new("foo") + bar = Dependency.new("bar") + assert_equal foo1, foo2 + assert foo1.eql?(foo2) + assert_not_equal foo1, bar + assert !foo1.eql?(bar) end end