summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Bahling <sbahling@suse.com>2020-02-06 22:40:22 +0100
committerScott Bahling <sbahling@suse.com>2020-02-06 22:40:22 +0100
commite566c85a508562a5ebc88e13e2d5571b78eef045 (patch)
treead49011b8dd5ae05a578c5c96f5a808fb6492baf
parentcd12f43cd2c98826bb0ea092ef590a91e5842886 (diff)
downloadobsapi-e566c85a508562a5ebc88e13e2d5571b78eef045.tar.gz
obsapi-e566c85a508562a5ebc88e13e2d5571b78eef045.tar.xz
obsapi-e566c85a508562a5ebc88e13e2d5571b78eef045.zip
Fix get_package_version
-rw-r--r--obsapi/core.py22
-rw-r--r--test/test_api.py16
2 files changed, 26 insertions, 12 deletions
diff --git a/obsapi/core.py b/obsapi/core.py
index 80067d6..793949e 100644
--- a/obsapi/core.py
+++ b/obsapi/core.py
@@ -134,23 +134,21 @@ class ObsApi(object):
def get_package_version(self, prj, pkg, repo, arch, full=True):
binaries = self.binaries_ls(prj, pkg, repo, arch)
- r_finfo = ''
+ finfo = None
for item in binaries:
if item.filename.endswith('.src.rpm'):
- r_finfo = self.get_binary_fileinfo(prj,
- pkg,
- repo,
- arch,
- item.filename
- )
+ finfo = self.get_binary_fileinfo(prj,
+ pkg,
+ repo,
+ arch,
+ item.filename
+ )
break
- if r_finfo:
- finfo = etree.fromstring(r_finfo)
- version = finfo.find('version').text
- release = finfo.find('release').text
+ if finfo:
+ version = finfo.version
if full:
- version = '%s-%s' % (version, release)
+ version = '%s-%s' % (version, finfo.release)
else:
version = ''
diff --git a/test/test_api.py b/test/test_api.py
index e45a284..a6f74c1 100644
--- a/test/test_api.py
+++ b/test/test_api.py
@@ -348,6 +348,22 @@ def test_get_binary_fileinfo(requests_mock, binary_fileinfo):
assert bfinfo.requires == [p.text for p in expected_bfinfo.findall('requires')]
+def test_get_package_version(requests_mock, binarylist, binary_fileinfo):
+ matcher = re.compile('/build/.*/.*/.*/.*')
+ requests_mock.get(matcher, text=binarylist)
+ matcher = re.compile('/build/.*/.*/.*/.*/.*?view=fileinfo')
+ requests_mock.get(matcher, content=binary_fileinfo)
+
+ root = etree.fromstring(binary_fileinfo.decode('utf-8'))
+ expected_version = root.find('version').text
+ expected_release = root.find('release').text
+ full_version = api.get_package_version(prj, pkg, repo, arch)
+ assert full_version == '{}-{}'.format(expected_version, expected_release)
+
+ version = api.get_package_version(prj, pkg, repo, arch, full=False)
+ assert version == expected_version
+
+
def test_get_project_flags(requests_mock, project_meta):
matcher = prj_meta_re
requests_mock.get(matcher, text=project_meta)