aboutsummaryrefslogtreecommitdiff
path: root/kernel/kernel/filesystem/vfs.tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kernel/filesystem/vfs.tests.cpp')
-rw-r--r--kernel/kernel/filesystem/vfs.tests.cpp32
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{});
+ }
+ }
+}