let each validation function apply its own rules

Rather than testing the series condition outside of the validation
function, go ahead and call it and let the function skip the
deliverable if its rules do not apply.

Change-Id: Ib02cdec2cba088bd13ba307822f0ecbb14ddc899
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
Doug Hellmann 2018-02-22 11:11:25 -05:00
parent f97c20c974
commit e9285b6620
2 changed files with 47 additions and 41 deletions

View File

@ -105,6 +105,10 @@ def validate_series_open(deliv, context):
"No releases in the new series until the previous one has a branch." "No releases in the new series until the previous one has a branch."
header('Validate Series Open') header('Validate Series Open')
if deliv.series != defaults.RELEASE:
LOG.info('this rule only applies to the most current series, skipping')
return
if not deliv.is_released: if not deliv.is_released:
LOG.info('no releases, skipping') LOG.info('no releases, skipping')
return return
@ -858,6 +862,10 @@ def validate_new_releases(deliv, context):
""" """
header('Validate New Releases') header('Validate New Releases')
if deliv.series != defaults.RELEASE:
LOG.info('this rule only applies to the most current series, skipping')
return
if not deliv.is_released: if not deliv.is_released:
LOG.info('no releases, skipping') LOG.info('no releases, skipping')
return return
@ -1372,10 +1380,8 @@ def main():
validate_new_releases_at_end(deliv, context) validate_new_releases_at_end(deliv, context)
validate_release_branch_membership(deliv, context) validate_release_branch_membership(deliv, context)
validate_tarball_base(deliv, context) validate_tarball_base(deliv, context)
# Some rules only apply to the most current release. validate_new_releases(deliv, context)
if deliv.series == defaults.RELEASE: validate_series_open(deliv, context)
validate_new_releases(deliv, context)
validate_series_open(deliv, context)
validate_series_first(deliv, context) validate_series_first(deliv, context)
validate_branch_prefixes(deliv, context) validate_branch_prefixes(deliv, context)
validate_stable_branches(deliv, context) validate_stable_branches(deliv, context)

View File

