Use package upstream version. Skip revision. Improve regexp parsing.
This commit is contained in:
parent
56750c3884
commit
4a9fe8772e
3 changed files with 33 additions and 6 deletions
|
|
@ -150,16 +150,16 @@ module DebImporter
|
|||
end # def
|
||||
|
||||
class Version
|
||||
attr_reader :epoch, :version, :revision, :version_string
|
||||
attr_reader :epoch, :upstream, :revision, :version_string
|
||||
|
||||
def initialize(version_string)
|
||||
@version_string = version_string
|
||||
# Split into "[epoch:]version[-revision]"
|
||||
unless /^(?<epoch>(\d+)\:)?(?<version>.+)(?<revision>\-[\+\.~]+)?/ =~ version_string
|
||||
unless /^((?<epoch>\d+)\:)?(?<upstream>.+?)(\-(?<revision>.+))?$/ =~ version_string
|
||||
raise ArgumentError, "Cannot parse version string: #{version_string}"
|
||||
end
|
||||
@epoch = epoch ? epoch : 0
|
||||
@version = version
|
||||
@epoch = epoch ? epoch : '0'
|
||||
@upstream = upstream
|
||||
@revision = revision if revision
|
||||
end # /def
|
||||
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ namespace :debshots do
|
|||
new_version = DebImporter::Version.new(package[:Version])
|
||||
|
||||
Rails.logger.debug "Comparing package version: old=#{db_package.version} new=#{new_version}"
|
||||
if new_version > current_version
|
||||
if new_version.upstream > current_version.upstream
|
||||
# update the package information from new data
|
||||
update_data(package, db_package)
|
||||
Rails.logger.info "Updating package information"
|
||||
|
|
@ -241,7 +241,7 @@ def update_data(package, db_package)
|
|||
Rails.logger.debug "New information: #{package.inspect}"
|
||||
|
||||
# Rails.logger.info "New package version found. Updating details in database."
|
||||
db_package.version = package[:Version]
|
||||
db_package.version = Version.new(package[:Version]).upstream
|
||||
db_package.name = package[:Package] unless db_package.name # set the name for new packages
|
||||
db_package.description = package[:Description][0..79]
|
||||
db_package.homepage = package[:Homepage]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,33 @@ class PackagesHelperTest < ActionView::TestCase
|
|||
assert(DebImporter::Version.new('1.0') > DebImporter::Version.new('1.0~pre'))
|
||||
end
|
||||
|
||||
test "should split version files into epoch, upstream and revision" do
|
||||
v = DebImporter::Version.new('1.0~git20170104-1')
|
||||
assert_equal v.epoch, '0'
|
||||
assert_equal v.upstream, '1.0~git20170104'
|
||||
assert_equal v.revision, '1'
|
||||
|
||||
v = DebImporter::Version.new('0~20161219-1')
|
||||
assert_equal v.epoch, '0'
|
||||
assert_equal v.upstream, '0~20161219'
|
||||
assert_equal v.revision, '1'
|
||||
|
||||
v = DebImporter::Version.new('17:2.0.0~git20161130.1.e60d0d5+dfsg1-1')
|
||||
assert_equal v.epoch, '17'
|
||||
assert_equal v.upstream, '2.0.0~git20161130.1.e60d0d5+dfsg1'
|
||||
assert_equal v.revision, '1'
|
||||
|
||||
v = DebImporter::Version.new('42')
|
||||
assert_equal v.epoch, '0'
|
||||
assert_equal v.upstream, '42'
|
||||
assert_nil v.revision
|
||||
|
||||
v = DebImporter::Version.new('100:9a_b~cdef')
|
||||
assert_equal v.epoch, '100'
|
||||
assert_equal v.upstream, '9a_b~cdef'
|
||||
assert_nil v.revision
|
||||
end
|
||||
|
||||
test "should be able to parse local Debian repository test files" do
|
||||
Rails.logger = Logger.new(STDOUT)
|
||||
# Rails.logger.level = Logger::ERROR
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue