From e8a255a5a28f3d0cecf2bcd411ac959937cde40d Mon Sep 17 00:00:00 2001
From: =?utf8?q?Charles-Fran=C3=A7ois=20Natali?= <neologix@free.fr>
Date: Wed, 2 May 2012 20:01:38 +0200
Subject: [PATCH] Issue #14698: Make test_posix more robust when the current
 UID doesn't have an associated pwd entry.

---
 Lib/test/test_posix.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index 7612634208..26b8d81a64 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -107,7 +107,11 @@ class PosixTester(unittest.TestCase):
         # If a non-privileged user invokes it, it should fail with OSError
         # EPERM.
         if os.getuid() != 0:
-            name = pwd.getpwuid(posix.getuid()).pw_name
+            try:
+                name = pwd.getpwuid(posix.getuid()).pw_name
+            except KeyError:
+                # the current UID may not have a pwd entry
+                raise unittest.SkipTest("need a pwd entry")
             try:
                 posix.initgroups(name, 13)
             except OSError as e:
@@ -421,8 +425,9 @@ class PosixTester(unittest.TestCase):
     def test_getgroups(self):
         with os.popen('id -G') as idg:
             groups = idg.read().strip()
+            ret = idg.close()
 
-        if not groups:
+        if ret != 0 or not groups:
             raise unittest.SkipTest("need working 'id -G'")
 
         # 'id -G' and 'os.getgroups()' should return the same
-- 
2.40.0