Do not allow final without RC in cycle-with-rc

Currently validation considers it valid to propose final versions
on a cycle-with-rc model without RC first:

https://review.opendev.org/#/c/613444/2

Relying on human review to catch that sounds risky. Let's fix it.

Change-Id: Id06794f165f0c852fb62dcacd53058bdc756899e
Task: 27762
This commit is contained in:
Thierry Carrez
2019-06-20 14:54:50 +02:00
parent a9e488f400
commit 1bcdeaaa9f
2 changed files with 8 additions and 8 deletions

View File

@@ -283,8 +283,12 @@ def validate_pre_release_progression(deliv, context):
return
releases = deliv.releases
if len(releases) < 2:
print('this rule only applies to the final release in a series')
# Milestone-based deliverables cannot directly do a final release
if len(releases) == 1:
if not releases[-1].is_pre_release_version:
context.error('A RC release must be present before final release '
'for deliverables following a milestone-based cycle')
return
previous_release = releases[-2]

View File

@@ -3248,16 +3248,12 @@ class TestValidatePreReleaseProgression(base.BaseTestCase):
self.assertEqual(0, len(self.ctx.warnings))
self.assertEqual(0, len(self.ctx.errors))
def test_no_rc(self):
def test_missing_rc(self):
deliverable_data = yamlutils.loads(textwrap.dedent('''
---
team: Release Management
release-model: cycle-with-rc
releases:
- version: 1.5.1
projects:
- repo: openstack/automaton
hash: be2885f544637e6ee6139df7dc7bf937925804dd
- version: 1.5.2
projects:
- repo: openstack/automaton
@@ -3275,7 +3271,7 @@ class TestValidatePreReleaseProgression(base.BaseTestCase):
)
self.ctx.show_summary()
self.assertEqual(0, len(self.ctx.warnings))
self.assertEqual(0, len(self.ctx.errors))
self.assertEqual(1, len(self.ctx.errors))
def test_final_follows_rc(self):
deliverable_data = yamlutils.loads(textwrap.dedent('''