Improve package version validation

Change-Id: Ib9f7ea83ddd5a042010ea8e35f4426939745e17e
This commit is contained in:
Krzysztof Szukiełojć 2016-08-29 16:16:19 +02:00
parent 88c7813273
commit 3b4dfa537b
3 changed files with 17 additions and 1 deletions

View File

@ -55,6 +55,11 @@ class ManifestValidatorTests(helpers.BaseValidatorTestClass):
self.g = self.mv._valid_type('Shared Library') self.g = self.mv._valid_type('Shared Library')
self.assertIn('Type is invalid "Shared Library"', next(self.g).message) self.assertIn('Type is invalid "Shared Library"', next(self.g).message)
def test_incorrect_package_version(self):
self.g = self.mv._valid_version('a1.3')
self.assertIn('Version format should be compatible with SemVer '
'not "a1.3"', next(self.g).message)
def test_wrong_require_type(self): def test_wrong_require_type(self):
self.g = self.mv._valid_require([1, 2, 3]) self.g = self.mv._valid_require([1, 2, 3])
self.assertIn('Require is not a dict type', next(self.g).message) self.assertIn('Require is not a dict type', next(self.g).message)

View File

@ -14,6 +14,8 @@
import os.path import os.path
import semantic_version
import six import six
from muranopkgcheck import error from muranopkgcheck import error
@ -26,7 +28,7 @@ class ManifestValidator(base.YamlValidator):
'manifest.yaml$') 'manifest.yaml$')
self.add_checker(self._valid_format, 'Format', False) self.add_checker(self._valid_format, 'Format', False)
self.add_checker(self._valid_string, 'Author', False) self.add_checker(self._valid_string, 'Author', False)
self.add_checker(self._valid_string, 'Version', False) self.add_checker(self._valid_version, 'Version', False)
self.add_checker(self._valid_fullname, 'FullName') self.add_checker(self._valid_fullname, 'FullName')
self.add_checker(self._valid_string, 'Name', False) self.add_checker(self._valid_string, 'Name', False)
self.add_checker(self._valid_classes, 'Classes', False) self.add_checker(self._valid_classes, 'Classes', False)
@ -66,6 +68,14 @@ class ManifestValidator(base.YamlValidator):
yield error.report.E071('Type is invalid "{0}"'.format(value), yield error.report.E071('Type is invalid "{0}"'.format(value),
value) value)
def _valid_version(self, version):
try:
semantic_version.Version.coerce(str(version))
except ValueError:
yield error.report.E071('Version format should be compatible with '
'SemVer not "{0}"'.format(version),
version)
def _valid_logo_ui_existance(self, ast): def _valid_logo_ui_existance(self, ast):
if 'Logo' not in ast: if 'Logo' not in ast:
yield self._valid_logo('logo.png') yield self._valid_logo('logo.png')

View File

@ -7,3 +7,4 @@ PyYAML>=3.1.0 # MIT
yaql>=1.1.0 # Apache 2.0 License yaql>=1.1.0 # Apache 2.0 License
six>=1.9.0 # MIT six>=1.9.0 # MIT
stevedore>=1.16.0 # Apache-2.0 stevedore>=1.16.0 # Apache-2.0
semantic_version>=2.3.1 # BSD