From 2b8b0a569500ab4f25932a86b6d74948824dfa1e Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Mon, 24 Apr 2017 18:54:48 +0000 Subject: [PATCH] Don't test setting sticky bits on files for modern BSDs Summary: In rL297945, jhenderson added methods for setting permissions to sys::fs, but some of the unittests that attempt to set sticky bits (01000) on files fail on modern BSDs, such as FreeBSD, NetBSD and OpenBSD. This is because those systems do not allow regular users to set sticky bits on files, only on directories. Fix it by disabling these particular tests on modern BSDs. Reviewers: emaste, brad, jhenderson Reviewed By: jhenderson Subscribers: joerg, krytarowski, llvm-commits Differential Revision: https://reviews.llvm.org/D32120 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301220 91177308-0d34-0410-b5e6-96231b3b80d8 --- unittests/Support/Path.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/unittests/Support/Path.cpp b/unittests/Support/Path.cpp index 86ad57f3f3f..426aff47c74 100644 --- a/unittests/Support/Path.cpp +++ b/unittests/Support/Path.cpp @@ -1515,6 +1515,8 @@ TEST_F(FileSystemTest, permissions) { EXPECT_EQ(fs::setPermissions(TempPath, fs::set_gid_on_exe), NoError); EXPECT_TRUE(CheckPermissions(fs::set_gid_on_exe)); + // Modern BSDs require root to set the sticky bit on files. +#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) EXPECT_EQ(fs::setPermissions(TempPath, fs::sticky_bit), NoError); EXPECT_TRUE(CheckPermissions(fs::sticky_bit)); @@ -1534,6 +1536,11 @@ TEST_F(FileSystemTest, permissions) { EXPECT_EQ(fs::setPermissions(TempPath, fs::all_perms), NoError); EXPECT_TRUE(CheckPermissions(fs::all_perms)); +#endif // !FreeBSD && !NetBSD && !OpenBSD + + EXPECT_EQ(fs::setPermissions(TempPath, fs::all_perms & ~fs::sticky_bit), + NoError); + EXPECT_TRUE(CheckPermissions(fs::all_perms & ~fs::sticky_bit)); #endif } -- 2.50.1