From: Valentin David Date: Thu, 12 Mar 2026 22:15:06 +0000 (+0100) Subject: test: Add test for repart's BlockDeviceReplace X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=120f906c8b72b8818fa89017acaf08125342d745;p=thirdparty%2Fsystemd.git test: Add test for repart's BlockDeviceReplace --- diff --git a/test/units/TEST-58-REPART.sh b/test/units/TEST-58-REPART.sh index df6f935c980..319b682298c 100755 --- a/test/units/TEST-58-REPART.sh +++ b/test/units/TEST-58-REPART.sh @@ -2132,6 +2132,97 @@ EOF losetup -d "$loop" } +testcase_block_device_replace() { + if [[ "$OFFLINE" == "yes" ]]; then + return 0 + fi + + if ! command -v btrfs >/dev/null; then + echo "btrfs not found, skipping." + return 0 + fi + + if ! command -v mkfs.btrfs >/dev/null; then + echo "mkfs.btrfs not found, skipping." + return 0 + fi + + local defs imgs btrfs_mntpoint_plain btrfs_mntpoint_encrypted + local loop loop_btrfs_plain loop_btrfs_encrypted + local encrypted_device + + btrfs_mntpoint_plain="$(mktemp --directory "/tmp/test-repart.btrfs-mntpoint-plain.XXXXXXXXXX")" + btrfs_mntpoint_encrypted="$(mktemp --directory "/tmp/test-repart.btrfs-mntpoint-encrypted.XXXXXXXXXX")" + defs="$(mktemp --directory "/tmp/test-repart.defs.XXXXXXXXXX")" + imgs="$(mktemp --directory "/var/tmp/test-repart.imgs.XXXXXXXXXX")" + # shellcheck disable=SC2064 + trap "rm -rf '$defs' '$imgs' '$btrfs_mntpoint_plain' '$btrfs_mntpoint_encrypted'" RETURN + chmod 0755 "$defs" + + truncate --size 500M "${imgs}/btrfs-plain" + mkfs.btrfs "${imgs}/btrfs-plain" + loop_btrfs_plain="$(losetup --show --find "$imgs/btrfs-plain")" + # shellcheck disable=SC2064 + trap "losetup -d '${loop_btrfs_plain}'; rm -rf '$defs' '$imgs' '$btrfs_mntpoint_plain' '$btrfs_mntpoint_encrypted'" RETURN + + mount "${loop_btrfs_plain}" "${btrfs_mntpoint_plain}" + echo tada >"${btrfs_mntpoint_plain}/magic-plain" + + # shellcheck disable=SC2064 + trap "umount '${btrfs_mntpoint_plain}'; losetup -d '${loop_btrfs_plain}'; rm -rf '$defs' '$imgs' '$btrfs_mntpoint_plain' '$btrfs_mntpoint_encrypted'" RETURN + + truncate --size 500M "${imgs}/btrfs-encrypted" + mkfs.btrfs "${imgs}/btrfs-encrypted" + loop_btrfs_encrypted="$(losetup --show --find "$imgs/btrfs-encrypted")" + # shellcheck disable=SC2064 + trap "losetup -d '${loop_btrfs_encrypted}'; umount '${btrfs_mntpoint_plain}'; losetup -d '${loop_btrfs_plain}'; rm -rf '$defs' '$imgs' '$btrfs_mntpoint_plain' '$btrfs_mntpoint_encrypted'" RETURN + + mount "${loop_btrfs_encrypted}" "${btrfs_mntpoint_encrypted}" + echo tada >"${btrfs_mntpoint_encrypted}/magic-encrypted" + + # shellcheck disable=SC2064 + trap "umount '${btrfs_mntpoint_encrypted}'; losetup -d '${loop_btrfs_encrypted}'; umount '${btrfs_mntpoint_plain}'; losetup -d '${loop_btrfs_plain}'; rm -rf '$defs' '$imgs' '$btrfs_mntpoint_plain' '$btrfs_mntpoint_encrypted'" RETURN + + truncate --size 2G "${imgs}/img" + + tee "$defs/01-plain.conf" <