aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/mount_table.tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/filesystem/mount_table.tests.cpp')
-rw-r--r--kernel/src/filesystem/mount_table.tests.cpp31
1 files changed, 24 insertions, 7 deletions
diff --git a/kernel/src/filesystem/mount_table.tests.cpp b/kernel/src/filesystem/mount_table.tests.cpp
index 747ffdf..efacdfe 100644
--- a/kernel/src/filesystem/mount_table.tests.cpp
+++ b/kernel/src/filesystem/mount_table.tests.cpp
@@ -54,11 +54,11 @@ SCENARIO("Adding, finding and removing mounts in the mount table", "[filesystem]
THEN("dentry flags are set correctly for mounted dentries")
{
- REQUIRE(root_dentry1->has_flag(kernel::filesystem::dentry::dentry_flags::dcache_mounted));
- REQUIRE(!root_dentry2->has_flag(kernel::filesystem::dentry::dentry_flags::dcache_mounted));
+ REQUIRE(root_dentry1->has_flag(kernel::filesystem::dentry::dentry_flags::mounted));
+ REQUIRE_FALSE(root_dentry2->has_flag(kernel::filesystem::dentry::dentry_flags::mounted));
}
- THEN("finding mounts by path returns the correct mount")
+ THEN("finding mounts by longest prefix returns the correct mount")
{
REQUIRE(table.find_longest_prefix_mount("/") == mount1);
REQUIRE(table.find_longest_prefix_mount("/file") == mount1);
@@ -67,10 +67,22 @@ SCENARIO("Adding, finding and removing mounts in the mount table", "[filesystem]
REQUIRE(table.find_longest_prefix_mount("/other") == mount1);
}
+ THEN("finding mounts by exact valid path returns the correct mount")
+ {
+ REQUIRE(table.find_exact_mount("/") == mount1);
+ REQUIRE(table.find_exact_mount("/mnt") == mount2);
+ }
+
+ THEN("finding mounts by exact invalid path returns null")
+ {
+ REQUIRE(table.find_exact_mount("/nonexistent") == nullptr);
+ REQUIRE(table.find_exact_mount("/mnt/file") == nullptr);
+ }
+
THEN("removing a mount that has no child mounts succeeds")
{
REQUIRE(table.remove_mount("/mnt") == kernel::filesystem::mount_table::operation_result::removed);
- REQUIRE(!root_dentry2->has_flag(kernel::filesystem::dentry::dentry_flags::dcache_mounted));
+ REQUIRE_FALSE(root_dentry2->has_flag(kernel::filesystem::dentry::dentry_flags::mounted));
REQUIRE(table.find_longest_prefix_mount("/mnt") == mount1);
}
@@ -97,7 +109,7 @@ SCENARIO("Adding, finding and removing mounts in the mount table", "[filesystem]
table.add_mount(mount1);
table.add_mount(mount2);
- THEN("finding mounts by path returns the correct mount based on longest prefix")
+ THEN("finding mounts by longest prefix returns the correct mount")
{
REQUIRE(table.find_longest_prefix_mount("/") == mount2);
REQUIRE(table.find_longest_prefix_mount("/file") == mount2);
@@ -106,10 +118,15 @@ SCENARIO("Adding, finding and removing mounts in the mount table", "[filesystem]
REQUIRE(table.find_longest_prefix_mount("/other") == mount2);
}
+ THEN("finding mounts by exact valid path returns the correct mount")
+ {
+ REQUIRE(table.find_exact_mount("/") == mount2);
+ }
+
THEN("removing the topmost mount with the same path succeeds")
{
REQUIRE(table.remove_mount("/") == kernel::filesystem::mount_table::operation_result::removed);
- REQUIRE(!root_dentry2->has_flag(kernel::filesystem::dentry::dentry_flags::dcache_mounted));
+ REQUIRE_FALSE(root_dentry2->has_flag(kernel::filesystem::dentry::dentry_flags::mounted));
REQUIRE(table.find_longest_prefix_mount("/") == mount1);
}
}
@@ -156,7 +173,7 @@ SCENARIO("Adding, finding and removing mounts in the mount table", "[filesystem]
THEN("removing a leaf mount succeeds")
{
REQUIRE(table.remove_mount("/mnt/submnt") == kernel::filesystem::mount_table::operation_result::removed);
- REQUIRE(!root_dentry3->has_flag(kernel::filesystem::dentry::dentry_flags::dcache_mounted));
+ REQUIRE_FALSE(root_dentry3->has_flag(kernel::filesystem::dentry::dentry_flags::mounted));
REQUIRE(table.find_longest_prefix_mount("/mnt/submnt") == mount2);
}
}