def __init__(self, disk=None, type=None, fs=None, geometry=None, PedPartition=None): if PedPartition is None: if disk is None: raise parted.PartitionException("no disk specified") elif type is None: raise parted.PartitionException("no type specified") elif geometry is None: raise parted.PartitionException("no geometry specified") self._fileSystem = fs self._geometry = geometry self._disk = disk if fs is None: self.__partition = _ped.Partition(disk.getPedDisk(), type, geometry.start, geometry.end) else: self.__partition = _ped.Partition(disk.getPedDisk(), type, geometry.start, geometry.end, parted.fileSystemType[fs.type]) else: self.__partition = PedPartition self._geometry = parted.Geometry(PedGeometry=self.__partition.geom) if disk is None: self._disk = parted.Disk(PedDisk=self.__partition.disk) else: self._disk = disk if self.__partition.fs_type is None: self._fileSystem = None else: self._fileSystem = parted.FileSystem(type=self.__partition.fs_type.name, geometry=self._geometry)
def runTest(self): # The DOS disklabel does not support naming. self.assertRaises(_ped.PartitionException, self._part.set_name, "blah") # These should work. self._disk = _ped.disk_new_fresh(self._device, _ped.disk_type_get("mac")) self._part = _ped.Partition(self._disk, _ped.PARTITION_NORMAL, 0, 100, _ped.file_system_type_get("fat32")) self.assertTrue(self._part.set_name("blah")) self.assertEqual(self._part.get_name(), "blah") # Partitions that are inactive won't work. self._part = _ped.Partition(self._disk, _ped.PARTITION_FREESPACE, 0, 100) self.assertRaises(_ped.PartitionException, self._part.get_name)
def setUp(self): RequiresDisk.setUp(self) self._part = _ped.Partition(disk=self._disk, type=_ped.PARTITION_NORMAL, start=0, end=100, fs_type=_ped.file_system_type_get("ext2"))
def runTest(self): # We don't know which flags should be available and which shouldn't, # but we can at least check that there aren't any tracebacks from # trying all of the valid ones. for f in [ 'PARTITION_BOOT', 'PARTITION_ROOT', 'PARTITION_SWAP', 'PARTITION_HIDDEN', 'PARTITION_RAID', 'PARTITION_LVM', 'PARTITION_LBA', 'PARTITION_HPSERVICE', 'PARTITION_PALO', 'PARTITION_PREP', 'PARTITION_MSFT_RESERVED', 'PARTITION_APPLE_TV_RECOVERY', 'PARTITION_BIOS_GRUB', 'PARTITION_DIAG', 'PARTITION_MSFT_DATA', 'PARTITION_IRST', 'PARTITION_ESP' ]: if not hasattr(_ped, f): continue attr = getattr(_ped, f) self.assertIsInstance(self._part.is_flag_available(attr), bool) # However, an invalid flag should definitely not be available. self.assertFalse(self._part.is_flag_available(1000)) # Partitions that are inactive should not have any available flags. self._part = _ped.Partition(self._disk, _ped.PARTITION_FREESPACE, 0, 100) self.assertRaises(_ped.PartitionException, self._part.is_flag_available, _ped.PARTITION_BOOT)
def runTest(self): # Check that not passing args to _ped.Partition.__init__ is caught. self.assertRaises(TypeError, _ped.Partition) # Or passing the arguments in the wrong order. self.assertRaises(TypeError, _ped.Partition, _ped.file_system_type_get("ext2"), _ped.PARTITION_NORMAL, self._disk, 0, 100) part = _ped.Partition(self._disk, _ped.PARTITION_NORMAL, 0, 100, _ped.file_system_type_get("ext2")) self.assertIsInstance(part, _ped.Partition) # You don't need to pass a filesystem type at all, since this partition # might be FREESPACE or METADATA. part = _ped.Partition(self._disk, _ped.PARTITION_NORMAL, 0, 100) self.assertIsInstance(part, _ped.Partition)
def runTest(self): # The DOS disklabel does not support naming. self.assertRaises(_ped.PartitionException, self._part.get_name) # Partitions that are inactive won't work either. self._part = _ped.Partition(self._disk, _ped.PARTITION_FREESPACE, 0, 100) self.assertRaises(_ped.PartitionException, self._part.get_name) # Mac disk labels do support naming, but there still has to be a name. self._disk = _ped.disk_new_fresh(self._device, _ped.disk_type_get("mac")) self._part = _ped.Partition(self._disk, _ped.PARTITION_NORMAL, 0, 100, _ped.file_system_type_get("fat32")) self.assertEqual(self._part.get_name(), "untitled") # Finally, Mac disk labels with a name will work. self._part.set_name("blah") self.assertEqual(self._part.get_name(), "blah")
def runTest(self): self.assertTrue(self._part.set_system(_ped.file_system_type_get("fat32"))) self.assertRaises(TypeError, self._part.set_system, 47) # Partitions that are inactive cannot have the system type set. self._part = _ped.Partition(self._disk, _ped.PARTITION_FREESPACE, 0, 100) self.assertRaises(_ped.PartitionException, self._part.set_system, _ped.file_system_type_get("ext2"))
def runTest(self): # A partition is active as long as it's not METADATA or FREE. for ty in [_ped.PARTITION_NORMAL, _ped.PARTITION_LOGICAL, _ped.PARTITION_EXTENDED, _ped.PARTITION_PROTECTED]: self._part.type = ty self.assertTrue(self._part.is_active()) for ty in [_ped.PARTITION_FREESPACE, _ped.PARTITION_METADATA]: # Can't have a partition of these two types that also has a # filesystem type associated with it. libparted doesn't like # that combination. self._part = _ped.Partition(self._disk, ty, 0, 100) self.assertFalse(self._part.is_active())