diff options
| author | Lukas Oesch <lukasoesch20@gmail.com> | 2026-06-09 23:33:42 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-14 22:23:44 +0200 |
| commit | c992070065e1811905a351d319decd92dc0db37e (patch) | |
| tree | 9afc1b52f91b40b47c2601093db73ebb44ad4070 | |
| parent | 760d5f5e7147e90198d144dd366aee7ace5de77b (diff) | |
| download | kernel-c992070065e1811905a351d319decd92dc0db37e.tar.xz kernel-c992070065e1811905a351d319decd92dc0db37e.zip | |
add VFS tests
| -rw-r--r-- | kernel/kernel/filesystem/vfs.tests.cpp | 47 |
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)); |
