Remove <=> from Dependency interface
It is important that dep equality corresponds to the name attribute, but we may want to use the Comparable interface to sort them by installation order in the future. Code that needs to sort them alphabetically should just use sort_by.
This commit is contained in:
parent
2d445d54b5
commit
e629f14d56
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user