From aa3ce9383da78a83b64160d5c64ecd077d0b36ef Mon Sep 17 00:00:00 2001 From: dzwdz Date: Fri, 27 Aug 2021 19:23:10 +0200 Subject: basic vfs_mount_resolve tests --- src/kernel/tests/vfs.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/kernel/tests/vfs.c b/src/kernel/tests/vfs.c index bc95541..cfbf86b 100644 --- a/src/kernel/tests/vfs.c +++ b/src/kernel/tests/vfs.c @@ -1,5 +1,7 @@ +#include #include #include +#include #include TEST(path_simplify) { @@ -57,6 +59,41 @@ TEST(path_simplify) { #undef TEST_WRAPPER } +TEST(vfs_mount_resolve) { + struct vfs_mount *mount = NULL; + +#define ADD_MOUNT(path) do { \ + struct vfs_mount *mount2 = kmalloc(sizeof(struct vfs_mount)); \ + mount2->prefix = path; \ + mount2->prefix_len = sizeof(path) - 1; \ + mount2->prev = mount; \ + mount = mount2; \ + } while (0) + + ADD_MOUNT("/"); + ADD_MOUNT("/dir/shadowed"); + ADD_MOUNT("/dir"); + +#undef ADD_MOUNT + +#define TEST_WRAPPER(path, expected) do { \ + struct vfs_mount *mount2 = vfs_mount_resolve(mount, path, sizeof(path) - 1); \ + TEST_COND((mount2->prefix_len == sizeof(expected) - 1) \ + && (0 == memcmp(mount2->prefix, expected, mount2->prefix_len))); \ + } while (0) + + TEST_WRAPPER("/", "/"); + TEST_WRAPPER("/test", "/"); + TEST_WRAPPER("/dir", "/dir"); + TEST_WRAPPER("/dirry", "/"); + TEST_WRAPPER("/dir/", "/dir"); + TEST_WRAPPER("/dir/shadowed", "/dir"); + TEST_WRAPPER("/dir/shadowed/", "/dir"); + +#undef TEST_WRAPPER +} + void tests_vfs(void) { TEST_RUN(path_simplify); + TEST_RUN(vfs_mount_resolve); } -- cgit v1.2.3