split validation of tarball-base into its own function

Trying to simplify some of the logic in validate_releases()

Change-Id: I8db1ee9311a53891d7cc98882f5181d3c83c745b
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
Doug Hellmann
2018-02-05 16:24:37 -05:00
committed by Sean McGinnis
parent bbbe66d728
commit aa8ee5a83a
2 changed files with 93 additions and 50 deletions

View File

@@ -472,6 +472,58 @@ def validate_release_type(deliverable_info,
)
def validate_tarball_base(deliverable_info,
workdir,
mk_warning, mk_error):
link_mode = deliverable_info.get('artifact-link-mode', 'tarball')
if link_mode != 'tarball':
print('rule does not apply for link-mode {}, skipping'.format(
link_mode))
return
if not deliverable_info.get('releases'):
print('no releases, skipping')
return
release = deliverable_info['releases'][-1]
for project in release['projects']:
version_exists = gitutils.commit_exists(
workdir, project['repo'], release['version'],
)
# Check that the sdist name and tarball-base name match.
try:
sdist = pythonutils.get_sdist_name(workdir,
project['repo'])
except Exception as err:
msg = 'Could not get the name of {} for version {}: {}'.format(
project['repo'], release['version'], err)
if version_exists:
# If there was a problem with an existing
# release, treat it as a warning so we
# don't prevent new releases.
mk_warning(msg)
else:
mk_error(msg)
else:
if sdist is not None:
expected = project.get(
'tarball-base',
os.path.basename(project['repo']),
)
if sdist != expected:
if 'tarball-base' in project:
action = 'is set to'
else:
action = 'defaults to'
mk_error(
('tarball-base for %s %s %s %r '
'but the sdist name is actually %r. ' +
_PLEASE)
% (project['repo'], release['version'],
action, expected, sdist))
def validate_releases(deliverable_info, zuul_projects,
series_name,
workdir,
@@ -487,8 +539,6 @@ def validate_releases(deliverable_info, zuul_projects,
# appear at the end of the file.
new_releases = {}
link_mode = deliverable_info.get('artifact-link-mode', 'tarball')
if release_model == 'untagged' and 'releases' in deliverable_info:
mk_error('untagged deliverables should not have a "releases" section')
return
@@ -556,39 +606,6 @@ def validate_releases(deliverable_info, zuul_projects,
# doesn't exist.
continue
# Check that the sdist name and tarball-base name match.
if link_mode == 'tarball':
try:
sdist = pythonutils.get_sdist_name(workdir,
project['repo'])
except Exception as err:
msg = 'Could not get the name of {} for version {}: {}'.format(
project['repo'], release['version'], err)
if version_exists:
# If there was a problem with an existing
# release, treat it as a warning so we
# don't prevent new releases.
mk_warning(msg)
else:
mk_error(msg)
else:
if sdist is not None:
expected = project.get(
'tarball-base',
os.path.basename(project['repo']),
)
if sdist != expected:
if 'tarball-base' in project:
action = 'is set to'
else:
action = 'defaults to'
mk_error(
('tarball-base for %s %s %s %r '
'but the sdist name is actually %r. ' +
_PLEASE)
% (project['repo'], release['version'],
action, expected, sdist))
print('Found new version {} for {}'.format(
release['version'], project['repo']))
new_releases[release['version']] = release
@@ -1156,6 +1173,12 @@ def main():
mk_warning,
mk_error,
)
validate_tarball_base(
deliverable_info,
workdir,
mk_warning,
mk_error,
)
# Some rules only apply to the most current release.
if series_name == defaults.RELEASE:
validate_new_releases(

View File

@@ -1034,10 +1034,14 @@ class TestValidateTarballBase(base.BaseTestCase):
warnings = []
errors = []
gsn.return_value = 'release-test'
validate.validate_releases(
validate.clone_deliverable(
deliverable_info,
self.tmpdir,
warnings.append,
errors.append,
)
validate.validate_tarball_base(
deliverable_info,
{'validate-projects-by-name': {}},
'ocata',
self.tmpdir,
warnings.append,
errors.append,
@@ -1062,10 +1066,14 @@ class TestValidateTarballBase(base.BaseTestCase):
warnings = []
errors = []
gsn.return_value = 'this-is-wrong'
validate.validate_releases(
validate.clone_deliverable(
deliverable_info,
self.tmpdir,
warnings.append,
errors.append,
)
validate.validate_tarball_base(
deliverable_info,
{'validate-projects-by-name': {}},
'ocata',
self.tmpdir,
warnings.append,
errors.append,
@@ -1089,10 +1097,14 @@ class TestValidateTarballBase(base.BaseTestCase):
warnings = []
errors = []
gsn.return_value = 'openstack-release-test'
validate.validate_releases(
validate.clone_deliverable(
deliverable_info,
self.tmpdir,
warnings.append,
errors.append,
)
validate.validate_tarball_base(
deliverable_info,
{'validate-projects-by-name': {}},
'ocata',
self.tmpdir,
warnings.append,
errors.append,
@@ -1117,10 +1129,14 @@ class TestValidateTarballBase(base.BaseTestCase):
warnings = []
errors = []
gsn.return_value = 'openstack-release-test'
validate.validate_releases(
validate.clone_deliverable(
deliverable_info,
self.tmpdir,
warnings.append,
errors.append,
)
validate.validate_tarball_base(
deliverable_info,
{'validate-projects-by-name': {}},
'ocata',
self.tmpdir,
warnings.append,
errors.append,
@@ -1145,10 +1161,14 @@ class TestValidateTarballBase(base.BaseTestCase):
warnings = []
errors = []
gsn.return_value = 'openstack-release-test'
validate.validate_releases(
validate.clone_deliverable(
deliverable_info,
self.tmpdir,
warnings.append,
errors.append,
)
validate.validate_tarball_base(
deliverable_info,
{'validate-projects-by-name': {}},
'ocata',
self.tmpdir,
warnings.append,
errors.append,