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())
|
deliverable_info = yaml.load(f.read())
|
||||||
|
|
||||||
# By default assume the project does not use milestones.
|
# By default assume the project does not use milestones.
|
||||||
uses_milestones = False
|
|
||||||
header('Release model')
|
header('Release model')
|
||||||
if 'release-model' in deliverable_info:
|
print(deliverable_info.get('release-model',
|
||||||
model = deliverable_info['release-model']
|
'no release model specified'))
|
||||||
uses_milestones = (model == 'cycle-with-milestones')
|
|
||||||
print(model)
|
|
||||||
else:
|
|
||||||
print('no release model specified')
|
|
||||||
|
|
||||||
header('Team details')
|
header('Team details')
|
||||||
if 'team' in deliverable_info:
|
if 'team' in deliverable_info:
|
||||||
@ -199,15 +194,6 @@ def main():
|
|||||||
# assume the releases are in order and take the last one
|
# assume the releases are in order and take the last one
|
||||||
new_release = deliverable_info['releases'][-1]
|
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
|
# build a map between version numbers and the release details
|
||||||
by_version = {
|
by_version = {
|
||||||
str(r['version']): r
|
str(r['version']): r
|
||||||
|
@ -47,6 +47,10 @@ _VALID_MODELS = set([
|
|||||||
'cycle-trailing',
|
'cycle-trailing',
|
||||||
'independent',
|
'independent',
|
||||||
])
|
])
|
||||||
|
_USES_PREVER = set([
|
||||||
|
'cycle-with-milestones',
|
||||||
|
'cycle-trailing',
|
||||||
|
])
|
||||||
_VALID_TYPES = set([
|
_VALID_TYPES = set([
|
||||||
'horizon-plugin',
|
'horizon-plugin',
|
||||||
'library',
|
'library',
|
||||||
@ -303,7 +307,8 @@ def main():
|
|||||||
|
|
||||||
for e in versionutils.validate_version(
|
for e in versionutils.validate_version(
|
||||||
release['version'],
|
release['version'],
|
||||||
release_type=release_type):
|
release_type=release_type,
|
||||||
|
pre_ok=(release_model in _USES_PREVER)):
|
||||||
msg = ('could not validate version %r '
|
msg = ('could not validate version %r '
|
||||||
'for %s: %s' %
|
'for %s: %s' %
|
||||||
(release['version'], filename, e))
|
(release['version'], filename, e))
|
||||||
|
@ -36,12 +36,18 @@ _VALIDATORS = {'std': (pbr.version.SemanticVersion.from_pip_string,
|
|||||||
_VALIDATORS['fuel'] = _VALIDATORS['std']
|
_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"
|
"""Given a version string, yield error messages if it is "bad"
|
||||||
|
|
||||||
Apply our SemVer rules to version strings and report all issues.
|
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:
|
if release_type not in _VALIDATORS:
|
||||||
yield 'Release Type %r not valid using \'std\' instead' % release_type
|
yield 'Release Type %r not valid using \'std\' instead' % release_type
|
||||||
release_type = 'std'
|
release_type = 'std'
|
||||||
|
Loading…
Reference in New Issue
Block a user