diff options
author | Frederic Riss <friss@apple.com> | 2015-08-06 21:04:55 +0000 |
---|---|---|
committer | Frederic Riss <friss@apple.com> | 2015-08-06 21:04:55 +0000 |
commit | 6b9396c07054f0fbeec730d662ca76d111a2a46c (patch) | |
tree | 2551dfa167c60cb56d4746d6348807e97407caed /llvm/unittests/Support | |
parent | fc573f33f639979ea4483954584d1ce18fb684bd (diff) | |
download | bcm5719-llvm-6b9396c07054f0fbeec730d662ca76d111a2a46c.tar.gz bcm5719-llvm-6b9396c07054f0fbeec730d662ca76d111a2a46c.zip |
Thread premissions through sys::fs::create_director{y|ies}
llvm-svn: 244268
Diffstat (limited to 'llvm/unittests/Support')
-rw-r--r-- | llvm/unittests/Support/Path.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/unittests/Support/Path.cpp b/llvm/unittests/Support/Path.cpp index 210b3a04cb2..11d53c83419 100644 --- a/llvm/unittests/Support/Path.cpp +++ b/llvm/unittests/Support/Path.cpp @@ -20,6 +20,10 @@ #include <winerror.h> #endif +#ifdef LLVM_ON_UNIX +#include <sys/stat.h> +#endif + using namespace llvm; using namespace llvm::sys; @@ -458,6 +462,26 @@ TEST_F(FileSystemTest, CreateDir) { errc::file_exists); ASSERT_NO_ERROR(fs::remove(Twine(TestDirectory) + "foo")); +#ifdef LLVM_ON_UNIX + // Set a 0000 umask so that we can test our directory permissions. + mode_t OldUmask = ::umask(0000); + + fs::file_status Status; + ASSERT_NO_ERROR( + fs::create_directory(Twine(TestDirectory) + "baz500", false, + fs::perms::owner_read | fs::perms::owner_exe)); + ASSERT_NO_ERROR(fs::status(Twine(TestDirectory) + "baz500", Status)); + ASSERT_EQ(Status.permissions() & fs::perms::all_all, + fs::perms::owner_read | fs::perms::owner_exe); + ASSERT_NO_ERROR(fs::create_directory(Twine(TestDirectory) + "baz777", false, + fs::perms::all_all)); + ASSERT_NO_ERROR(fs::status(Twine(TestDirectory) + "baz777", Status)); + ASSERT_EQ(Status.permissions() & fs::perms::all_all, fs::perms::all_all); + + // Restore umask to be safe. + ::umask(OldUmask); +#endif + #ifdef LLVM_ON_WIN32 // Prove that create_directories() can handle a pathname > 248 characters, // which is the documented limit for CreateDirectory(). |