From 3012fa5dfe5dfed5e83baf9b40934ed8e8317627 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 3 Jul 2026 09:32:30 +0200 Subject: kernel: rearrange sources according to p1204 --- kernel/src/filesystem/mount_table.tests.cpp | 184 ---------------------------- 1 file changed, 184 deletions(-) delete mode 100644 kernel/src/filesystem/mount_table.tests.cpp (limited to 'kernel/src/filesystem/mount_table.tests.cpp') diff --git a/kernel/src/filesystem/mount_table.tests.cpp b/kernel/src/filesystem/mount_table.tests.cpp deleted file mode 100644 index 19b47b23..00000000 --- a/kernel/src/filesystem/mount_table.tests.cpp +++ /dev/null @@ -1,184 +0,0 @@ -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include - -SCENARIO("Mount table construction", "[filesystem][mount_table]") -{ - GIVEN("an empty mount table") - { - kernel::filesystem::mount_table table; - - THEN("removing any mount returns mount_not_found") - { - REQUIRE(table.remove_mount("/") == kernel::filesystem::mount_table::operation_result::mount_not_found); - REQUIRE(table.remove_mount("/any/path") == kernel::filesystem::mount_table::operation_result::mount_not_found); - } - } -} - -SCENARIO("Adding, finding and removing mounts in the mount table", "[filesystem][mount_table]") -{ - GIVEN("a mount table and some mounts") - { - kernel::filesystem::mount_table table; - - auto fs1 = kstd::make_shared(); - auto root_dentry1 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount_dentry1 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount1 = kstd::make_shared(mount_dentry1, root_dentry1, fs1, nullptr, nullptr); - - auto fs2 = kstd::make_shared(); - auto root_dentry2 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount_dentry2 = kstd::make_shared( - nullptr, kstd::make_shared(), "/mnt"); - auto mount2 = kstd::make_shared(mount_dentry2, root_dentry2, fs2, nullptr, nullptr); - - table.add_mount(mount1); - table.add_mount(mount2); - - THEN("dentry flags are set correctly for mounted dentries") - { - REQUIRE(mount_dentry1->has_flag(kernel::filesystem::dentry::dentry_flags::is_mount_point)); - REQUIRE(mount_dentry2->has_flag(kernel::filesystem::dentry::dentry_flags::is_mount_point)); - } - - THEN("finding mounts by exact valid path returns the correct mount") - { - REQUIRE(table.find_mount("/") == mount1); - REQUIRE(table.find_mount("/mnt") == mount2); - } - - THEN("finding mounts by exact invalid path returns null") - { - REQUIRE(table.find_mount("/nonexistent") == nullptr); - REQUIRE(table.find_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_FALSE(root_dentry2->has_flag(kernel::filesystem::dentry::dentry_flags::is_mount_point)); - } - - THEN("removing a mount that does not exist returns mount_not_found") - { - REQUIRE(table.remove_mount("/nonexistent") == kernel::filesystem::mount_table::operation_result::mount_not_found); - } - } - - GIVEN("multiple mounts with the same path") - { - kernel::filesystem::mount_table table; - - auto fs1 = kstd::make_shared(); - auto root_dentry1 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount_dentry1 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount1 = kstd::make_shared(mount_dentry1, root_dentry1, fs1, nullptr, nullptr); - - auto fs2 = kstd::make_shared(); - auto root_dentry2 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount_dentry2 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount2 = kstd::make_shared(mount_dentry2, root_dentry2, fs2, nullptr, nullptr); - - table.add_mount(mount1); - table.add_mount(mount2); - - THEN("finding mounts by exact valid path returns the correct mount") - { - REQUIRE(table.find_mount("/") == mount2); - } - - THEN("removing the topmost mount with the same path succeeds") - { - REQUIRE(table.remove_mount("/") == kernel::filesystem::mount_table::operation_result::removed); - REQUIRE_FALSE(root_dentry2->has_flag(kernel::filesystem::dentry::dentry_flags::is_mount_point)); - } - } - - GIVEN("a mount with child mounts") - { - kernel::filesystem::mount_table table; - - auto fs1 = kstd::make_shared(); - auto root_dentry1 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount_dentry1 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount1 = kstd::make_shared(mount_dentry1, root_dentry1, fs1, nullptr, nullptr); - - auto fs2 = kstd::make_shared(); - auto root_dentry2 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount_dentry2 = kstd::make_shared( - mount_dentry1, kstd::make_shared(), "mnt"); - auto mount2 = kstd::make_shared(mount_dentry2, root_dentry2, fs2, mount1, nullptr); - - auto fs3 = kstd::make_shared(); - auto root_dentry3 = kstd::make_shared( - nullptr, kstd::make_shared(), "/"); - auto mount_dentry3 = kstd::make_shared( - mount_dentry2, kstd::make_shared(), "submnt"); - auto mount3 = kstd::make_shared(mount_dentry3, root_dentry3, fs3, mount2, nullptr); - - table.add_mount(mount1); - table.add_mount(mount2); - table.add_mount(mount3); - - THEN("removing a mount with child mounts returns has_child_mounts") - { - REQUIRE(table.remove_mount("/") == kernel::filesystem::mount_table::operation_result::has_child_mounts); - REQUIRE(table.remove_mount("/mnt") == kernel::filesystem::mount_table::operation_result::has_child_mounts); - } - - THEN("removing a leaf mount succeeds") - { - REQUIRE(table.remove_mount("/mnt/submnt") == kernel::filesystem::mount_table::operation_result::removed); - REQUIRE_FALSE(root_dentry3->has_flag(kernel::filesystem::dentry::dentry_flags::is_mount_point)); - } - } -} - -SCENARIO("Mount reference counting", "[filesystem][mount_table]") -{ - kernel::filesystem::mount_table table; - - GIVEN("a filesystem and a root dentry") - { - auto fs = kstd::make_shared(); - auto root_inode = kstd::make_shared(); - auto root_dentry = kstd::make_shared(nullptr, root_inode, "/"); - - auto source_mount = kstd::make_shared(root_dentry, root_dentry, fs, nullptr, nullptr); - auto mount = kstd::make_shared(root_dentry, root_dentry, fs, nullptr, source_mount); - - THEN("reference count of source mount is incremented when a mount is added to the mount table and decremented when " - "the mount is removed") - { - REQUIRE(source_mount->ref_count() == 0); - - table.add_mount(mount); - REQUIRE(source_mount->ref_count() == 1); - - REQUIRE(table.remove_mount("/") == kernel::filesystem::mount_table::operation_result::removed); - REQUIRE(source_mount->ref_count() == 0); - } - } -} -- cgit v1.2.3