Move preversion check into validate
Pre-versions are only OK if you're using a release model that allows for them (like cycle-with-milestones). Now that we have the information in the releases file, move the warning in list-changes to a proper validation failure. Change-Id: Ifb91bd2446b6d37dc9bb4601cad28f29c065c2e8
This commit is contained in:
parent
d8d1ebbe46
commit
75595d6ce4
@ -150,14 +150,9 @@ def main():
|
||||
deliverable_info = yaml.load(f.read())
|
||||
|
||||
# By default assume the project does not use milestones.
|
||||
uses_milestones = False
|
||||
header('Release model')
|
||||
if 'release-model' in deliverable_info:
|
||||
model = deliverable_info['release-model']
|
||||
uses_milestones = (model == 'cycle-with-milestones')
|
||||
print(model)
|
||||
else:
|
||||
print('no release model specified')
|
||||
print(deliverable_info.get('release-model',
|
||||
'no release model specified'))
|
||||
|
||||
header('Team details')
|
||||
if 'team' in deliverable_info:
|
||||
@ -199,15 +194,6 @@ def main():
|
||||
# assume the releases are in order and take the last one
|
||||
new_release = deliverable_info['releases'][-1]
|
||||
|
||||
# Warn if the new release looks like a milestone release but
|
||||
# the project does not use milestones.
|
||||
if not uses_milestones:
|
||||
for pre_indicator in ['a', 'b', 'rc']:
|
||||
if pre_indicator in str(new_release['version']):
|
||||
print(('WARNING: %s looks like a pre-release '
|
||||
'but %s does not use milestones') %
|
||||
(new_release['version'], deliverable_name))
|
||||
|
||||
# build a map between version numbers and the release details
|
||||
by_version = {
|
||||
str(r['version']): r
|
||||
|
@ -47,6 +47,10 @@ _VALID_MODELS = set([
|
||||
'cycle-trailing',
|
||||
'independent',
|
||||
])
|
||||
_USES_PREVER = set([
|
||||
'cycle-with-milestones',
|
||||
'cycle-trailing',
|
||||
])
|
||||
_VALID_TYPES = set([
|
||||
'horizon-plugin',
|
||||
'library',
|
||||
@ -303,7 +307,8 @@ def main():
|
||||
|
||||
for e in versionutils.validate_version(
|
||||
release['version'],
|
||||
release_type=release_type):
|
||||
release_type=release_type,
|
||||
pre_ok=(release_model in _USES_PREVER)):
|
||||
msg = ('could not validate version %r '
|
||||
'for %s: %s' %
|
||||
(release['version'], filename, e))
|
||||
|
@ -36,12 +36,18 @@ _VALIDATORS = {'std': (pbr.version.SemanticVersion.from_pip_string,
|
||||
_VALIDATORS['fuel'] = _VALIDATORS['std']
|
||||
|
||||
|
||||
def validate_version(versionstr, release_type='std'):
|
||||
def validate_version(versionstr, release_type='std', pre_ok=True):
|
||||
"""Given a version string, yield error messages if it is "bad"
|
||||
|
||||
Apply our SemVer rules to version strings and report all issues.
|
||||
|
||||
"""
|
||||
if not pre_ok:
|
||||
for pre_indicator in ['a', 'b', 'rc']:
|
||||
if pre_indicator in versionstr:
|
||||
yield('Version %s looks like a pre-release and the release '
|
||||
'model does not allow for it' % versionstr)
|
||||
|
||||
if release_type not in _VALIDATORS:
|
||||
yield 'Release Type %r not valid using \'std\' instead' % release_type
|
||||
release_type = 'std'
|
||||
|
Loading…
Reference in New Issue
Block a user