summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan S. Arnold <ryan.arnold@linaro.org>2016-08-18 17:17:54 -0500
committerRyan S. Arnold <ryan.arnold@linaro.org>2016-08-18 17:17:54 -0500
commit0efe81a12881c31cae6a1cec7121517f954993fd (patch)
tree8b031c8f18777edcc0ae4bb2d8d6b41d73fcfaeb
parent9f955d22676bcd0d6fe8967cb7c7be06403d2d50 (diff)
Remove class PV and make Vendor and Package baseclasses.
-rw-r--r--linaropy/vers.py67
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)