aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-06-09 23:33:42 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-07-14 22:23:44 +0200
commitc992070065e1811905a351d319decd92dc0db37e (patch)
tree9afc1b52f91b40b47c2601093db73ebb44ad4070 /kernel
parent760d5f5e7147e90198d144dd366aee7ace5de77b (diff)
downloadkernel-c992070065e1811905a351d319decd92dc0db37e.tar.xz
kernel-c992070065e1811905a351d319decd92dc0db37e.zip
add VFS tests
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel/filesystem/vfs.tests.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/kernel/kernel/filesystem/vfs.tests.cpp b/kernel/kernel/filesystem/vfs.tests.cpp
index c99cea90..c733d071 100644
--- a/kernel/kernel/filesystem/vfs.tests.cpp
+++ b/kernel/kernel/filesystem/vfs.tests.cpp
@@ -331,6 +331,53 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "VFS
}
}
+ GIVEN("A real image file within which new files and directories can be created")
+ {
+ REQUIRE(std::filesystem::exists(image_path_1));
+ REQUIRE_NOTHROW(setup_modules_from_img_and_init_vfs({"test_img_module_1"}, {image_path_1}));
+
+ THEN("a new file can be created and read again")
+ {
+ auto & vfs = kernel::filesystem::vfs::get();
+ REQUIRE(vfs.create("/information/new_file.txt") == kernel::filesystem::vfs::operation_result::success);
+
+ auto new_file = vfs.open("/information/new_file.txt");
+ REQUIRE(new_file != nullptr);
+ }
+
+ THEN("a new directory can be created and read again")
+ {
+ auto & vfs = kernel::filesystem::vfs::get();
+ REQUIRE(vfs.mkdir("/information/new_directory") == kernel::filesystem::vfs::operation_result::success);
+ }
+
+ THEN("a new file cannot be created if it already exists")
+ {
+ auto & vfs = kernel::filesystem::vfs::get();
+ REQUIRE(vfs.create("/information/info_1.txt") == kernel::filesystem::vfs::operation_result::inode_already_exists);
+ }
+
+ THEN("a new directory cannot be created if it already exists")
+ {
+ auto & vfs = kernel::filesystem::vfs::get();
+ REQUIRE(vfs.mkdir("/information") == kernel::filesystem::vfs::operation_result::inode_already_exists);
+ }
+
+ THEN("a new file cannot be created if path does not exist or is invalid")
+ {
+ auto & vfs = kernel::filesystem::vfs::get();
+ REQUIRE(vfs.create("") == kernel::filesystem::vfs::operation_result::invalid_path);
+ REQUIRE(vfs.create("invalid_path") == kernel::filesystem::vfs::operation_result::non_existent_path);
+ }
+
+ THEN("a new directory cannot be created if path does not exist or is invalid")
+ {
+ auto & vfs = kernel::filesystem::vfs::get();
+ REQUIRE(vfs.mkdir("") == kernel::filesystem::vfs::operation_result::invalid_path);
+ REQUIRE(vfs.mkdir("invalid_path") == kernel::filesystem::vfs::operation_result::non_existent_path);
+ }
+ }
+
GIVEN("A real image file containing as filesystem formatted files")
{
REQUIRE(std::filesystem::exists(image_path_1));