def test_allowed_pesize(self): # test allowed pesize options based on free space available parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None)) # only 8 MiB free space, allow only 2 and 4 MiB PE Size free_device = Mock(is_logical=False, size=Size("8 MiB")) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvm", parent_device=parent_device, free_device=free_device) pesizes = [i[0] for i in advanced_options.pesize_combo.get_model()] self.assertEqual(["2 MiB", "4 MiB"], pesizes) # enough free space, allow up to 64 MiB PE Size free_device = Mock(is_logical=False, size=Size("1 GiB")) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvm", parent_device=parent_device, free_device=free_device) pesizes = [i[0] for i in advanced_options.pesize_combo.get_model()] self.assertEqual( ["2 MiB", "4 MiB", "8 MiB", "16 MiB", "32 MiB", "64 MiB"], pesizes)
def test_selection(self): # partition parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None)) free_device = Mock(is_logical=False) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition", parent_device=parent_device, free_device=free_device) advanced_options.partition_combo.set_active_id("extended") selection = advanced_options.get_selection() self.assertEqual(selection["parttype"], "extended") # lvm parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None)) free_device = Mock(is_logical=False, size=Size("8 GiB")) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvm", parent_device=parent_device, free_device=free_device) advanced_options.pesize_combo.set_active_id("64 MiB") selection = advanced_options.get_selection() self.assertEqual(selection["pesize"], Size("64 MiB")) # mdraid parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None)) free_device = Mock(is_logical=False) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="mdraid", parent_device=parent_device, free_device=free_device) advanced_options.chunk_combo.set_active_id("64 KiB") selection = advanced_options.get_selection() self.assertEqual(selection["chunk_size"], Size("64 KiB"))
def test_mdraid_validation(self): parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None)) free_device = Mock(is_logical=False, size=Size("8 GiB")) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="mdraid", parent_device=parent_device, free_device=free_device) entry = advanced_options.chunk_combo.get_child() # invalid size specification entry.set_text("aaaaaaa") advanced_options.validate_user_input() self.error_dialog.assert_any_call(self.add_dialog, _("'{0}' is not a valid chunk size specification.").format("aaaaaaa"), not self.add_dialog.installer_mode) self.error_dialog.reset_mock() # invalid size entry.set_text("1 KiB") advanced_options.validate_user_input() self.error_dialog.assert_any_call(self.add_dialog, _("Chunk size must be multiple of 4 KiB."), not self.add_dialog.installer_mode) self.error_dialog.reset_mock() # valid size entry.set_text("64 KiB") advanced_options.validate_user_input() self.assertFalse(self.error_dialog.called) self.error_dialog.reset_mock()
def test_mdraid_validation(self): parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None)) free_device = Mock(is_logical=False, size=Size("8 GiB")) advanced_options = AdvancedOptions( add_dialog=self.add_dialog, device_type="mdraid", parent_device=parent_device, free_device=free_device ) entry = advanced_options.chunk_combo.get_child() # invalid size specification entry.set_text("aaaaaaa") advanced_options.validate_user_input() self.error_dialog.assert_any_call( self.add_dialog, _("'aaaaaaa' is not a valid chunk size specification."), not self.add_dialog.installer_mode ) self.error_dialog.reset_mock() # invalid size entry.set_text("1 KiB") advanced_options.validate_user_input() self.error_dialog.assert_any_call( self.add_dialog, _("Chunk size must be multiple of 4 KiB."), not self.add_dialog.installer_mode ) self.error_dialog.reset_mock() # valid size entry.set_text("64 KiB") advanced_options.validate_user_input() self.assertFalse(self.error_dialog.called) self.error_dialog.reset_mock()
def test_lvm_options(self): # test lvm options are displayed for lvm/lvmvg type parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None)) free_device = Mock(is_logical=False, size=Size("8 GiB")) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvm", parent_device=parent_device, free_device=free_device) self.assertFalse(hasattr(advanced_options, "partition_combo")) self.assertTrue(hasattr(advanced_options, "pesize_combo")) self.assertFalse(hasattr(advanced_options, "chunk_combo")) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvmvg", parent_device=parent_device, free_device=free_device) self.assertFalse(hasattr(advanced_options, "partition_combo")) self.assertTrue(hasattr(advanced_options, "pesize_combo")) self.assertFalse(hasattr(advanced_options, "chunk_combo"))
def test_partition_options(self): # test partition options are displayed for partition type parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None)) free_device = Mock(is_logical=False) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition", parent_device=parent_device, free_device=free_device) self.assertTrue(hasattr(advanced_options, "partition_combo")) self.assertFalse(hasattr(advanced_options, "pesize_combo")) self.assertFalse(hasattr(advanced_options, "chunk_combo"))
def test_gpt_partitions(self): # adding partition on gpt disk -> only "primary" type allowed parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None)) free_device = Mock(is_logical=False) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition", parent_device=parent_device, free_device=free_device) part_types = advanced_options.partition_combo.get_model() self.assertEqual(len(part_types), 1) self.assertEqual(part_types[0][1], "primary")
def test_extended_partition(self): # extended partition already exists -> allow only "primary" type parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=Mock())) free_device = Mock(is_logical=False) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition", parent_device=parent_device, free_device=free_device) part_types = advanced_options.partition_combo.get_model() self.assertEqual(len(part_types), 1) self.assertEqual(part_types[0][1], "primary")
def test_logical_partition(self): # adding partition to free space inside extended partition -> only "logical allowed" parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=Mock())) free_device = Mock(is_logical=True) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition", parent_device=parent_device, free_device=free_device) part_types = advanced_options.partition_combo.get_model() self.assertEqual(len(part_types), 1) self.assertEqual(part_types[0][1], "logical")
def test_selection(self): # partition parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None)) free_device = Mock(is_logical=False) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition", parent_device=parent_device, free_device=free_device) advanced_options.partition_combo.set_active_id("extended") selection = advanced_options.get_selection() self.assertEqual(selection["parttype"], "extended") # lvm parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None)) free_device = Mock(is_logical=False, size=Size("8 GiB")) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvm", parent_device=parent_device, free_device=free_device) advanced_options.pesize_combo.set_active_id("64 MiB") selection = advanced_options.get_selection() self.assertEqual(selection["pesize"], Size("64 MiB"))
def test_normal_partition(self): # "standard" situation -- disk with msdos part table, no existing extended partition # → both "primary and extended" types should be allowed parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None)) free_device = Mock(is_logical=False) advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition", parent_device=parent_device, free_device=free_device) part_types = advanced_options.partition_combo.get_model() self.assertEqual(len(part_types), 2) self.assertEqual(part_types[0][1], "primary") self.assertEqual(part_types[1][1], "extended")