diff options
author | Ryan S. Arnold <ryan.arnold@linaro.org> | 2016-08-18 17:17:54 -0500 |
---|---|---|
committer | Ryan S. Arnold <ryan.arnold@linaro.org> | 2016-08-18 17:17:54 -0500 |
commit | 0efe81a12881c31cae6a1cec7121517f954993fd (patch) | |
tree | 8b031c8f18777edcc0ae4bb2d8d6b41d73fcfaeb | |
parent | 9f955d22676bcd0d6fe8967cb7c7be06403d2d50 (diff) |
Remove class PV and make Vendor and Package baseclasses.
-rw-r--r-- | linaropy/vers.py | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/linaropy/vers.py b/linaropy/vers.py index 6126a01..2804692 100644 --- a/linaropy/vers.py +++ b/linaropy/vers.py @@ -1,27 +1,20 @@ import unittest import logging -# Abstract baseclass for Vendor and Package that provides some basic -# typechecking. -class PV(object): - def __init__(self, pv=None): - if isinstance(pv, basestring): - self.pv=pv - else: - raise TypeError("Input to PV must be of type basestring.") +class Vendor(object): + def __init__(self, vendor="Linaro"): + if not vendor: + raise TypeError("Vendor requires a vendor string.") + if isinstance(vendor, basestring): + self.vendor=vendor + else: + raise TypeError("Input 'vendor' must be of type basestring.") def __str__(self): - return self.pv + return self.vendor def lower(self): - return self.pv.lower() - -class Vendor(PV): - def __init__(self, vendor="Linaro"): - try: - super(Vendor,self).__init__(vendor) - except TypeError: - raise TypeError("Input 'vendor' must be of type basestring.") + return self.vendor.lower() class Version(object): # @major - required int or str representation of int. @@ -135,19 +128,17 @@ def versionFromStr(version): return Version(major, minor, point) -class Package(PV): +class Package(object): # @package - default = GCC # @version - required. Either a string representing a version or a Version # instance. def __init__(self, package="GCC", version=None): - #TODO: Make sure package is not None. - if package == u'': - raise TypeError("Package must not be an empty string") + if not package or package == u'': + raise TypeError("Package requires 'package' as a non-empty string") - # TODO: Provide a list of known inputs and test against those? - try: - super(Package,self).__init__(package) - except TypeError: + if isinstance(package, basestring): + self.package=package + else: raise TypeError("Input 'package' must be of type basestring.") if not version: @@ -158,16 +149,16 @@ class Package(PV): self.version=versionFromStr(version) def get_package(self): - return super(Package,self).__str__() + return self.package def get_version(self): return str(self.version) def __str__(self): - return super(Package,self).__str__() + u'-' + str(self.version) + return self.package + u'-' + str(self.version) def lower(self): - return super(Package,self).lower() + u'-' + str(self.version) + return self.package.lower() + u'-' + str(self.version) #TODO: Create format function which can change the separator to ' ' or to '-'. @@ -184,7 +175,7 @@ def packageFromStr(package=None): try: package_version=package.rsplit('-', 1)[1] except IndexError: - raise RuntimeError('string must be <package_name>-<package_version>') + raise ValueError('string must be <package_name>-<package_version>') if package_name == u'': raise TypeError("Couldn't parse a package name from input string") @@ -332,6 +323,10 @@ class TestVendor(unittest.TestCase): with self.assertRaises(TypeError): vendor=Vendor(vendor=None) + def test_nonstring_input(self): + with self.assertRaises(TypeError): + vendor=Vendor(vendor=int(1)) + def test_str_input(self): vendor=Vendor("TestVendor") self.assertEqual(str(vendor), "TestVendor") @@ -348,7 +343,7 @@ class TestPackage(unittest.TestCase): package=Package(version="5.3.1") self.assertEqual(str(package), "GCC-5.3.1") self.assertEqual(package.lower(), "gcc-5.3.1") - self.assertEqual(package.pv, "GCC") + self.assertEqual(package.package, "GCC") def test_none_package(self): with self.assertRaises(TypeError): @@ -513,6 +508,10 @@ class TestPackageFromString(unittest.TestCase): with self.assertRaises(TypeError): package=packageFromStr(package=None) + def test_empty_str_package(self): + with self.assertRaises(ValueError): + package=packageFromStr(package=u"") + def test_with_package(self): package=Package("GCC", "5.3.1") with self.assertRaises(TypeError): @@ -522,25 +521,25 @@ class TestPackageFromString(unittest.TestCase): with self.assertRaises(TypeError): package=packageFromStr(package="-5.3.1") - with self.assertRaises(RuntimeError): + with self.assertRaises(ValueError): package=packageFromStr(package="5.3.1") def test_with_no_package_version(self): with self.assertRaises(TypeError): package=packageFromStr(package="GCC-") - with self.assertRaises(RuntimeError): + with self.assertRaises(ValueError): package=packageFromStr(package="GCC") def test_with_space(self): - with self.assertRaises(RuntimeError): + with self.assertRaises(ValueError): package=packageFromStr(package="GCC 5.3.1") def test_correct_usage(self): package=packageFromStr(package="GCC-5.3.1") self.assertEqual(str(package), "GCC-5.3.1") self.assertEqual(package.lower(), "gcc-5.3.1") - self.assertEqual(package.pv, "GCC") + self.assertEqual(package.package, "GCC") self.assertEqual(str(package.version), "5.3.1") self.assertEqual(package.version.major, 5) self.assertEqual(package.version.minor, 3) |