[master 5/5] Add unit tests for device size setters and getters.

dwlehman installerbot-noreply at redhat.com
Wed Jul 1 17:30:21 UTC 2015


From: David Lehman <dlehman at redhat.com>

---
 tests/devices_test/size_test.py | 99 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)
 create mode 100644 tests/devices_test/size_test.py

diff --git a/tests/devices_test/size_test.py b/tests/devices_test/size_test.py
new file mode 100644
index 0000000..bb664bb
--- /dev/null
+++ b/tests/devices_test/size_test.py
@@ -0,0 +1,99 @@
+
+import unittest
+
+from blivet.devices import StorageDevice
+from blivet import errors
+from blivet.formats import getFormat
+from blivet.size import Size
+
+class StorageDeviceSizeTest(unittest.TestCase):
+    def _getDevice(self, *args, **kwargs):
+        return StorageDevice(*args, **kwargs)
+
+    def testSizeSetter(self):
+        initial_size = Size('10 GiB')
+        new_size = Size('2 GiB')
+
+        ##
+        ## setter sets the size
+        ##
+        dev = self._getDevice('sizetest', size=initial_size)
+        self.assertEqual(dev.size, initial_size)
+
+        dev.size = new_size
+        self.assertEqual(dev.size, new_size)
+
+        ##
+        ## setter raises exn if size outside of format limits
+        ##
+        dev.format._maxSize = Size("5 GiB")
+        with self.assertRaises(errors.DeviceError):
+            dev.size = Size("6 GiB")
+
+        ##
+        ## new formats' min size is checked against device size
+        ##
+        fmt = getFormat(None)
+        fmt._minSize = Size("10 GiB")
+        with self.assertRaises(errors.DeviceError):
+            dev.format = fmt
+
+        # the format assignment should succeed without the min size conflict
+        fmt._minSize = Size(0)
+        dev.format = fmt
+
+        ##
+        ## new formats' max size is checked against device size
+        ##
+        fmt = getFormat(None)
+        fmt._maxSize = Size("10 MiB")
+        with self.assertRaises(errors.DeviceError):
+            dev.format = fmt
+
+        # the format assignment should succeed without the min size conflict
+        fmt._maxSize = Size(0)
+        dev.format = fmt
+
+    def testSizeGetter(self):
+        initial_size = Size("10 GiB")
+        new_size = Size("5 GiB")
+        dev = self._getDevice('sizetest', size=initial_size)
+
+        ##
+        ## getter returns the size in the basic case for non-existing devices
+        ##
+        self.assertEqual(dev.size, initial_size)
+
+        # create a new device that exists
+        dev = self._getDevice('sizetest', size=initial_size, exists=True)
+
+        ##
+        ## getter returns the size in the basic case for existing devices
+        ##
+        self.assertEqual(dev.size, initial_size)
+
+        ##
+        ## size does not reflect target size for non-resizable devices
+        ##
+        # bypass the setter since the min/max will be the current size for a
+        # non-resizable device
+        dev._targetSize = new_size
+        self.assertEqual(dev.size, initial_size)
+
+        ##
+        ## getter returns target size when device is resizable and target size
+        ## is non-zero
+        ##
+        dev._resizable = True
+        dev.targetSize = new_size # verify that the target size setter works
+        self.assertEqual(dev.size, new_size)
+        self.assertEqual(dev.size, dev.targetSize)
+        self.assertNotEqual(dev._size, dev.targetSize)
+
+        ##
+        ## getter returns current size when device is resizable and target size
+        ## is zero
+        ##
+        dev.targetSize = Size(0)
+        self.assertEqual(dev.size, initial_size)
+        self.assertEqual(dev.size, dev.currentSize)


-- 
To view this commit on github, visit https://github.com/rhinstaller/blivet/commit/802bf6b1b26258b699ae11a91b01a933005a739a


More information about the anaconda-patches mailing list