Checks if requirements overlap between head and branch reqs
If there is a requirement in head and branches, and are not equal, check if the head requirement is overlapping with branch one, if not it triggers an error Change-Id: I159e4608a5d345e57ae24fd19b1c54c1de4ed9d9 Closes-Bug: #1274731
This commit is contained in:
parent
f98ad18c66
commit
a57bd21836
@ -33,6 +33,54 @@ def run_command(cmd):
|
|||||||
return out.strip()
|
return out.strip()
|
||||||
|
|
||||||
|
|
||||||
|
def increase_version(version_string):
|
||||||
|
"""
|
||||||
|
Returns simple increased version string
|
||||||
|
"""
|
||||||
|
items = version_string.split('.')
|
||||||
|
for i in range(len(items) - 1, 0, -1):
|
||||||
|
current_item = items[i]
|
||||||
|
if current_item.isdigit():
|
||||||
|
current_item = int(current_item) + 1
|
||||||
|
items[i] = str(current_item)
|
||||||
|
break
|
||||||
|
final = '.'.join(items)
|
||||||
|
return final
|
||||||
|
|
||||||
|
|
||||||
|
def decrease_version(version_string):
|
||||||
|
"""
|
||||||
|
Returns simple decreased version string
|
||||||
|
"""
|
||||||
|
items = version_string.split('.')
|
||||||
|
for i in range(len(items) - 1, 0, -1):
|
||||||
|
current_item = items[i]
|
||||||
|
if current_item.isdigit():
|
||||||
|
current_item = int(current_item) - 1
|
||||||
|
if current_item >= 0:
|
||||||
|
items[i] = str(current_item)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
# continue to parent
|
||||||
|
items[i] = '9'
|
||||||
|
|
||||||
|
final = '.'.join(items)
|
||||||
|
return final
|
||||||
|
|
||||||
|
|
||||||
|
def get_version_required(req):
|
||||||
|
"""
|
||||||
|
Returns required version string depending on reqs
|
||||||
|
"""
|
||||||
|
operator = req[0]
|
||||||
|
version = req[1]
|
||||||
|
if operator == '>':
|
||||||
|
version = increase_version(version)
|
||||||
|
elif operator == '<':
|
||||||
|
version = decrease_version(version)
|
||||||
|
return version
|
||||||
|
|
||||||
|
|
||||||
class RequirementsList(object):
|
class RequirementsList(object):
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
self.name = name
|
self.name = name
|
||||||
@ -130,8 +178,20 @@ def main():
|
|||||||
failed = False
|
failed = False
|
||||||
for req in head_reqs.reqs.values():
|
for req in head_reqs.reqs.values():
|
||||||
name = req.project_name.lower()
|
name = req.project_name.lower()
|
||||||
if name in branch_reqs.reqs and req == branch_reqs.reqs[name]:
|
if name in branch_reqs.reqs:
|
||||||
continue
|
if req == branch_reqs.reqs[name]:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
# check if overlaps
|
||||||
|
for spec in req.specs:
|
||||||
|
version = get_version_required(spec)
|
||||||
|
branch_req = branch_reqs.reqs[name]
|
||||||
|
if not branch_req.__contains__(version):
|
||||||
|
failed = True
|
||||||
|
print("Requirement %s does not overlap with branch " %
|
||||||
|
str(req))
|
||||||
|
continue
|
||||||
|
|
||||||
if name not in os_reqs.reqs:
|
if name not in os_reqs.reqs:
|
||||||
print("Requirement %s not in openstack/requirements" % str(req))
|
print("Requirement %s not in openstack/requirements" % str(req))
|
||||||
failed = True
|
failed = True
|
||||||
|
Loading…
x
Reference in New Issue
Block a user