From: Dimitry Andric Date: Mon, 24 Apr 2017 18:54:48 +0000 (+0000) Subject: Don't test setting sticky bits on files for modern BSDs X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2b8b0a569500ab4f25932a86b6d74948824dfa1e;p=llvm 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 --- 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 }