diff options
Diffstat (limited to 'kernel/kernel/filesystem/vfs.tests.cpp')
| -rw-r--r-- | kernel/kernel/filesystem/vfs.tests.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/kernel/kernel/filesystem/vfs.tests.cpp b/kernel/kernel/filesystem/vfs.tests.cpp index 5e73db4a..6b8411b0 100644 --- a/kernel/kernel/filesystem/vfs.tests.cpp +++ b/kernel/kernel/filesystem/vfs.tests.cpp @@ -2,8 +2,11 @@ #include <kernel/filesystem/error.hpp> #include <kernel/filesystem/open_file_descriptor.hpp> +#include <kernel/filesystem/reserved_numbers.hpp> #include <kernel/test_support/filesystem/storage_boot_module_vfs_fixture.hpp> +#include <kapi/filesystem.hpp> + #include <kstd/memory.hpp> #include <kstd/system_error.hpp> #include <kstd/vector.hpp> @@ -604,3 +607,32 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "VFS } } } + +SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "VFS status()", "[filesystem][vfs][img]") +{ + auto const image_path = std::filesystem::path{KERNEL_TEST_ASSETS_DIR} / "ext2_1KB_fs.img"; + + GIVEN("a real image file") + { + REQUIRE(std::filesystem::exists(image_path)); + REQUIRE_NOTHROW(setup_modules_from_img_and_init_vfs({"test_img_module"}, {image_path})); + + auto & vfs = kernel::filesystem::vfs::get(); + + THEN("status(/dev/ram0) reports it as the correct block device") + { + auto result = vfs.status("/dev/ram0"); + REQUIRE(result); + REQUIRE(kapi::filesystem::is_block_device(result->mode)); + REQUIRE(result->raw_device.major == kernel::filesystem::block_major_numbers::ram_disk); + } + + THEN("status(/information/info_1.txt) reports it as a regular file") + { + auto result = vfs.status("/information/info_1.txt"); + REQUIRE(result); + REQUIRE(kapi::filesystem::is_regular(result->mode)); + REQUIRE(result->raw_device == kapi::filesystem::device_number{}); + } + } +} |
