bpo-36046: Fix buildbot failures (GH-16091)

Varying user/group/permission check needs on platforms.
This commit is contained in:
Gregory P. Smith 2019-09-13 14:43:35 +01:00 committed by T. Wouters
parent 0519d497b0
commit 693aa80a43
1 changed files with 17 additions and 3 deletions

View File

@ -1588,6 +1588,18 @@ class RunFuncTestCase(BaseTestCase):
f"{stacks}```") f"{stacks}```")
def _get_test_grp_name():
for name_group in ('staff', 'nogroup', 'grp'):
if grp:
try:
grp.getgrnam(name_group)
except KeyError:
continue
return name_group
else:
raise unittest.SkipTest('No identified group name to use for this test on this platform.')
@unittest.skipIf(mswindows, "POSIX specific tests") @unittest.skipIf(mswindows, "POSIX specific tests")
class POSIXProcessTestCase(BaseTestCase): class POSIXProcessTestCase(BaseTestCase):
@ -1762,8 +1774,10 @@ class POSIXProcessTestCase(BaseTestCase):
[sys.executable, "-c", [sys.executable, "-c",
"import os; print(os.getuid())"], "import os; print(os.getuid())"],
user=user) user=user)
except PermissionError: # errno.EACCES
pass
except OSError as e: except OSError as e:
if e.errno != errno.EPERM: if e.errno not in (errno.EACCES, errno.EPERM):
raise raise
else: else:
if isinstance(user, str): if isinstance(user, str):
@ -1789,7 +1803,7 @@ class POSIXProcessTestCase(BaseTestCase):
def test_group(self): def test_group(self):
gid = os.getegid() gid = os.getegid()
group_list = [65534 if gid != 65534 else 65533] group_list = [65534 if gid != 65534 else 65533]
name_group = "nogroup" if sys.platform != 'darwin' else "staff" name_group = _get_test_grp_name()
if grp is not None: if grp is not None:
group_list.append(name_group) group_list.append(name_group)
@ -1830,7 +1844,7 @@ class POSIXProcessTestCase(BaseTestCase):
def test_extra_groups(self): def test_extra_groups(self):
gid = os.getegid() gid = os.getegid()
group_list = [65534 if gid != 65534 else 65533] group_list = [65534 if gid != 65534 else 65533]
name_group = "nogroup" if sys.platform != 'darwin' else "staff" name_group = _get_test_grp_name()
perm_error = False perm_error = False
if grp is not None: if grp is not None: