Merge "move check for release ordering to its own function"
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user