From ecd2fdca0f9461b149ca6d0bcf070deac5e7ca9a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Walter=20D=C3=B6rwald?= <walter@livinglogic.de>
Date: Tue, 22 Apr 2003 11:05:57 +0000
Subject: Change test_pwd and test_grp so they can handle duplicate user and
 group names. This should fix SF bug #724771.

---
 Lib/test/test_grp.py | 6 ++++--
 Lib/test/test_pwd.py | 4 +++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/Lib/test/test_grp.py b/Lib/test/test_grp.py
index 71c4897..76323a2 100755
--- a/Lib/test/test_grp.py
+++ b/Lib/test/test_grp.py
@@ -9,6 +9,7 @@ class GroupDatabaseTestCase(unittest.TestCase):
 
     def test_values(self):
         entries = grp.getgrall()
+        entriesbyname = {}
         entriesbygid = {}
 
         for e in entries:
@@ -22,18 +23,19 @@ class GroupDatabaseTestCase(unittest.TestCase):
             self.assertEqual(e[3], e.gr_mem)
             self.assert_(isinstance(e.gr_mem, list))
 
-            self.assertEqual(grp.getgrnam(e.gr_name), e)
             # The following won't work, because of duplicate entries
             # for one gid
             #    self.assertEqual(grp.getgrgid(e.gr_gid), e)
-            # instead of this collect all entries for one gid
+            # instead of this collect all entries for one gid/name
             # and check afterwards
+            entriesbyname.setdefault(e.gr_name, []).append(e)
             entriesbygid.setdefault(e.gr_gid, []).append(e)
 
         # check whether the entry returned by getgrgid()
         # for each uid is among those from getgrall() for this uid
         for e in entries:
             self.assert_(grp.getgrgid(e.gr_gid) in entriesbygid[e.gr_gid])
+            self.assert_(grp.getgrnam(e.gr_name) in entriesbyname[e.gr_name])
 
     def test_errors(self):
         self.assertRaises(TypeError, grp.getgrgid)
diff --git a/Lib/test/test_pwd.py b/Lib/test/test_pwd.py
index 6cc52d7..dbdea79 100644
--- a/Lib/test/test_pwd.py
+++ b/Lib/test/test_pwd.py
@@ -7,6 +7,7 @@ class PwdTest(unittest.TestCase):
 
     def test_values(self):
         entries = pwd.getpwall()
+        entriesbyname = {}
         entriesbyuid = {}
 
         for e in entries:
@@ -26,17 +27,18 @@ class PwdTest(unittest.TestCase):
             self.assertEqual(e[6], e.pw_shell)
             self.assert_(isinstance(e.pw_shell, basestring))
 
-            self.assertEqual(pwd.getpwnam(e.pw_name), e)
             # The following won't work, because of duplicate entries
             # for one uid
             #    self.assertEqual(pwd.getpwuid(e.pw_uid), e)
             # instead of this collect all entries for one uid
             # and check afterwards
+            entriesbyname.setdefault(e.pw_name, []).append(e)
             entriesbyuid.setdefault(e.pw_uid, []).append(e)
 
         # check whether the entry returned by getpwuid()
         # for each uid is among those from getpwall() for this uid
         for e in entries:
+            self.assert_(pwd.getpwnam(e.pw_name) in entriesbyname[e.pw_name])
             self.assert_(pwd.getpwuid(e.pw_uid) in entriesbyuid[e.pw_uid])
 
     def test_errors(self):
-- 
cgit v0.12

