add tests for version incrementing in new-release

Change-Id: Ia758c459fc47591f49c9c22b8520e727386bd429
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
Doug Hellmann
2017-08-07 11:30:05 -04:00
parent 3e452311a5
commit 6d7e2557dd
2 changed files with 163 additions and 21 deletions

View File

@@ -32,6 +32,15 @@ def get_deliverable_data(series, deliverable):
def increment_version(old_version, increment):
"""Compute the new version based on the previous value.
:param old_version: Parts of the version string for the last
release.
:type old_version: list(str)
:param increment: Which positions to increment.
:type increment: tuple(int)
"""
new_version_parts = []
clear = False
for cur, inc in zip(old_version, increment):
@@ -44,6 +53,38 @@ def increment_version(old_version, increment):
return new_version_parts
def increment_milestone_version(old_version, release_type):
"""Increment a version using the rules for milestone projects.
:param old_version: Parts of the version string for the last
release.
:type old_version: list(str)
:param release_type: Either ``'milestone'`` or ``'rc'``.
:type release_type: str
"""
if release_type == 'milestone':
if 'b' in old_version[-1]:
# Not the first milestone
new_version_parts = old_version[:-1]
next_milestone = int(old_version[-1][2:]) + 1
new_version_parts.append('0b{}'.format(next_milestone))
else:
new_version_parts = increment_version(old_version, (1, 0, 0))
new_version_parts.append('0b1')
elif release_type == 'rc':
new_version_parts = old_version[:-1]
if 'b' in old_version[-1]:
# First RC
new_version_parts.append('0rc1')
else:
next_rc = int(old_version[-1][3:]) + 1
new_version_parts.append('0rc{}'.format(next_rc))
else:
raise ValueError('Unknown release type {!r}'.format(release_type))
return new_version_parts
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -126,32 +167,18 @@ def main():
parser.error('Could not determine previous version: %s' % (e,))
last_version = last_release['version'].split('.')
first_rc = False
if args.release_type == 'milestone':
if args.release_type in ('milestone', 'rc'):
force_tag = True
if deliverable_info['release-model'] != 'cycle-with-milestones':
raise ValueError('Cannot compute RC for {} project {}'.format(
deliverable_info['release-model'], args.deliverable))
if 'b' in last_version[-1]:
# Not the first milestone
new_version_parts = last_version[:-1]
next_milestone = int(last_version[-1][2:]) + 1
new_version_parts.append('0b{}'.format(next_milestone))
else:
new_version_parts = increment_version(last_version, (1, 0, 0))
new_version_parts.append('0b1')
elif args.release_type == 'rc':
force_tag = True
if deliverable_info['release-model'] != 'cycle-with-milestones':
raise ValueError('Cannot compute RC for {} project {}'.format(
deliverable_info['release-model'], args.deliverable))
new_version_parts = last_version[:-1]
if 'b' in last_version[-1]:
# First RC
new_version_parts.append('0rc1')
new_version_parts = increment_milestone_version(
last_version, args.release_type)
# We are going to take some special steps for the first
# release candidate, so figure out if that is what this
# release will be.
if args.release_type == 'rc' and new_version_parts[-1][3:] == '1':
first_rc = True
else:
next_rc = int(last_version[-1][3:]) + 1
new_version_parts.append('0rc{}'.format(next_rc))
else:
increment = {
'bugfix': (0, 0, 1),