# 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):
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 = """