@ -38,7 +38,7 @@ class TestValidateBugTracker(base.BaseTestCase):
validate.validate_bugtracker( validate.validate_bugtracker(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={}, data={},
), ),
@ -53,7 +53,7 @@ class TestValidateBugTracker(base.BaseTestCase):
validate.validate_bugtracker( validate.validate_bugtracker(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={'launchpad': 'nonsense-name'}, data={'launchpad': 'nonsense-name'},
), ),
@ -68,7 +68,7 @@ class TestValidateBugTracker(base.BaseTestCase):
validate.validate_bugtracker( validate.validate_bugtracker(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={'launchpad': 'oslo.config'}, data={'launchpad': 'oslo.config'},
), ),
@ -84,7 +84,7 @@ class TestValidateBugTracker(base.BaseTestCase):
validate.validate_bugtracker( validate.validate_bugtracker(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={'launchpad': 'oslo.config'}, data={'launchpad': 'oslo.config'},
), ),
@ -121,7 +121,7 @@ class TestValidateBugTracker(base.BaseTestCase):
validate.validate_bugtracker( validate.validate_bugtracker(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={'storyboard': '760'}, data={'storyboard': '760'},
), ),
@ -148,7 +148,7 @@ class TestValidateBugTracker(base.BaseTestCase):
validate.validate_bugtracker( validate.validate_bugtracker(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={'storyboard': '-760'}, data={'storyboard': '-760'},
), ),
@ -169,7 +169,7 @@ class TestValidateTeam(base.BaseTestCase):
validate.validate_team( validate.validate_team(
deliverable.Deliverable( deliverable.Deliverable(
team='nonsense-name', team='nonsense-name',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={}, data={},
), ),
@ -184,7 +184,7 @@ class TestValidateTeam(base.BaseTestCase):
validate.validate_team( validate.validate_team(
deliverable.Deliverable( deliverable.Deliverable(
team='oslo', team='oslo',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={}, data={},
), ),
@ -204,7 +204,7 @@ class TestValidateReleaseNotes(base.BaseTestCase):
validate.validate_release_notes( validate.validate_release_notes(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={}, data={},
), ),
@ -217,7 +217,7 @@ class TestValidateReleaseNotes(base.BaseTestCase):
validate.validate_release_notes( validate.validate_release_notes(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'release-notes': 'https://docs.openstack.org/no-such-page', 'release-notes': 'https://docs.openstack.org/no-such-page',
@ -232,7 +232,7 @@ class TestValidateReleaseNotes(base.BaseTestCase):
validate.validate_release_notes( validate.validate_release_notes(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={'release-notes': data={'release-notes':
'https://docs.openstack.org/releasenotes/oslo.config'}, 'https://docs.openstack.org/releasenotes/oslo.config'},
@ -246,7 +246,7 @@ class TestValidateReleaseNotes(base.BaseTestCase):
validate.validate_release_notes( validate.validate_release_notes(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'repository-settings': { 'repository-settings': {
@ -267,7 +267,7 @@ class TestValidateReleaseNotes(base.BaseTestCase):
validate.validate_release_notes( validate.validate_release_notes(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'repository-settings': { 'repository-settings': {
@ -288,7 +288,7 @@ class TestValidateReleaseNotes(base.BaseTestCase):
validate.validate_release_notes( validate.validate_release_notes(
deliverable.Deliverable( deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'repository-settings': { 'repository-settings': {
@ -819,7 +819,7 @@ class TestGetReleaseType(base.BaseTestCase):
def test_explicit(self): def test_explicit(self):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -843,7 +843,7 @@ class TestGetReleaseType(base.BaseTestCase):
def test_library(self): def test_library(self):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -867,7 +867,7 @@ class TestGetReleaseType(base.BaseTestCase):
def test_service(self): def test_service(self):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -891,7 +891,7 @@ class TestGetReleaseType(base.BaseTestCase):
def test_implicit_pypi(self): def test_implicit_pypi(self):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -915,7 +915,7 @@ class TestGetReleaseType(base.BaseTestCase):
def test_pypi_false(self): def test_pypi_false(self):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -941,7 +941,7 @@ class TestGetReleaseType(base.BaseTestCase):
llam.return_value = True llam.return_value = True
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -966,7 +966,7 @@ class TestGetReleaseType(base.BaseTestCase):
llam.return_value = True llam.return_value = True
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -993,7 +993,7 @@ class TestGetReleaseType(base.BaseTestCase):
nllam.return_value = False nllam.return_value = False
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -1057,7 +1057,7 @@ class TestPuppetUtils(base.BaseTestCase):
cbs.return_value = True cbs.return_value = True
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -1087,7 +1087,7 @@ class TestValidateTarballBase(base.BaseTestCase):
def test_default_ok(self, gsn, jobs): def test_default_ok(self, gsn, jobs):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'releases': [ 'releases': [
@ -1111,7 +1111,7 @@ class TestValidateTarballBase(base.BaseTestCase):
def test_ignored_link_mode_none(self, gsn, jobs): def test_ignored_link_mode_none(self, gsn, jobs):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -1136,7 +1136,7 @@ class TestValidateTarballBase(base.BaseTestCase):
def test_default_invalid(self, gsn, jobs): def test_default_invalid(self, gsn, jobs):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'releases': [ 'releases': [
@ -1160,7 +1160,7 @@ class TestValidateTarballBase(base.BaseTestCase):
def test_explicit_ok(self, gsn, jobs): def test_explicit_ok(self, gsn, jobs):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'releases': [ 'releases': [
@ -1185,7 +1185,7 @@ class TestValidateTarballBase(base.BaseTestCase):
def test_explicit_invalid(self, gsn, jobs): def test_explicit_invalid(self, gsn, jobs):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='name', name='name',
data={ data={
'releases': [ 'releases': [
@ -1258,7 +1258,7 @@ class TestValidateNewReleases(base.BaseTestCase):
# match. # match.
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='release-test', name='release-test',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -1283,7 +1283,7 @@ class TestValidateNewReleases(base.BaseTestCase):
# The tag includes a repo not in governance. # The tag includes a repo not in governance.
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='release-test', name='release-test',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -1312,7 +1312,7 @@ class TestValidateNewReleases(base.BaseTestCase):
# The tag is missing a repo in governance. # The tag is missing a repo in governance.
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='release-test', name='release-test',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -1343,7 +1343,7 @@ class TestValidateNewReleases(base.BaseTestCase):
# (2 warnings). # (2 warnings).
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='release-test', name='release-test',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -1369,7 +1369,7 @@ class TestValidateNewReleases(base.BaseTestCase):
# repository-settings. # repository-settings.
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='release-test', name='release-test',
data={ data={
'artifact-link-mode': 'none', 'artifact-link-mode': 'none',
@ -1402,7 +1402,7 @@ class TestValidateBranchPrefixes(base.BaseTestCase):
def test_invalid_prefix(self): def test_invalid_prefix(self):
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='release-test', name='release-test',
data={ data={
'branches': [ 'branches': [
@ -1419,7 +1419,7 @@ class TestValidateBranchPrefixes(base.BaseTestCase):
for prefix in validate._VALID_BRANCH_PREFIXES: for prefix in validate._VALID_BRANCH_PREFIXES:
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='series', series=defaults.RELEASE,
name='release-test', name='release-test',
data={ data={
'branches': [ 'branches': [
@ -2117,7 +2117,7 @@ class TestValidateSeriesOpen(base.BaseTestCase):
def test_no_stable_branch(self): def test_no_stable_branch(self):
series_a_dir = self.tmpdir + '/a' series_a_dir = self.tmpdir + '/a'
series_a_filename = series_a_dir + '/automaton.yaml' series_a_filename = series_a_dir + '/automaton.yaml'
series_b_dir = self.tmpdir + '/b' series_b_dir = self.tmpdir + '/' + defaults.RELEASE
series_b_filename = series_b_dir + '/automaton.yaml' series_b_filename = series_b_dir + '/automaton.yaml'
os.makedirs(series_a_dir) os.makedirs(series_a_dir)
os.makedirs(series_b_dir) os.makedirs(series_b_dir)
@ -2138,7 +2138,7 @@ class TestValidateSeriesOpen(base.BaseTestCase):
f.write(deliverable_data) f.write(deliverable_data)
deliv = deliverable.Deliverable( deliv = deliverable.Deliverable(
team='team', team='team',
series='b', series=defaults.RELEASE,
name='name', name='name',
data=yamlutils.loads(deliverable_data), data=yamlutils.loads(deliverable_data),
) )