partition_table: Check - partition names must be unique

This commit is contained in:
Konstantin Kondrashov 2018-09-06 01:11:59 +08:00
parent 17ac4bad73
commit 2a87f00942
2 changed files with 22 additions and 0 deletions

View file

@ -169,6 +169,19 @@ class PartitionTable(list):
# verify each partition individually
for p in self:
p.verify()
# check on duplicate name
names = [ p.name for p in self ]
duplicates = set( n for n in names if names.count(n) > 1 )
# print sorted duplicate partitions by name
if len(duplicates) != 0:
print("A list of partitions that have the same name:")
for p in sorted(self, key=lambda x:x.name):
if len(duplicates.intersection([p.name])) != 0:
print("%s" % (p.to_csv()))
raise InputError("Partition names must be unique")
# check for overlaps
last = None
for p in sorted(self, key=lambda x:x.offset):

View file

@ -166,6 +166,15 @@ second, app, ota_0, 0x200000, 1M
t = PartitionTable.from_csv(csv)
t.verify()
def test_unique_name_fail(self):
csv = """
first, app, factory, 0x100000, 1M
first, app, ota_0, 0x200000, 1M
"""
with self.assertRaisesRegexp(InputError, "Partition names must be unique"):
t = PartitionTable.from_csv(csv)
t.verify()
class BinaryOutputTests(unittest.TestCase):
def test_binary_entry(self):
csv = """