GitLab: Tarball Version Test (#2296)

* GitLab: Tarball Version Test

Upload a test demonstrating #2290

* Add GitLab parsing
This commit is contained in:
Axel Huebl
2017-01-06 17:53:19 +01:00
committed by Todd Gamblin
parent 7b337de93e
commit 05d77917fd
2 changed files with 29 additions and 2 deletions

View File

@@ -154,6 +154,20 @@ def test_version_regular(self):
'foo-bar', '1.21', 'foo-bar', '1.21',
'http://example.com/foo_bar-1.21.tar.gz') 'http://example.com/foo_bar-1.21.tar.gz')
def test_version_gitlab(self):
self.check(
'vtk', '7.0.0',
'https://gitlab.kitware.com/vtk/vtk/repository/'
'archive.tar.bz2?ref=v7.0.0')
self.check(
'icet', '1.2.3',
'https://gitlab.kitware.com/icet/icet/repository/'
'archive.tar.gz?ref=IceT-1.2.3')
self.check(
'foo', '42.1337',
'http://example.com/org/foo/repository/'
'archive.zip?ref=42.1337bar')
def test_version_github(self): def test_version_github(self):
self.check( self.check(
'yajl', '1.0.5', 'yajl', '1.0.5',

View File

@@ -106,19 +106,22 @@ def split_url_extension(path):
1. https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true 1. https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true
2. http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz 2. http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz
3. https://gitlab.kitware.com/vtk/vtk/repository/archive.tar.bz2?ref=v7.0.0
In (1), the query string needs to be stripped to get at the In (1), the query string needs to be stripped to get at the
extension, but in (2), the filename is IN a single final query extension, but in (2) & (3), the filename is IN a single final query
argument. argument.
This strips the URL into three pieces: prefix, ext, and suffix. This strips the URL into three pieces: prefix, ext, and suffix.
The suffix contains anything that was stripped off the URL to The suffix contains anything that was stripped off the URL to
get at the file extension. In (1), it will be '?raw=true', but get at the file extension. In (1), it will be '?raw=true', but
in (2), it will be empty. e.g.: in (2), it will be empty. In (3) the suffix is a parameter that follows
after the file extension, e.g.:
1. ('https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7', '.tgz', '?raw=true') 1. ('https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7', '.tgz', '?raw=true')
2. ('http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin', 2. ('http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin',
'.tar.gz', None) '.tar.gz', None)
3. ('https://gitlab.kitware.com/vtk/vtk/repository/archive', '.tar.bz2', '?ref=v7.0.0')
""" """
prefix, ext, suffix = path, '', '' prefix, ext, suffix = path, '', ''
@@ -203,6 +206,15 @@ def parse_version_offset(path, debug=False):
# https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz # https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
(r'github.com/[^/]+/[^/]+/releases/download/v?([^/]+)/.*$', path), (r'github.com/[^/]+/[^/]+/releases/download/v?([^/]+)/.*$', path),
# GitLab syntax:
# {baseUrl}{/organization}{/projectName}/repository/archive.{fileEnding}?ref={gitTag}
# as with github releases, we hope a version can be found in the
# git tag
# Search dotted versions:
# e.g., https://gitlab.kitware.com/vtk/vtk/repository/archive.tar.bz2?ref=v7.0.0
# e.g., https://example.com/org/repo/repository/archive.tar.bz2?ref=SomePrefix-2.1.1
(r'\?ref=(?:.*-|v)*((\d+\.)+\d+).*$', suffix),
# e.g. boost_1_39_0 # e.g. boost_1_39_0
(r'((\d+_)+\d+)$', stem), (r'((\d+_)+\d+)$', stem),
@@ -291,6 +303,7 @@ def parse_name_offset(path, v=None, debug=False):
(r'/([^/]+)/(tarball|zipball)/', path), (r'/([^/]+)/(tarball|zipball)/', path),
(r'/([^/]+)[_.-](bin|dist|stable|src|sources)[_.-]%s' % v, path), (r'/([^/]+)[_.-](bin|dist|stable|src|sources)[_.-]%s' % v, path),
(r'github.com/[^/]+/([^/]+)/archive', path), (r'github.com/[^/]+/([^/]+)/archive', path),
(r'[^/]+/([^/]+)/repository/archive', path), # gitlab
(r'([^/]+)[_.-]v?%s' % v, stem), # prefer the stem (r'([^/]+)[_.-]v?%s' % v, stem), # prefer the stem
(r'([^/]+)%s' % v, stem), (r'([^/]+)%s' % v, stem),