Skip to content

Commit

Permalink
feat: add partition find function
Browse files Browse the repository at this point in the history
  • Loading branch information
swysocki committed Sep 7, 2023
1 parent 246094a commit 7d810cf
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 4 deletions.
15 changes: 14 additions & 1 deletion gpt_image/partition.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import uuid
from enum import Enum, IntEnum
from math import ceil
from typing import List
from typing import List, Optional

from gpt_image.geometry import Geometry

Expand Down Expand Up @@ -311,3 +311,16 @@ def marshal(self) -> bytes:
- len(part_bytes)
)
return padded

def find(self, partition_name: str) -> Optional[Partition]:
"""Find a Partition by name
Args:
partition_name: string name of partition to search for
Returns:
the partition instance or None if not found
"""
for partition in self.entries:
if partition.partition_name == partition_name:
return partition
return None
23 changes: 20 additions & 3 deletions tests/test_partition.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@
import pytest

from gpt_image.geometry import Geometry
from gpt_image.partition import (Partition, PartitionAttribute,
PartitionEntryArray, PartitionEntryError,
PartitionType)
from gpt_image.partition import (
Partition,
PartitionAttribute,
PartitionEntryArray,
PartitionEntryError,
PartitionType,
)

PART_NAME = "test-part"
PART_NAME_2 = "partition-2"
Expand Down Expand Up @@ -155,3 +159,16 @@ def test_partition_entry_marshall():
part2_unmarshal = Partition.unmarshal(part2_bytes, geo.sector_size)
assert part1_unmarshal.partition_name == PART_NAME
assert part2_unmarshal.partition_name == PART_NAME_2


def test_partition_find():
geo = Geometry(8 * 1024 * 1024)
part_array = PartitionEntryArray(geo)
part1 = Partition(PART_NAME, 2 * 1024, PartitionType.LINUX_FILE_SYSTEM.value)
part2 = Partition(PART_NAME_2, 3 * 1024, PartitionType.LINUX_FILE_SYSTEM.value)
part_array.add(part1)
part_array.add(part2)
test_part = part_array.find(PART_NAME)
assert test_part.partition_name == PART_NAME
assert test_part.size == 2 * 1024
assert test_part.type_guid == PartitionType.LINUX_FILE_SYSTEM.value

0 comments on commit 7d810cf

Please sign in to comment.