[PATCH 3/6] Add some tests for clearpart and related functionality.
David Lehman
dlehman at redhat.com
Tue Jul 16 17:11:28 UTC 2013
---
tests/clearpart_test.py | 179 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 179 insertions(+)
create mode 100644 tests/clearpart_test.py
diff --git a/tests/clearpart_test.py b/tests/clearpart_test.py
new file mode 100644
index 0000000..a401fb3
--- /dev/null
+++ b/tests/clearpart_test.py
@@ -0,0 +1,179 @@
+import unittest
+import mock
+
+import blivet
+from pykickstart.constants import *
+from parted import PARTITION_NORMAL
+
+class ClearPartTestCase(unittest.TestCase):
+ def testShouldClear(self):
+ """ Test the Blivet.shouldClear method. """
+ b = blivet.Blivet()
+
+ DiskDevice = blivet.devices.DiskDevice
+ PartitionDevice = blivet.devices.PartitionDevice
+
+ # sda is a disk with an existing disklabel containing two partitions
+ sda = DiskDevice("sda", size=100000, exists=True)
+ sda.format = blivet.formats.getFormat("disklabel", device=sda.path,
+ exists=True)
+ sda.format._partedDisk = mock.Mock()
+ sda.format._partedDevice = mock.Mock()
+ b.devicetree._addDevice(sda)
+
+ # sda1 is a partition containing an existing ext4 filesystem
+ sda1 = PartitionDevice("sda1", size=500, exists=True,
+ parents=[sda])
+ sda1._partedPartition = mock.Mock(**{'type': PARTITION_NORMAL,
+ 'getFlag.return_value': 0})
+ sda1.format = blivet.formats.getFormat("ext4", mountpoint="/boot",
+ device=sda1.path,
+ exists=True)
+ b.devicetree._addDevice(sda1)
+
+ # sda2 is a partition containing an existing vfat filesystem
+ sda2 = PartitionDevice("sda2", size=10000, exists=True,
+ parents=[sda])
+ sda2._partedPartition = mock.Mock(**{'type': PARTITION_NORMAL,
+ 'getFlag.return_value': 0})
+ sda2.format = blivet.formats.getFormat("vfat", mountpoint="/foo",
+ device=sda2.path,
+ exists=True)
+ b.devicetree._addDevice(sda2)
+
+ # sdb is an unpartitioned disk containing an xfs filesystem
+ sdb = DiskDevice("sdb", size=100000, exists=True)
+ sdb.format = blivet.formats.getFormat("xfs", device=sdb.path,
+ exists=True)
+ b.devicetree._addDevice(sdb)
+
+ # sdc is an unformatted/uninitialized/empty disk
+ sdc = DiskDevice("sdc", size=100000, exists=True)
+ b.devicetree._addDevice(sdc)
+
+ # sdd is a disk containing an existing disklabel with no partitions
+ sdd = DiskDevice("sdd", size=100000, exists=True)
+ sdd.format = blivet.formats.getFormat("disklabel", device=sdd.path,
+ exists=True)
+ b.devicetree._addDevice(sdd)
+
+ #
+ # clearpart type none
+ #
+ b.config.clearPartType = CLEARPART_TYPE_NONE
+ self.assertFalse(b.shouldClear(sda1),
+ msg="type none should not clear any partitions")
+ self.assertFalse(b.shouldClear(sda2),
+ msg="type none should not clear any partitions")
+
+ b.config.initializeDisks = False
+ self.assertFalse(b.shouldClear(sda),
+ msg="type none should not clear non-empty disks")
+ self.assertFalse(b.shouldClear(sdb),
+ msg="type none should not clear formatting from "
+ "unpartitioned disks")
+
+ self.assertFalse(b.shouldClear(sdc),
+ msg="type none should not clear empty disk without "
+ "initlabel")
+ self.assertFalse(b.shouldClear(sdd),
+ msg="type none should not clear empty partition table "
+ "without initlabel")
+
+ b.config.initializeDisks = True
+ self.assertFalse(b.shouldClear(sda),
+ msg="type none should not clear non-empty disks even "
+ "with initlabel")
+ self.assertFalse(b.shouldClear(sdb),
+ msg="type non should not clear formatting from "
+ "unpartitioned disks even with initlabel")
+ self.assertTrue(b.shouldClear(sdc),
+ msg="type none should clear empty disks when initlabel "
+ "is set")
+ self.assertTrue(b.shouldClear(sdd),
+ msg="type none should clear empty partition table when "
+ "initlabel is set")
+
+ #
+ # clearpart type linux
+ #
+ b.config.clearPartType = CLEARPART_TYPE_LINUX
+ self.assertTrue(b.shouldClear(sda1),
+ msg="type linux should clear partitions containing "
+ "ext4 filesystems")
+ self.assertFalse(b.shouldClear(sda2),
+ msg="type linux should not clear partitions "
+ "containing vfat filesystems")
+
+ b.config.initializeDisks = False
+ self.assertFalse(b.shouldClear(sda),
+ msg="type linux should not clear non-empty disklabels")
+ self.assertTrue(b.shouldClear(sdb),
+ msg="type linux should clear linux-native whole-disk "
+ "formatting regardless of initlabel setting")
+ self.assertFalse(b.shouldClear(sdc),
+ msg="type linux should not clear unformatted disks "
+ "unless initlabel is set")
+ self.assertFalse(b.shouldClear(sdd),
+ msg="type linux should not clear disks with empty "
+ "partition tables unless initlabel is set")
+
+ b.config.initializeDisks = True
+ self.assertFalse(b.shouldClear(sda),
+ msg="type linux should not clear non-empty disklabels")
+ self.assertTrue(b.shouldClear(sdb),
+ msg="type linux should clear linux-native whole-disk "
+ "formatting regardless of initlabel setting")
+ self.assertTrue(b.shouldClear(sdc),
+ msg="type linux should clear unformatted disks when "
+ "initlabel is set")
+ self.assertTrue(b.shouldClear(sdd),
+ msg="type linux should clear disks with empty "
+ "partition tables when initlabel is set")
+
+ #
+ # clearpart type all
+ #
+ b.config.clearPartType = CLEARPART_TYPE_ALL
+ self.assertTrue(b.shouldClear(sda1),
+ msg="type all should clear all partitions")
+ self.assertTrue(b.shouldClear(sda2),
+ msg="type all should clear all partitions")
+
+ b.config.initializeDisks = False
+ self.assertTrue(b.shouldClear(sda),
+ msg="type all should initialize all disks")
+ self.assertTrue(b.shouldClear(sdb),
+ msg="type all should initialize all disks")
+ self.assertTrue(b.shouldClear(sdc),
+ msg="type all should initialize all disks")
+ self.assertTrue(b.shouldClear(sdd),
+ msg="type all should initialize all disks")
+
+ b.config.initializeDisks = True
+ self.assertTrue(b.shouldClear(sda),
+ msg="type all should initialize all disks")
+ self.assertTrue(b.shouldClear(sdb),
+ msg="type all should initialize all disks")
+ self.assertTrue(b.shouldClear(sdc),
+ msg="type all should initialize all disks")
+ self.assertTrue(b.shouldClear(sdd),
+ msg="type all should initialize all disks")
+
+ #
+ # clearpart type list
+ #
+ # TODO
+
+ def testInitializeDisk(self):
+ """
+ magic partitions
+ non-empty partition table
+ """
+ pass
+
+ def testRecursiveRemove(self):
+ """
+ protected device at various points in stack
+ """
+ pass
--
1.8.1.4
More information about the anaconda-patches
mailing list