From e43a43a353681bfece4780b49d159f2cc12e840d Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 4 Mar 2020 23:01:04 +0100 Subject: [PATCH] bpo-39855: Fix test_subprocess if nobody user doesn't exist 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. --- Lib/test/test_subprocess.py | 9 +++++++-- .../next/Tests/2020-03-04-23-03-01.bpo-39855.Ql5xv8.rst | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2020-03-04-23-03-01.bpo-39855.Ql5xv8.rst diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 2bbdbaef84e992..1cebf6b24a69e9 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -1791,7 +1791,12 @@ def test_user(self): 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 @@ def test_user(self): 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) diff --git a/Misc/NEWS.d/next/Tests/2020-03-04-23-03-01.bpo-39855.Ql5xv8.rst b/Misc/NEWS.d/next/Tests/2020-03-04-23-03-01.bpo-39855.Ql5xv8.rst new file mode 100644 index 00000000000000..060124129042d7 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-03-04-23-03-01.bpo-39855.Ql5xv8.rst @@ -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.