bpo-39855: Fix test_subprocess if nobody user doesn't exist (GH-18781)

test_subprocess.test_user() now skips the test on an user name if the
user name doesn't exist. For example, skip the test if the user
"nobody" doesn't exist on Linux.
This commit is contained in:
Victor Stinner 2020-03-05 14:28:40 +01:00 committed by GitHub
parent 85cf1d514b
commit f7b5d419bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 2 deletions

View File

@ -1791,7 +1791,12 @@ class POSIXProcessTestCase(BaseTestCase):
name_uid = "nobody" if sys.platform != 'darwin' else "unknown"
if pwd is not None:
test_users.append(name_uid)
try:
pwd.getpwnam(name_uid)
test_users.append(name_uid)
except KeyError:
# unknown user name
name_uid = None
for user in test_users:
# posix_spawn() may be used with close_fds=False
@ -1819,7 +1824,7 @@ class POSIXProcessTestCase(BaseTestCase):
with self.assertRaises(ValueError):
subprocess.check_call(ZERO_RETURN_CMD, user=-1)
if pwd is None:
if pwd is None and name_uid is not None:
with self.assertRaises(ValueError):
subprocess.check_call(ZERO_RETURN_CMD, user=name_uid)

View File

@ -0,0 +1,3 @@
test_subprocess.test_user() now skips the test on an user name if the user
name doesn't exist. For example, skip the test if the user "nobody" doesn't
exist on Linux.