aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/test_disk.bats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_disk.bats')
-rw-r--r--tests/unit/test_disk.bats132
1 files changed, 132 insertions, 0 deletions
diff --git a/tests/unit/test_disk.bats b/tests/unit/test_disk.bats
new file mode 100644
index 0000000..f4e6929
--- /dev/null
+++ b/tests/unit/test_disk.bats
@@ -0,0 +1,132 @@
+#!/usr/bin/env bats
+# Unit tests for installer/lib/disk.sh
+#
+# Coverage scope: pure partition-path helpers only. Side-effecting
+# functions (partition_disk, partition_disks, format_efi,
+# format_efi_partitions, select_disks) wrap sgdisk / mkfs.fat /
+# partprobe / fzf and are validated by VM integration per the
+# project's testing-strategy.org policy.
+
+setup() {
+ # shellcheck disable=SC1091
+ source "${BATS_TEST_DIRNAME}/../../installer/lib/common.sh"
+ # shellcheck disable=SC1091
+ source "${BATS_TEST_DIRNAME}/../../installer/lib/disk.sh"
+}
+
+#############################
+# get_efi_partition
+#############################
+
+@test "get_efi_partition: SATA disk gets numeric suffix 1" {
+ run get_efi_partition /dev/sda
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/sda1" ]
+}
+
+@test "get_efi_partition: virtio disk gets numeric suffix 1" {
+ run get_efi_partition /dev/vda
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/vda1" ]
+}
+
+@test "get_efi_partition: NVMe disk gets p1 suffix" {
+ run get_efi_partition /dev/nvme0n1
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/nvme0n1p1" ]
+}
+
+@test "get_efi_partition: NVMe with multi-namespace disk gets p1 suffix" {
+ run get_efi_partition /dev/nvme1n2
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/nvme1n2p1" ]
+}
+
+@test "get_efi_partition: empty input documents current behavior" {
+ # Empty input misses the nvme regex so the bare-suffix branch fires,
+ # producing just "1". This pins the existing behavior; the function
+ # is never called with empty in production but pinning catches a
+ # change in suffix-rule logic.
+ run get_efi_partition ""
+ [ "$status" -eq 0 ]
+ [ "$output" = "1" ]
+}
+
+#############################
+# get_root_partition
+#############################
+
+@test "get_root_partition: SATA disk gets numeric suffix 2" {
+ run get_root_partition /dev/sda
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/sda2" ]
+}
+
+@test "get_root_partition: NVMe disk gets p2 suffix" {
+ run get_root_partition /dev/nvme0n1
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/nvme0n1p2" ]
+}
+
+@test "get_root_partition: virtio disk gets numeric suffix 2" {
+ run get_root_partition /dev/vdb
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/vdb2" ]
+}
+
+#############################
+# get_efi_partitions
+#############################
+
+@test "get_efi_partitions: two SATA disks emit two suffixed partitions" {
+ run get_efi_partitions /dev/sda /dev/sdb
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/sda1
+/dev/sdb1" ]
+}
+
+@test "get_efi_partitions: mixed SATA + NVMe gets correct per-disk suffix" {
+ run get_efi_partitions /dev/sda /dev/nvme0n1
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/sda1
+/dev/nvme0n1p1" ]
+}
+
+@test "get_efi_partitions: single NVMe disk emits one p1 partition" {
+ run get_efi_partitions /dev/nvme0n1
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/nvme0n1p1" ]
+}
+
+@test "get_efi_partitions: three disks emit three lines in order" {
+ run get_efi_partitions /dev/sda /dev/sdb /dev/sdc
+ [ "$status" -eq 0 ]
+ local lines
+ lines=$(echo "$output" | wc -l)
+ [ "$lines" -eq 3 ]
+}
+
+#############################
+# get_root_partitions
+#############################
+
+@test "get_root_partitions: two SATA disks emit two suffix-2 partitions" {
+ run get_root_partitions /dev/sda /dev/sdb
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/sda2
+/dev/sdb2" ]
+}
+
+@test "get_root_partitions: mixed SATA + NVMe applies correct suffix per disk" {
+ run get_root_partitions /dev/sda /dev/nvme0n1
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/sda2
+/dev/nvme0n1p2" ]
+}
+
+@test "get_root_partitions: NVMe array gets p2 suffix on each entry" {
+ run get_root_partitions /dev/nvme0n1 /dev/nvme1n1
+ [ "$status" -eq 0 ]
+ [ "$output" = "/dev/nvme0n1p2
+/dev/nvme1n1p2" ]
+}