filesystem: tests for numbering logical partitions

This commit is contained in:
Dan Bungert 2022-04-15 16:42:03 -06:00
parent 396dca07b8
commit f0c23f659f
1 changed files with 44 additions and 12 deletions

View File

@ -137,10 +137,12 @@ class FakeStorageInfo:
raw = attr.ib(default=attr.Factory(dict)) raw = attr.ib(default=attr.Factory(dict))
def make_model(bootloader=None): def make_model(bootloader=None, storage_version=None):
model = FilesystemModel() model = FilesystemModel()
if bootloader is not None: if bootloader is not None:
model.bootloader = bootloader model.bootloader = bootloader
if storage_version is not None:
model.storage_version = storage_version
model._probe_data = {} model._probe_data = {}
return model return model
@ -678,18 +680,49 @@ class TestAutoInstallConfig(unittest.TestCase):
class TestPartitionNumbering(unittest.TestCase): class TestPartitionNumbering(unittest.TestCase):
def test_basic(self): def setUp(self):
self.cur_idx = 1
def assert_next(self, part):
self.assertEqual(self.cur_idx, part.number)
self.cur_idx += 1
def test_gpt(self):
m, d1 = make_model_and_disk(ptable='gpt') m, d1 = make_model_and_disk(ptable='gpt')
p1 = make_partition(m, d1) for _ in range(8):
p2 = make_partition(m, d1) self.assert_next(make_partition(m, d1))
p3 = make_partition(m, d1)
self.assertEqual(1, p1.number) def test_msdos_all_primary(self):
self.assertEqual(2, p2.number) m, d1 = make_model_and_disk(ptable='msdos')
self.assertEqual(3, p3.number) for _ in range(4):
self.assert_next(make_partition(m, d1))
def test_msdos_one_primary(self):
m, d1 = make_model_and_disk(ptable='msdos')
self.assert_next(make_partition(m, d1))
self.assert_next(make_partition(m, d1, flag='extended'))
self.cur_idx = 5
for _ in range(3):
self.assert_next(make_partition(m, d1, flag='logical'))
def test_msdos_three_primary(self):
m, d1 = make_model_and_disk(ptable='msdos')
for _ in range(3):
self.assert_next(make_partition(m, d1))
self.assert_next(
make_partition(m, d1, flag='extended'))
for _ in range(3):
self.assert_next(make_partition(m, d1, flag='logical'))
def test_msdos_no_fifth_primary(self):
m, d1 = make_model_and_disk(ptable='msdos')
for _ in range(4):
self.assert_next(make_partition(m, d1))
with self.assertRaises(Exception):
make_partition(m, d1)
def test_p1_preserved(self): def test_p1_preserved(self):
m = make_model() m = make_model(storage_version=2)
m.storage_version = 2
d1 = make_disk(m, ptable='gpt') d1 = make_disk(m, ptable='gpt')
p1 = make_partition(m, d1, preserve=True, number=1) p1 = make_partition(m, d1, preserve=True, number=1)
p2 = make_partition(m, d1) p2 = make_partition(m, d1)
@ -702,8 +735,7 @@ class TestPartitionNumbering(unittest.TestCase):
self.assertEqual(False, p3.preserve) self.assertEqual(False, p3.preserve)
def test_p2_preserved(self): def test_p2_preserved(self):
m = make_model() m = make_model(storage_version=2)
m.storage_version = 2
d1 = make_disk(m, ptable='gpt') d1 = make_disk(m, ptable='gpt')
p2 = make_partition(m, d1, preserve=True, number=2) p2 = make_partition(m, d1, preserve=True, number=2)
p1 = make_partition(m, d1) p1 = make_partition(m, d1)