Respect the processes umask in the create_directory test

llvm-svn: 273048
This commit is contained in:
Eric Fiselier 2016-06-17 20:54:25 +00:00
parent 1afc1de406
commit 34ecebcb23
1 changed files with 11 additions and 9 deletions

View File

@ -26,9 +26,18 @@
#include "rapid-cxx-test.hpp"
#include "filesystem_test_helper.hpp"
#include <sys/types.h>
#include <sys/stat.h>
using namespace std::experimental::filesystem;
namespace fs = std::experimental::filesystem;
fs::perms read_umask() {
mode_t old_mask = umask(0);
umask(old_mask); // reset the mask to the old value.
return static_cast<fs::perms>(old_mask);
}
TEST_SUITE(filesystem_create_directory_test_suite)
TEST_CASE(test_signatures)
@ -68,15 +77,8 @@ TEST_CASE(create_directory_one_level)
TEST_CHECK(is_directory(dir));
auto st = status(dir);
perms owner_perms = perms::owner_all;
perms gperms = perms::group_all;
perms other_perms = perms::others_read | perms::others_exec;
#if defined(__APPLE__) || defined(__FreeBSD__)
gperms = perms::group_read | perms::group_exec;
#endif
TEST_CHECK((st.permissions() & perms::owner_all) == owner_perms);
TEST_CHECK((st.permissions() & perms::group_all) == gperms);
TEST_CHECK((st.permissions() & perms::others_all) == other_perms);
const perms expect_perms = perms::all & ~(read_umask());
TEST_CHECK((st.permissions() & perms::all) == expect_perms);
}
TEST_CASE(create_directory_multi_level)