Merge "move check for release ordering to its own function"

This commit is contained in:
Zuul
2018-03-07 16:30:51 +00:00
committed by Gerrit Code Review
2 changed files with 70 additions and 38 deletions

View File

@@ -736,6 +736,42 @@ def validate_version_numbers(deliv, workdir, messages):
prev_version = release.version
def validate_new_releases_at_end(deliv, workdir, messages):
"New releases must be added to the end of the list."
header('Validate New Releases At End')
# Remember which entries are new so we can verify that they
# appear at the end of the file.
new_releases = {}
for release in deliv.releases:
for project in release.projects:
if not gitutils.safe_clone_repo(workdir, project.repo.name,
project.hash, messages):
continue
version_exists = gitutils.commit_exists(
workdir, project.repo.name, release.version,
)
if version_exists:
LOG.debug('tag exists, skipping further validation')
continue
LOG.info('Found new version {} for {}'.format(
release.version, project.repo))
new_releases[release.version] = release
# Make sure that new entries have been appended to the file.
for v, nr in new_releases.items():
LOG.info('comparing {!r} to {!r}'.format(nr, deliv.releases[-1]))
if nr != deliv.releases[-1]:
msg = ('new release %s must be listed last, '
'with one new release per patch' % nr.version)
messages.error(msg)
def validate_releases(deliv, zuul_projects,
workdir,
messages):
@@ -743,10 +779,6 @@ def validate_releases(deliv, zuul_projects,
"""
header('Validate Releases')
# Remember which entries are new so we can verify that they
# appear at the end of the file.
new_releases = {}
prev_version = None
for release in deliv.releases:
@@ -769,7 +801,6 @@ def validate_releases(deliv, zuul_projects,
LOG.info('Found new version {} for {}'.format(
release.version, project.repo))
new_releases[release.version] = release
if deliv.is_independent:
messages.warning('skipping descendant test for '
@@ -827,14 +858,6 @@ def validate_releases(deliv, zuul_projects,
prev_version = release.version
# Make sure that new entries have been appended to the file.
for v, nr in new_releases.items():
print('comparing {!r} to {!r}'.format(nr, deliv.releases[-1]))
if nr != deliv.releases[-1]:
msg = ('new release %s must be listed last, '
'with one new release per patch' % nr.version)
messages.error(msg)
def validate_new_releases(deliv, team_data, messages):
@@ -1343,6 +1366,7 @@ def main():
validate_release_sha_exists(deliv, workdir, messages)
validate_existing_tags(deliv, workdir, messages)
validate_version_numbers(deliv, workdir, messages)
validate_new_releases_at_end(deliv, workdir, messages)
validate_releases(
deliv,
zuul_projects,

View File

@@ -698,7 +698,38 @@ class TestValidateReleases(base.BaseTestCase):
self.assertEqual(0, len(self.msg.warnings))
self.assertEqual(2, len(self.msg.errors))
def test_new_not_at_end(self):
def test_no_releases(self):
# When we initialize a new series, we won't have any release
# data. That's OK.
deliv = deliverable.Deliverable(
team='team',
series='ocata',
name='name',
data={
'artifact-link-mode': 'none',
'releases': []
}
)
validate.validate_releases(
deliv,
{'validate-projects-by-name': {}},
self.tmpdir,
self.msg,
)
self.msg.show_summary()
self.assertEqual(0, len(self.msg.warnings))
self.assertEqual(0, len(self.msg.errors))
class TestValidateNewReleasesAtEnd(base.BaseTestCase):
def setUp(self):
super().setUp()
self.tmpdir = self.useFixture(fixtures.TempDir()).path
gitutils.clone_repo(self.tmpdir, 'openstack/release-test')
self.msg = validate.MessageCollector()
def test_not_at_end(self):
deliv = deliverable.Deliverable(
team='team',
series='ocata',
@@ -721,9 +752,8 @@ class TestValidateReleases(base.BaseTestCase):
],
}
)
validate.validate_releases(
validate.validate_new_releases_at_end(
deliv,
{'validate-projects-by-name': {}},
self.tmpdir,
self.msg,
)
@@ -731,28 +761,6 @@ class TestValidateReleases(base.BaseTestCase):
self.assertEqual(0, len(self.msg.warnings))
self.assertEqual(1, len(self.msg.errors))
def test_no_releases(self):
# When we initialize a new series, we won't have any release
# data. That's OK.
deliv = deliverable.Deliverable(
team='team',
series='ocata',
name='name',
data={
'artifact-link-mode': 'none',
'releases': []
}
)
validate.validate_releases(
deliv,
{'validate-projects-by-name': {}},
self.tmpdir,
self.msg,
)
self.msg.show_summary()
self.assertEqual(0, len(self.msg.warnings))
self.assertEqual(0, len(self.msg.errors))
class TestValidateVersionNumbers(base.BaseTestCase):