summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-06-25 17:06:24 +0200
committerGitHub <noreply@github.com>2019-06-25 17:06:24 +0200
commitd7c87d982d4ec4ba201bcee14324ae5e0e90581f (patch)
tree5be3f4190e32dc2956e6f40ba8d9e64bff1b5e5a
parent3939c321c90283b49eddde762656e4b1940e7150 (diff)
downloadcpython-git-d7c87d982d4ec4ba201bcee14324ae5e0e90581f.tar.gz
bpo-37400: Fix test_os.test_chown() (GH-14374)
Use os.getgroups() rather than grp.getgrall() to get groups. Rename also the test to test_chown_gid().
-rw-r--r--Lib/test/test_os.py19
-rw-r--r--Misc/NEWS.d/next/Tests/2019-06-25-16-02-43.bpo-37400.cx_EWv.rst2
2 files changed, 10 insertions, 11 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index b540fcbd4d..527f814632 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -43,15 +43,6 @@ try:
except ImportError:
_winapi = None
try:
- import grp
- groups = [g.gr_gid for g in grp.getgrall() if getpass.getuser() in g.gr_mem]
- if hasattr(os, 'getgid'):
- process_gid = os.getgid()
- if process_gid not in groups:
- groups.append(process_gid)
-except ImportError:
- groups = []
-try:
import pwd
all_users = [u.pw_uid for u in pwd.getpwall()]
except (ImportError, AttributeError):
@@ -1320,13 +1311,19 @@ class ChownFileTests(unittest.TestCase):
self.assertIsNone(os.chown(support.TESTFN, uid, gid))
self.assertIsNone(os.chown(support.TESTFN, -1, -1))
- @unittest.skipUnless(len(groups) > 1, "test needs more than one group")
- def test_chown(self):
+ @unittest.skipUnless(hasattr(os, 'getgroups'), 'need os.getgroups')
+ def test_chown_gid(self):
+ groups = os.getgroups()
+ if len(groups) < 2:
+ self.skipTest("test needs at least 2 groups")
+
gid_1, gid_2 = groups[:2]
uid = os.stat(support.TESTFN).st_uid
+
os.chown(support.TESTFN, uid, gid_1)
gid = os.stat(support.TESTFN).st_gid
self.assertEqual(gid, gid_1)
+
os.chown(support.TESTFN, uid, gid_2)
gid = os.stat(support.TESTFN).st_gid
self.assertEqual(gid, gid_2)
diff --git a/Misc/NEWS.d/next/Tests/2019-06-25-16-02-43.bpo-37400.cx_EWv.rst b/Misc/NEWS.d/next/Tests/2019-06-25-16-02-43.bpo-37400.cx_EWv.rst
new file mode 100644
index 0000000000..737c781890
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2019-06-25-16-02-43.bpo-37400.cx_EWv.rst
@@ -0,0 +1,2 @@
+Fix test_os.test_chown(): use os.getgroups() rather than grp.getgrall()
+to get groups. Rename also the test to test_chown_gid().