Replace version strings with Version objects
This commit is contained in:
parent
43dc54e8b9
commit
329f0a8490
@ -21,7 +21,7 @@ module Homebrew extend self
|
||||
end
|
||||
end
|
||||
|
||||
prefix = HOMEBREW_CELLAR+name+version
|
||||
prefix = HOMEBREW_CELLAR/name/version
|
||||
|
||||
if File.file? 'CMakeLists.txt'
|
||||
puts "-DCMAKE_INSTALL_PREFIX=#{prefix}"
|
||||
|
||||
@ -13,7 +13,7 @@ module Homebrew extend self
|
||||
else
|
||||
f.versions do |version, sha|
|
||||
print Tty.white.to_s
|
||||
print "#{version.ljust(8)} "
|
||||
print "#{version.to_s.ljust(8)} "
|
||||
print Tty.reset.to_s
|
||||
puts "git checkout #{sha} #{f.pretty_relative_path}"
|
||||
end
|
||||
|
||||
@ -163,8 +163,7 @@ class Pathname
|
||||
|
||||
def version
|
||||
require 'version'
|
||||
version = Version.parse(self)
|
||||
version.to_s unless version.nil?
|
||||
Version.parse(self)
|
||||
end
|
||||
|
||||
def compression_type
|
||||
|
||||
@ -108,7 +108,7 @@ class Formula
|
||||
def prefix
|
||||
validate_variable :name
|
||||
validate_variable :version
|
||||
HOMEBREW_CELLAR+@name+@version
|
||||
HOMEBREW_CELLAR/@name/@version
|
||||
end
|
||||
def rack; prefix.parent end
|
||||
|
||||
@ -543,7 +543,7 @@ private
|
||||
|
||||
def validate_variable name
|
||||
v = instance_variable_get("@#{name}")
|
||||
raise "Invalid @#{name}" if v.to_s.empty? or v =~ /\s/
|
||||
raise "Invalid @#{name}" if v.to_s.empty? or v.to_s =~ /\s/
|
||||
end
|
||||
|
||||
def set_instance_variable(type)
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
require 'download_strategy'
|
||||
require 'checksums'
|
||||
require 'version'
|
||||
|
||||
class SoftwareSpec
|
||||
attr_reader :checksum, :mirrors, :specs
|
||||
@ -58,12 +59,12 @@ class SoftwareSpec
|
||||
end
|
||||
|
||||
def version val=nil
|
||||
unless val.nil?
|
||||
@version = val
|
||||
if val.nil?
|
||||
@version ||= Version.parse(@url)
|
||||
else
|
||||
@version = Version.new(val)
|
||||
@explicit_version = true
|
||||
end
|
||||
@version ||= Pathname.new(@url).version
|
||||
return @version
|
||||
end
|
||||
|
||||
def mirror val
|
||||
@ -73,7 +74,7 @@ class SoftwareSpec
|
||||
end
|
||||
|
||||
class HeadSoftwareSpec < SoftwareSpec
|
||||
def initialize url=nil, version='HEAD'
|
||||
def initialize url=nil, version=Version.new(:HEAD)
|
||||
super
|
||||
end
|
||||
|
||||
@ -120,7 +121,7 @@ class Bottle < SoftwareSpec
|
||||
# as accessor for @version to preserve the interface
|
||||
def version val=nil
|
||||
if val.nil?
|
||||
return @version ||= Pathname.new(@url).version
|
||||
return @version ||= Version.parse(@url)
|
||||
else
|
||||
@revision = val
|
||||
end
|
||||
|
||||
@ -22,6 +22,8 @@ end
|
||||
# separate TestCase classes.
|
||||
|
||||
class BeerTasting < Test::Unit::TestCase
|
||||
include VersionAssertions
|
||||
|
||||
def test_supported_compressed_types
|
||||
assert_nothing_raised do
|
||||
MockFormula.new 'test-0.1.tar.gz'
|
||||
@ -129,12 +131,6 @@ class BeerTasting < Test::Unit::TestCase
|
||||
assert_equal 10.7, f+0.1
|
||||
end
|
||||
|
||||
def test_pathname_version
|
||||
d=HOMEBREW_CELLAR+'foo-0.1.9'
|
||||
d.mkpath
|
||||
assert_equal '0.1.9', d.version
|
||||
end
|
||||
|
||||
def test_pathname_plus_yeast
|
||||
nostdout do
|
||||
assert_nothing_raised do
|
||||
@ -176,12 +172,12 @@ class BeerTasting < Test::Unit::TestCase
|
||||
|
||||
assert_equal '.tar.gz', foo1.extname
|
||||
assert_equal 'foo-0.1', foo1.stem
|
||||
assert_equal '0.1', foo1.version
|
||||
assert_version_equal '0.1', foo1.version
|
||||
|
||||
foo1 = HOMEBREW_CACHE/'foo-0.1.cpio.gz'
|
||||
assert_equal '.cpio.gz', foo1.extname
|
||||
assert_equal 'foo-0.1', foo1.stem
|
||||
assert_equal '0.1', foo1.version
|
||||
assert_version_equal '0.1', foo1.version
|
||||
end
|
||||
|
||||
class MockMockFormula < Struct.new(:name); end
|
||||
|
||||
@ -10,6 +10,7 @@ class MostlyAbstractFormula < Formula
|
||||
end
|
||||
|
||||
class FormulaTests < Test::Unit::TestCase
|
||||
include VersionAssertions
|
||||
|
||||
def test_prefix
|
||||
nostdout do
|
||||
@ -65,7 +66,7 @@ class FormulaTests < Test::Unit::TestCase
|
||||
assert_equal 'http://example.com', f.homepage
|
||||
assert_equal 'file:///foo.com/testball-0.1.tbz', f.url
|
||||
assert_equal 1, f.mirrors.length
|
||||
assert_equal '0.1', f.version
|
||||
assert_version_equal '0.1', f.version
|
||||
assert_equal f.stable, f.active_spec
|
||||
assert_equal CurlDownloadStrategy, f.download_strategy
|
||||
assert_instance_of CurlDownloadStrategy, f.downloader
|
||||
@ -124,10 +125,10 @@ class FormulaTests < Test::Unit::TestCase
|
||||
assert !f.stable.explicit_version?
|
||||
assert !f.bottle.explicit_version?
|
||||
assert !f.devel.explicit_version?
|
||||
assert_equal '0.1', f.stable.version
|
||||
assert_equal '0.1', f.bottle.version
|
||||
assert_equal '0.2', f.devel.version
|
||||
assert_equal 'HEAD', f.head.version
|
||||
assert_version_equal '0.1', f.stable.version
|
||||
assert_version_equal '0.1', f.bottle.version
|
||||
assert_version_equal '0.2', f.devel.version
|
||||
assert_version_equal 'HEAD', f.head.version
|
||||
assert_equal 0, f.bottle.revision
|
||||
end
|
||||
|
||||
@ -135,7 +136,7 @@ class FormulaTests < Test::Unit::TestCase
|
||||
ARGV.push '--devel'
|
||||
f = SpecTestBall.new
|
||||
assert_equal f.devel, f.active_spec
|
||||
assert_equal '0.2', f.version
|
||||
assert_version_equal '0.2', f.version
|
||||
assert_equal 'file:///foo.com/testball-0.2.tbz', f.url
|
||||
assert_equal CurlDownloadStrategy, f.download_strategy
|
||||
assert_instance_of CurlDownloadStrategy, f.downloader
|
||||
@ -146,7 +147,7 @@ class FormulaTests < Test::Unit::TestCase
|
||||
ARGV.push '--HEAD'
|
||||
f = SpecTestBall.new
|
||||
assert_equal f.head, f.active_spec
|
||||
assert_equal 'HEAD', f.version
|
||||
assert_version_equal 'HEAD', f.version
|
||||
assert_equal 'https://github.com/mxcl/homebrew.git', f.url
|
||||
assert_equal GitDownloadStrategy, f.download_strategy
|
||||
assert_instance_of GitDownloadStrategy, f.downloader
|
||||
@ -155,9 +156,9 @@ class FormulaTests < Test::Unit::TestCase
|
||||
|
||||
def test_explicit_version_spec
|
||||
f = ExplicitVersionSpecTestBall.new
|
||||
assert_equal '0.3', f.version
|
||||
assert_equal '0.3', f.stable.version
|
||||
assert_equal '0.4', f.devel.version
|
||||
assert_version_equal '0.3', f.version
|
||||
assert_version_equal '0.3', f.stable.version
|
||||
assert_version_equal '0.4', f.devel.version
|
||||
assert f.stable.explicit_version?
|
||||
assert f.devel.explicit_version?
|
||||
end
|
||||
@ -183,7 +184,7 @@ class FormulaTests < Test::Unit::TestCase
|
||||
|
||||
assert !f.bottle.explicit_version?
|
||||
assert_equal 0, f.bottle.revision
|
||||
assert_equal '0.1', f.bottle.version
|
||||
assert_version_equal '0.1', f.bottle.version
|
||||
else
|
||||
assert_nil f.bottle
|
||||
end
|
||||
@ -203,7 +204,7 @@ class FormulaTests < Test::Unit::TestCase
|
||||
assert_nil f.devel
|
||||
|
||||
assert_equal f.head, f.active_spec
|
||||
assert_equal 'HEAD', f.version
|
||||
assert_version_equal 'HEAD', f.version
|
||||
assert_nil f.head.checksum
|
||||
assert_equal 'https://github.com/mxcl/homebrew.git', f.url
|
||||
assert_equal GitDownloadStrategy, f.download_strategy
|
||||
@ -220,7 +221,7 @@ class FormulaTests < Test::Unit::TestCase
|
||||
assert_nil f.devel
|
||||
|
||||
assert_equal f.head, f.active_spec
|
||||
assert_equal 'HEAD', f.version
|
||||
assert_version_equal 'HEAD', f.version
|
||||
assert_nil f.head.checksum
|
||||
assert_equal 'https://github.com/mxcl/homebrew.git', f.url
|
||||
assert_equal GitDownloadStrategy, f.download_strategy
|
||||
@ -237,7 +238,7 @@ class FormulaTests < Test::Unit::TestCase
|
||||
assert_nil f.devel
|
||||
|
||||
assert_equal f.head, f.active_spec
|
||||
assert_equal 'HEAD', f.version
|
||||
assert_version_equal 'HEAD', f.version
|
||||
assert_nil f.head.checksum
|
||||
assert_equal 'https://github.com/mxcl/homebrew.git', f.url
|
||||
assert_equal GitDownloadStrategy, f.download_strategy
|
||||
|
||||
@ -3,20 +3,6 @@ require 'formula'
|
||||
require 'test/testball'
|
||||
require 'version'
|
||||
|
||||
module VersionAssertions
|
||||
def assert_version_detected expected, url
|
||||
assert_equal expected, Version.parse(url).to_s
|
||||
end
|
||||
|
||||
def assert_version_nil url
|
||||
assert_nil Version.parse(url)
|
||||
end
|
||||
|
||||
def assert_version_comparison a, comparison, b
|
||||
eval "assert Version.new(a) #{comparison} Version.new(b)"
|
||||
end
|
||||
end
|
||||
|
||||
class TestBadVersion < TestBall
|
||||
def initialize name=nil
|
||||
@stable = SoftwareSpec.new
|
||||
@ -34,6 +20,9 @@ class VersionComparisonTests < Test::Unit::TestCase
|
||||
assert_version_comparison '1.2.3', '>', '1.2.2'
|
||||
assert_version_comparison '1.2.3-p34', '>', '1.2.3-p33'
|
||||
assert_version_comparison '1.2.4', '<', '1.2.4.1'
|
||||
assert_version_comparison 'HEAD', '==', 'HEAD'
|
||||
assert_version_comparison 'HEAD', '>', '1.2.3'
|
||||
assert_version_comparison '1.2.3', '<', 'HEAD'
|
||||
end
|
||||
end
|
||||
|
||||
@ -43,7 +32,7 @@ class VersionParsingTests < Test::Unit::TestCase
|
||||
def test_pathname_version
|
||||
d = HOMEBREW_CELLAR/'foo-0.1.9'
|
||||
d.mkpath
|
||||
assert_equal '0.1.9', d.version
|
||||
assert_version_equal '0.1.9', d.version
|
||||
end
|
||||
|
||||
def test_no_version
|
||||
|
||||
@ -65,3 +65,21 @@ ARGV.extend(HomebrewArgvExtension)
|
||||
|
||||
require 'extend/ENV'
|
||||
ENV.extend(HomebrewEnvExtension)
|
||||
|
||||
module VersionAssertions
|
||||
def assert_version_equal expected, actual
|
||||
assert_equal Version.new(expected), actual
|
||||
end
|
||||
|
||||
def assert_version_detected expected, url
|
||||
assert_equal expected, Version.parse(url).to_s
|
||||
end
|
||||
|
||||
def assert_version_nil url
|
||||
assert_nil Version.parse(url)
|
||||
end
|
||||
|
||||
def assert_version_comparison a, comparison, b
|
||||
eval "assert Version.new(a) #{comparison} Version.new(b)"
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user