From eec286845e0faf3153d1aca8d80b409e0a2638cd Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sun, 10 Nov 2024 10:25:53 -0600 Subject: [PATCH] fuse unit tests and fixes --- .../src/fuse_drive_access_test.cpp | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/repertory/repertory_test/src/fuse_drive_access_test.cpp b/repertory/repertory_test/src/fuse_drive_access_test.cpp index 16fa001b..e0b0178a 100644 --- a/repertory/repertory_test/src/fuse_drive_access_test.cpp +++ b/repertory/repertory_test/src/fuse_drive_access_test.cpp @@ -85,6 +85,27 @@ TYPED_TEST(fuse_test, access_can_check_directory_does_not_have_write_access) { this->rmdir_and_test(dir_path); } +TYPED_TEST(fuse_test, access_can_check_directory_execute_access) { + std::string dir_name{"access_test"}; + auto dir_path = this->create_directory_and_test(dir_name); + + EXPECT_EQ(0, access(dir_path.c_str(), X_OK)); + + this->rmdir_and_test(dir_path); +} + +TYPED_TEST(fuse_test, access_can_check_directory_does_not_have_execute_access) { + std::string dir_name{"access_test"}; + auto dir_path = this->create_directory_and_test(dir_name); + + EXPECT_EQ(0, chmod(dir_path.c_str(), 0000)); + + EXPECT_EQ(-1, access(dir_path.c_str(), X_OK)); + EXPECT_EQ(EACCES, utils::get_last_error_code()); + + this->rmdir_and_test(dir_path); +} + TYPED_TEST(fuse_test, access_can_check_if_file_exists) { std::string file_name{"access_test"}; auto file_path = this->create_file_and_test(file_name); @@ -135,6 +156,27 @@ TYPED_TEST(fuse_test, access_can_check_file_does_not_have_write_access) { this->unlink_file_and_test(file_path); } + +TYPED_TEST(fuse_test, access_can_check_file_execute_access) { + std::string file_name{"access_test"}; + auto file_path = this->create_file_and_test(file_name); + + EXPECT_EQ(0, access(file_path.c_str(), X_OK)); + + this->unlink_file_and_test(file_path); +} + +TYPED_TEST(fuse_test, access_can_check_file_does_not_have_execute_access) { + std::string file_name{"access_test"}; + auto file_path = this->create_file_and_test(file_name); + + EXPECT_EQ(0, chmod(file_path.c_str(), 0000)); + + EXPECT_EQ(-1, access(file_path.c_str(), X_OK)); + EXPECT_EQ(EACCES, utils::get_last_error_code()); + + this->unlink_file_and_test(file_path); +} } // namespace repertory #endif // !defined(_WIN32)