diff options
Diffstat (limited to 'llvm/unittests/Support/Path.cpp')
-rw-r--r-- | llvm/unittests/Support/Path.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/unittests/Support/Path.cpp b/llvm/unittests/Support/Path.cpp index 6f00227..08460a9 100644 --- a/llvm/unittests/Support/Path.cpp +++ b/llvm/unittests/Support/Path.cpp @@ -816,6 +816,28 @@ TEST_F(FileSystemTest, RealPathNoReadPerm) { ASSERT_NO_ERROR(fs::remove_directories(Twine(TestDirectory) + "/noreadperm")); } +TEST_F(FileSystemTest, RemoveDirectoriesNoExePerm) { + SmallString<64> Expanded; + + ASSERT_NO_ERROR( + fs::create_directories(Twine(TestDirectory) + "/noexeperm/foo")); + ASSERT_TRUE(fs::exists(Twine(TestDirectory) + "/noexeperm/foo")); + + fs::setPermissions(Twine(TestDirectory) + "/noexeperm", + fs::all_read | fs::all_write); + + ASSERT_NO_ERROR(fs::remove_directories(Twine(TestDirectory) + "/noexeperm", + /*IgnoreErrors=*/true)); + ASSERT_TRUE(fs::exists(Twine(TestDirectory) + "/noexeperm")); + ASSERT_EQ(fs::remove_directories(Twine(TestDirectory) + "/noexeperm", + /*IgnoreErrors=*/false), + errc::permission_denied); + + fs::setPermissions(Twine(TestDirectory) + "/noexeperm", fs::all_perms); + + ASSERT_NO_ERROR(fs::remove_directories(Twine(TestDirectory) + "/noexeperm", + /*IgnoreErrors=*/false)); +} #endif |