From d7c87d982d4ec4ba201bcee14324ae5e0e90581f Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 25 Jun 2019 17:06:24 +0200 Subject: [PATCH] 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(). --- Lib/test/test_os.py | 19 ++++++++----------- .../2019-06-25-16-02-43.bpo-37400.cx_EWv.rst | 2 ++ 2 files changed, 10 insertions(+), 11 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2019-06-25-16-02-43.bpo-37400.cx_EWv.rst diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index b540fcbd4d7..527f8146328 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -42,15 +42,6 @@ try: import _winapi 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()] @@ -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 00000000000..737c7818900 --- /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().