aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/pkg_version.rb35
-rw-r--r--Library/Homebrew/test/test_pkg_version.rb27
2 files changed, 36 insertions, 26 deletions
diff --git a/Library/Homebrew/pkg_version.rb b/Library/Homebrew/pkg_version.rb
index 4e9e351ff..62072273a 100644
--- a/Library/Homebrew/pkg_version.rb
+++ b/Library/Homebrew/pkg_version.rb
@@ -1,36 +1,45 @@
-require 'version'
+require "version"
-class PkgVersion < Version
- attr_reader :version, :revision
+class PkgVersion
+ include Comparable
RX = /\A(.+?)(?:_(\d+))?\z/
def self.parse(path)
_, version, revision = *path.match(RX)
- new(version, revision)
+ version = Version.new(version)
+ new(version, revision.to_i)
end
def initialize(version, revision)
- super(version)
+ @version = version
+ @revision = version.head? ? 0 : revision
+ end
- if head?
- @revision = 0
- else
- @revision = revision.to_i
- end
+ def head?
+ version.head?
end
def to_s
if revision > 0
"#{version}_#{revision}"
else
- version
+ version.to_s
end
end
alias_method :to_str, :to_s
def <=>(other)
- return unless Version === other
- super.nonzero? || revision <=> other.revision
+ return unless PkgVersion === other
+ (version <=> other.version).nonzero? || revision <=> other.revision
end
+ alias_method :eql?, :==
+
+ def hash
+ version.hash ^ revision.hash
+ end
+
+ protected
+
+ attr_reader :version, :revision
end
diff --git a/Library/Homebrew/test/test_pkg_version.rb b/Library/Homebrew/test/test_pkg_version.rb
index a26a90c30..611c90ee6 100644
--- a/Library/Homebrew/test/test_pkg_version.rb
+++ b/Library/Homebrew/test/test_pkg_version.rb
@@ -7,13 +7,13 @@ class PkgVersionTests < Homebrew::TestCase
end
def test_parse
- assert_equal PkgVersion.new("1.0", 1), PkgVersion.parse("1.0_1")
- assert_equal PkgVersion.new("1.0", 1), PkgVersion.parse("1.0_1")
- assert_equal PkgVersion.new("1.0", 0), PkgVersion.parse("1.0")
- assert_equal PkgVersion.new("1.0", 0), PkgVersion.parse("1.0_0")
- assert_equal PkgVersion.new("2.1.4", 0), PkgVersion.parse("2.1.4_0")
- assert_equal PkgVersion.new("2.1.4_1", 0), PkgVersion.parse("2.1.4_1_0")
- assert_equal PkgVersion.new("1.0.1e", 1), PkgVersion.parse("1.0.1e_1")
+ assert_equal PkgVersion.new(Version.new("1.0"), 1), PkgVersion.parse("1.0_1")
+ assert_equal PkgVersion.new(Version.new("1.0"), 1), PkgVersion.parse("1.0_1")
+ assert_equal PkgVersion.new(Version.new("1.0"), 0), PkgVersion.parse("1.0")
+ assert_equal PkgVersion.new(Version.new("1.0"), 0), PkgVersion.parse("1.0_0")
+ assert_equal PkgVersion.new(Version.new("2.1.4"), 0), PkgVersion.parse("2.1.4_0")
+ assert_equal PkgVersion.new(Version.new("2.1.4_1"), 0), PkgVersion.parse("2.1.4_1_0")
+ assert_equal PkgVersion.new(Version.new("1.0.1e"), 1), PkgVersion.parse("1.0.1e_1")
end
def test_comparison
@@ -25,16 +25,17 @@ class PkgVersionTests < Homebrew::TestCase
assert_operator v("HEAD"), :>, v("1.0")
assert_operator v("1.0"), :<, v("HEAD")
- v = PkgVersion.new("1.0", 0)
+ v = PkgVersion.new(Version.new("1.0"), 0)
assert_nil v <=> Object.new
assert_raises(ArgumentError) { v > Object.new }
+ assert_raises(ArgumentError) { v > Version.new("1.0") }
end
def test_to_s
- assert_equal "1.0", PkgVersion.new("1.0", 0).to_s
- assert_equal "1.0_1", PkgVersion.new("1.0", 1).to_s
- assert_equal "1.0", PkgVersion.new("1.0", 0).to_s
- assert_equal "1.0", PkgVersion.new("1.0", 0).to_s
- assert_equal "HEAD", PkgVersion.new("HEAD", 1).to_s
+ assert_equal "1.0", PkgVersion.new(Version.new("1.0"), 0).to_s
+ assert_equal "1.0_1", PkgVersion.new(Version.new("1.0"), 1).to_s
+ assert_equal "1.0", PkgVersion.new(Version.new("1.0"), 0).to_s
+ assert_equal "1.0", PkgVersion.new(Version.new("1.0"), 0).to_s
+ assert_equal "HEAD", PkgVersion.new(Version.new("HEAD"), 1).to_s
end
end