From a8af65e38b76023a4cf1102bad86b2e2f75c47f0 Mon Sep 17 00:00:00 2001 From: Vladislav Nepogodin Date: Sun, 30 Jun 2024 22:54:58 +0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20gucc:=20add=20btrfs=20on=20luks?= =?UTF-8?q?=20test=20case=20for=20fstab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gucc/src/fstab.cpp | 2 ++ gucc/tests/unit-fstab_gen.cpp | 31 ++++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/gucc/src/fstab.cpp b/gucc/src/fstab.cpp index 8b84a06..8c8ab31 100644 --- a/gucc/src/fstab.cpp +++ b/gucc/src/fstab.cpp @@ -33,6 +33,8 @@ namespace fs = std::filesystem; using namespace std::string_view_literals; namespace { + +// NOLINTNEXTLINE static constexpr auto FSTAB_HEADER = R"(# Static information about the filesystems. # See fstab(5) for details. diff --git a/gucc/tests/unit-fstab_gen.cpp b/gucc/tests/unit-fstab_gen.cpp index ccb8f6d..06581bd 100644 --- a/gucc/tests/unit-fstab_gen.cpp +++ b/gucc/tests/unit-fstab_gen.cpp @@ -63,13 +63,31 @@ UUID=8EFB-4B84 /boot vfat defaults,noatim )"sv; +static constexpr auto FSTAB_LUKS_BTRFS_TEST = R"(# Static information about the filesystems. +# See fstab(5) for details. + +# +# /dev/nvme0n1p1 +/dev/mapper/luks-6bdb3301-8efb-4b84-b0b7-4caeef26fd6f / btrfs subvol=/@,defaults,noatime,compress=zstd,space_cache=v2,commit=120 0 0 + +# /dev/nvme0n1p1 +/dev/mapper/luks-6bdb3301-8efb-4b84-b0b7-4caeef26fd6f /home btrfs subvol=/@home,defaults,noatime,compress=zstd,space_cache=v2,commit=120 0 0 + +# /dev/nvme0n1p1 +/dev/mapper/luks-6bdb3301-8efb-4b84-b0b7-4caeef26fd6f /var/cache btrfs subvol=/@cache,defaults,noatime,compress=zstd,space_cache=v2,commit=120 0 0 + +# /dev/nvme0n1p2 +UUID=8EFB-4B84 /boot vfat defaults,noatime 0 2 + +)"sv; + int main() { auto callback_sink = std::make_shared([](const spdlog::details::log_msg& msg) { // noop }); spdlog::set_default_logger(std::make_shared("default", callback_sink)); - // btrfs with snapshots + // btrfs with subvolumes { const std::vector partitions{ gucc::fs::Partition{.fstype = "btrfs"s, .mountpoint = "/"s, .uuid_str = "6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .device = "/dev/nvme0n1p1"s, .mount_opts = "defaults,noatime,compress=zstd,space_cache=v2,commit=120"s, .luks_mapper_name = {}, .subvolume = "/@"s}, @@ -110,4 +128,15 @@ int main() { const auto& fstab_content = gucc::fs::generate_fstab_content(partitions); assert(fstab_content == FSTAB_ZFS_TEST); } + // luks btrfs with subvolumes + { + const std::vector partitions{ + gucc::fs::Partition{.fstype = "btrfs"s, .mountpoint = "/"s, .device = "/dev/nvme0n1p1"s, .mount_opts = "defaults,noatime,compress=zstd,space_cache=v2,commit=120"s, .luks_mapper_name = "luks-6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .luks_uuid = "6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .subvolume = "/@"s}, + gucc::fs::Partition{.fstype = "btrfs"s, .mountpoint = "/home"s, .luks_mapper_name = "luks-6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .luks_uuid = "6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .device = "/dev/nvme0n1p1"s, .mount_opts = "defaults,noatime,compress=zstd,space_cache=v2,commit=120"s, .luks_mapper_name = "luks-6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .luks_uuid = "6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .subvolume = "/@home"s}, + gucc::fs::Partition{.fstype = "btrfs"s, .mountpoint = "/var/cache"s, .luks_mapper_name = "luks-6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .luks_uuid = "6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .device = "/dev/nvme0n1p1"s, .mount_opts = "defaults,noatime,compress=zstd,space_cache=v2,commit=120"s, .luks_mapper_name = "luks-6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .luks_uuid = "6bdb3301-8efb-4b84-b0b7-4caeef26fd6f"s, .subvolume = "/@cache"s}, + gucc::fs::Partition{.fstype = "fat32"s, .mountpoint = "/boot"s, .uuid_str = "8EFB-4B84"s, .device = "/dev/nvme0n1p2"s, .mount_opts = "defaults,noatime"s}, + }; + const auto& fstab_content = gucc::fs::generate_fstab_content(partitions); + assert(fstab_content == FSTAB_LUKS_BTRFS_TEST); + } }