aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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));