aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2014-07-03 16:32:12 -0500
committerJack Nagel2014-07-03 16:37:43 -0500
commit1ee4cd94ba5d9e7f89bc572a737ff03f3fff2a20 (patch)
tree388915bf86fb96358993e3f7446acaf7791ef823
parent08c43dcd964baadade31a1be9e82b3de663b8630 (diff)
downloadbrew-1ee4cd94ba5d9e7f89bc572a737ff03f3fff2a20.tar.bz2
Fix PkgVersion#<=>
-rw-r--r--Library/Homebrew/pkg_version.rb1
-rw-r--r--Library/Homebrew/test/test_pkg_version.rb4
-rw-r--r--Library/Homebrew/test/test_versions.rb4
3 files changed, 8 insertions, 1 deletions
diff --git a/Library/Homebrew/pkg_version.rb b/Library/Homebrew/pkg_version.rb
index 3d81df261..4e9e351ff 100644
--- a/Library/Homebrew/pkg_version.rb
+++ b/Library/Homebrew/pkg_version.rb
@@ -30,6 +30,7 @@ class PkgVersion < Version
alias_method :to_str, :to_s
def <=>(other)
+ return unless Version === other
super.nonzero? || revision <=> other.revision
end
end
diff --git a/Library/Homebrew/test/test_pkg_version.rb b/Library/Homebrew/test/test_pkg_version.rb
index 25c309323..a26a90c30 100644
--- a/Library/Homebrew/test/test_pkg_version.rb
+++ b/Library/Homebrew/test/test_pkg_version.rb
@@ -24,6 +24,10 @@ class PkgVersionTests < Homebrew::TestCase
assert_operator v("1.0_1"), :<, v("2.0_1")
assert_operator v("HEAD"), :>, v("1.0")
assert_operator v("1.0"), :<, v("HEAD")
+
+ v = PkgVersion.new("1.0", 0)
+ assert_nil v <=> Object.new
+ assert_raises(ArgumentError) { v > Object.new }
end
def test_to_s
diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb
index ee63c7be9..ee9369ea5 100644
--- a/Library/Homebrew/test/test_versions.rb
+++ b/Library/Homebrew/test/test_versions.rb
@@ -63,7 +63,9 @@ class VersionComparisonTests < Homebrew::TestCase
end
def test_comparison_returns_nil_for_non_version
- assert_nil version('1.0') <=> 'foo'
+ v = version("1.0")
+ assert_nil v <=> Object.new
+ assert_raises(ArgumentError) { v > Object.new }
end
def test_compare_patchlevel_to_non_patchlevel