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:
committed by
Sean McGinnis
parent
bbbe66d728
commit
aa8ee5a83a
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user