diff options
| author | bbuerge <b.buerge@pm.me> | 2026-10-29 15:17:34 +0000 |
|---|---|---|
| committer | bbuerge <b.buerge@pm.me> | 2026-10-29 15:17:34 +0000 |
| commit | e85b200f4006b046d65e8b7f56e7f9ef82feee37 (patch) | |
| tree | 7e39175006a796ac8d72e48a7e8b83658aa9d73b | |
| parent | f8043c79691e06b53ca0e0b0875b4d34d7dc540e (diff) | |
| download | kernel-e85b200f4006b046d65e8b7f56e7f9ef82feee37.tar.xz kernel-e85b200f4006b046d65e8b7f56e7f9ef82feee37.zip | |
kernel/filesystem: added fat12-16 probe integration tests
| -rw-r--r-- | arch/x86_64/support/grub.cfg.in | 2 | ||||
| -rw-r--r-- | arch/x86_64/support/modules/fat12.img | 3 | ||||
| -rw-r--r-- | arch/x86_64/support/modules/fat16.img | 3 | ||||
| -rw-r--r-- | kernel/kernel/filesystems/fat32/filesystem.tests.cpp | 40 | ||||
| l--------- | kernel/kernel/test_support/vfs/test_assets/fat12.img | 1 | ||||
| l--------- | kernel/kernel/test_support/vfs/test_assets/fat16.img | 1 |
6 files changed, 48 insertions, 2 deletions
diff --git a/arch/x86_64/support/grub.cfg.in b/arch/x86_64/support/grub.cfg.in index 135dc107..d470345d 100644 --- a/arch/x86_64/support/grub.cfg.in +++ b/arch/x86_64/support/grub.cfg.in @@ -6,6 +6,8 @@ menuentry "TeachOS" { module2 /modules/ext2_4KB_fs.img type=ramdisk module2 /modules/ext2_1KB_fs.img type=ramdisk module2 /modules/ext2_2KB_fs.img type=ramdisk + module2 /modules/fat12.img type=ramdisk + module2 /modules/fat16.img type=ramdisk module2 /modules/fat32.img type=ramdisk boot }
\ No newline at end of file diff --git a/arch/x86_64/support/modules/fat12.img b/arch/x86_64/support/modules/fat12.img new file mode 100644 index 00000000..0f1b9814 --- /dev/null +++ b/arch/x86_64/support/modules/fat12.img @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b50de11a2c3b681b57560fcbe9cb49da08672d150ac58152f7cb201bc45bc7c1 +size 1048576 diff --git a/arch/x86_64/support/modules/fat16.img b/arch/x86_64/support/modules/fat16.img new file mode 100644 index 00000000..7a4fee36 --- /dev/null +++ b/arch/x86_64/support/modules/fat16.img @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c47570127cc88ca429b762e17dfeb295bb48dd5c773f5b967ff7a3e60877ba0f +size 3145728 diff --git a/kernel/kernel/filesystems/fat32/filesystem.tests.cpp b/kernel/kernel/filesystems/fat32/filesystem.tests.cpp index b71a4150..ce267584 100644 --- a/kernel/kernel/filesystems/fat32/filesystem.tests.cpp +++ b/kernel/kernel/filesystems/fat32/filesystem.tests.cpp @@ -134,10 +134,10 @@ SCENARIO("Fat32 filesystem mount validates the boot sector", "[filesystem][fat32 SCENARIO_METHOD(kernel::tests::vfs::storage_boot_module_fixture, "Fat32 filesystem probe with real image", "[filesystem][fat32][filesystem][img]") { - auto const image_path = std::filesystem::path{KERNEL_TEST_ASSETS_DIR} / "fat32.img"; - GIVEN("a block device containing a fat32 image") { + auto const image_path = std::filesystem::path{KERNEL_TEST_ASSETS_DIR} / "fat32.img"; + REQUIRE(std::filesystem::exists(image_path)); REQUIRE_NOTHROW(setup_modules_from_img({"test_img_module"}, {image_path})); @@ -152,6 +152,42 @@ SCENARIO_METHOD(kernel::tests::vfs::storage_boot_module_fixture, "Fat32 filesyst REQUIRE(fs->probe(dev_inode)); } } + + GIVEN("a block device containing a fat12 image"){ + auto const image_path = std::filesystem::path{KERNEL_TEST_ASSETS_DIR} / "fat12.img"; + + REQUIRE(std::filesystem::exists(image_path)); + REQUIRE_NOTHROW(setup_modules_from_img({"test_img_module"}, {image_path})); + + auto boot_device = kernel::devices::storage::determine_boot_device(); + REQUIRE(boot_device); + + auto dev_inode = kstd::make_shared<kernel::vfs::device_inode>(boot_device); + auto fs = kstd::make_shared<kernel::filesystems::fat32::filesystem>(); + + THEN("probe accepts the boot sector") + { + REQUIRE(fs->probe(dev_inode).error() == kernel::filesystems::fat32::errc::invalid_boot_sector); + } + } + + GIVEN("a block device containing a fat16 image"){ + auto const image_path = std::filesystem::path{KERNEL_TEST_ASSETS_DIR} / "fat16.img"; + + REQUIRE(std::filesystem::exists(image_path)); + REQUIRE_NOTHROW(setup_modules_from_img({"test_img_module"}, {image_path})); + + auto boot_device = kernel::devices::storage::determine_boot_device(); + REQUIRE(boot_device); + + auto dev_inode = kstd::make_shared<kernel::vfs::device_inode>(boot_device); + auto fs = kstd::make_shared<kernel::filesystems::fat32::filesystem>(); + + THEN("probe accepts the boot sector") + { + REQUIRE(fs->probe(dev_inode).error() == kernel::filesystems::fat32::errc::invalid_boot_sector); + } + } } SCENARIO("Fat32 filesystem rejects invalid boot signature", "[filesystem][fat32][filesystem]") diff --git a/kernel/kernel/test_support/vfs/test_assets/fat12.img b/kernel/kernel/test_support/vfs/test_assets/fat12.img new file mode 120000 index 00000000..12e3798e --- /dev/null +++ b/kernel/kernel/test_support/vfs/test_assets/fat12.img @@ -0,0 +1 @@ +../../../../../arch/x86_64/support/modules/fat12.img
\ No newline at end of file diff --git a/kernel/kernel/test_support/vfs/test_assets/fat16.img b/kernel/kernel/test_support/vfs/test_assets/fat16.img new file mode 120000 index 00000000..e2c34da0 --- /dev/null +++ b/kernel/kernel/test_support/vfs/test_assets/fat16.img @@ -0,0 +1 @@ +../../../../../arch/x86_64/support/modules/fat16.img
\ No newline at end of file |
