test-fs-util: some basic tests for XAT_FDROOT
This commit is contained in:
+64
-5
@@ -819,11 +819,6 @@ TEST(linkat_replace) {
|
||||
assert_se(inode_same_at(fd1, NULL, fd2_check, NULL, AT_EMPTY_PATH) > 0);
|
||||
}
|
||||
|
||||
static int intro(void) {
|
||||
arg_test_dir = saved_argv[1];
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
TEST(readlinkat_malloc) {
|
||||
_cleanup_(rm_rf_physical_and_freep) char *t = NULL;
|
||||
_cleanup_close_ int tfd = -EBADF, fd = -EBADF;
|
||||
@@ -859,4 +854,68 @@ TEST(readlinkat_malloc) {
|
||||
q = mfree(q);
|
||||
}
|
||||
|
||||
TEST(xat_fdroot) {
|
||||
_cleanup_free_ char *p = NULL;
|
||||
ASSERT_OK(fd_get_path(XAT_FDROOT, &p));
|
||||
ASSERT_STREQ(p, "/");
|
||||
|
||||
_cleanup_close_ int fd = -EBADF;
|
||||
fd = fd_reopen(XAT_FDROOT, O_CLOEXEC);
|
||||
ASSERT_OK(fd);
|
||||
|
||||
ASSERT_OK_POSITIVE(path_is_root_at(XAT_FDROOT, NULL));
|
||||
ASSERT_OK_POSITIVE(path_is_root_at(XAT_FDROOT, "."));
|
||||
ASSERT_OK_POSITIVE(path_is_root_at(XAT_FDROOT, "/"));
|
||||
|
||||
ASSERT_OK_POSITIVE(path_is_root_at(fd, NULL));
|
||||
ASSERT_OK_POSITIVE(path_is_root_at(fd, "."));
|
||||
ASSERT_OK_POSITIVE(path_is_root_at(fd, "/"));
|
||||
|
||||
ASSERT_OK_POSITIVE(fds_are_same_mount(fd, fd));
|
||||
ASSERT_OK_POSITIVE(fds_are_same_mount(XAT_FDROOT, XAT_FDROOT));
|
||||
ASSERT_OK_POSITIVE(fds_are_same_mount(fd, XAT_FDROOT));
|
||||
ASSERT_OK_POSITIVE(fds_are_same_mount(XAT_FDROOT, fd));
|
||||
|
||||
ASSERT_OK_POSITIVE(dir_fd_is_root(XAT_FDROOT));
|
||||
ASSERT_OK_POSITIVE(dir_fd_is_root(fd));
|
||||
|
||||
ASSERT_OK_POSITIVE(dir_fd_is_root_or_cwd(XAT_FDROOT));
|
||||
ASSERT_OK_POSITIVE(dir_fd_is_root_or_cwd(AT_FDCWD));
|
||||
ASSERT_OK_POSITIVE(dir_fd_is_root_or_cwd(fd));
|
||||
|
||||
ASSERT_OK(access_fd(XAT_FDROOT, F_OK));
|
||||
ASSERT_OK(access_fd(fd, F_OK));
|
||||
|
||||
fd = safe_close(fd);
|
||||
fd = xopenat(XAT_FDROOT, ".", O_RDONLY);
|
||||
ASSERT_OK(fd);
|
||||
|
||||
fd = safe_close(fd);
|
||||
fd = xopenat(XAT_FDROOT, "/", O_RDONLY);
|
||||
ASSERT_OK(fd);
|
||||
|
||||
ASSERT_OK(fd_verify_directory(fd));
|
||||
ASSERT_OK(fd_verify_directory(XAT_FDROOT));
|
||||
|
||||
ASSERT_OK(fd_verify_linked(fd));
|
||||
ASSERT_OK(fd_verify_linked(XAT_FDROOT));
|
||||
|
||||
int a = fd_is_read_only_fs(fd);
|
||||
ASSERT_OK(a);
|
||||
int b = fd_is_read_only_fs(XAT_FDROOT);
|
||||
ASSERT_OK(b);
|
||||
ASSERT_EQ(a, b);
|
||||
|
||||
a = fd_is_temporary_fs(fd);
|
||||
ASSERT_OK(a);
|
||||
b = fd_is_temporary_fs(XAT_FDROOT);
|
||||
ASSERT_OK(b);
|
||||
ASSERT_EQ(a, b);
|
||||
}
|
||||
|
||||
static int intro(void) {
|
||||
arg_test_dir = saved_argv[1];
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro);
|
||||
|
||||
Reference in New Issue
Block a user