From 86e6ff5e8044cb1f784c9c54c940e2bf269ec558 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Fri, 4 Oct 2013 21:19:15 -0500 Subject: Check types in Formula#== Comparing two objects should not raise an exception, even if they have different types. The semantics of #== are now the same as #eql?, so make one an alias. --- Library/Homebrew/formula.rb | 9 ++++----- Library/Homebrew/test/test_formula.rb | 4 ++++ 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 09ddf45ff..391b3b322 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -292,12 +292,11 @@ class Formula @pin.unpin end - def == b - name == b.name - end - def eql? b - self == b and self.class.equal? b.class + def == other + instance_of?(other.class) && name == other.name end + alias_method :eql?, :== + def hash name.hash end diff --git a/Library/Homebrew/test/test_formula.rb b/Library/Homebrew/test/test_formula.rb index 1591b425b..bc1e703eb 100644 --- a/Library/Homebrew/test/test_formula.rb +++ b/Library/Homebrew/test/test_formula.rb @@ -124,6 +124,10 @@ class FormulaTests < Test::Unit::TestCase assert !y.eql?(x) end + def test_comparison_with_non_formula_objects_does_not_raise + assert_not_equal TestBall.new, Object.new + end + def test_class_naming assert_equal 'ShellFm', Formula.class_s('shell.fm') assert_equal 'Fooxx', Formula.class_s('foo++') -- cgit v1.2.3