diff --git a/openstack_releases/schema.yaml b/openstack_releases/schema.yaml index cd1a3f9342..a3c3854784 100644 --- a/openstack_releases/schema.yaml +++ b/openstack_releases/schema.yaml @@ -54,7 +54,7 @@ properties: type: "string" enum: [ "python-service", "python-pypi", "xstatic", "fuel", "nodejs", "puppet", "neutron", "horizon", "openstack-manuals", - "manila-image-elements" ] + "manila-image-elements", "generic" ] stable-branch-type: type: "string" enum: [ "std", "tagless", "upstream" ] diff --git a/openstack_releases/tests/test_validate.py b/openstack_releases/tests/test_validate.py index 1a650a4481..732ad854c3 100644 --- a/openstack_releases/tests/test_validate.py +++ b/openstack_releases/tests/test_validate.py @@ -1134,6 +1134,34 @@ class TestValidateVersionNumbers(base.BaseTestCase): self.assertEqual(0, len(self.ctx.warnings)) self.assertEqual(1, len(self.ctx.errors)) + @mock.patch('openstack_releases.requirements.find_bad_lower_bound_increases') + def test_generic_model(self, mock_lower_bound): + deliv = deliverable.Deliverable( + team='team', + series='ocata', + name='name', + data={ + 'release-type': 'generic', + 'releases': [ + {'version': '0.9.0', + 'projects': [ + {'repo': 'openstack/release-test', + 'hash': '04ee20f0bfe8774935de33b75e87fb3b858d0733'}, + ]}, + {'version': '0.9.1', + 'projects': [ + {'repo': 'openstack/release-test', + 'hash': 'a26e6a2e8a5e321b2e3517dbb01a7b9a56a8bfd5'}, + ]} + ], + } + ) + validate.validate_version_numbers(deliv, self.ctx) + self.ctx.show_summary() + self.assertEqual(0, len(self.ctx.warnings)) + self.assertEqual(0, len(self.ctx.errors)) + self.assertFalse(mock_lower_bound.called) + def test_valid_version(self): deliv = deliverable.Deliverable( team='team', diff --git a/openstack_releases/versionutils.py b/openstack_releases/versionutils.py index 2d8082b0e9..8ea642386e 100644 --- a/openstack_releases/versionutils.py +++ b/openstack_releases/versionutils.py @@ -40,6 +40,10 @@ _VALIDATORS['nodejs'] = _VALIDATORS['python-service'] _VALIDATORS['neutron'] = _VALIDATORS['python-service'] _VALIDATORS['horizon'] = _VALIDATORS['python-service'] _VALIDATORS['python-pypi'] = _VALIDATORS['python-service'] +# This release-type uses the same version validation as python-service and +# has no language specific validation like nodejs or xstatic. +# It's used to bypass and python specific checks (like requirements validation) +_VALIDATORS['generic'] = _VALIDATORS['python-service'] def validate_version(versionstr, release_type='python-service', pre_ok=True): diff --git a/tox.ini b/tox.ini index 2ee4607343..727241f40f 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,8 @@ [tox] -minversion = 1.6 +minversion = 3.1.0 envlist = py35,validate,pep8,bashate,docs skipdist = True +ignore_basepython_conflict=true [testenv] usedevelop=True