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:
@@ -283,8 +283,12 @@ def validate_pre_release_progression(deliv, context):
|
|||||||
return
|
return
|
||||||
|
|
||||||
releases = deliv.releases
|
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
|
return
|
||||||
|
|
||||||
previous_release = releases[-2]
|
previous_release = releases[-2]
|
||||||
|
|||||||
@@ -3248,16 +3248,12 @@ class TestValidatePreReleaseProgression(base.BaseTestCase):
|
|||||||
self.assertEqual(0, len(self.ctx.warnings))
|
self.assertEqual(0, len(self.ctx.warnings))
|
||||||
self.assertEqual(0, len(self.ctx.errors))
|
self.assertEqual(0, len(self.ctx.errors))
|
||||||
|
|
||||||
def test_no_rc(self):
|
def test_missing_rc(self):
|
||||||
deliverable_data = yamlutils.loads(textwrap.dedent('''
|
deliverable_data = yamlutils.loads(textwrap.dedent('''
|
||||||
---
|
---
|
||||||
team: Release Management
|
team: Release Management
|
||||||
release-model: cycle-with-rc
|
release-model: cycle-with-rc
|
||||||
releases:
|
releases:
|
||||||
- version: 1.5.1
|
|
||||||
projects:
|
|
||||||
- repo: openstack/automaton
|
|
||||||
hash: be2885f544637e6ee6139df7dc7bf937925804dd
|
|
||||||
- version: 1.5.2
|
- version: 1.5.2
|
||||||
projects:
|
projects:
|
||||||
- repo: openstack/automaton
|
- repo: openstack/automaton
|
||||||
@@ -3275,7 +3271,7 @@ class TestValidatePreReleaseProgression(base.BaseTestCase):
|
|||||||
)
|
)
|
||||||
self.ctx.show_summary()
|
self.ctx.show_summary()
|
||||||
self.assertEqual(0, len(self.ctx.warnings))
|
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):
|
def test_final_follows_rc(self):
|
||||||
deliverable_data = yamlutils.loads(textwrap.dedent('''
|
deliverable_data = yamlutils.loads(textwrap.dedent('''
|
||||||
|
|||||||
Reference in New Issue
Block a user