Fix the test so that it works even when /etc/group has two entries

for the same gid.
This commit is contained in:
Walter Dörwald 2003-04-15 15:59:36 +00:00
parent 66e1e508b9
commit 43bc1f18db
1 changed files with 12 additions and 1 deletions

View File

@ -9,6 +9,7 @@ class GroupDatabaseTestCase(unittest.TestCase):
def test_values(self): def test_values(self):
entries = grp.getgrall() entries = grp.getgrall()
entriesbygid = {}
for e in entries: for e in entries:
self.assertEqual(len(e), 4) self.assertEqual(len(e), 4)
@ -22,7 +23,17 @@ class GroupDatabaseTestCase(unittest.TestCase):
self.assert_(isinstance(e.gr_mem, list)) self.assert_(isinstance(e.gr_mem, list))
self.assertEqual(grp.getgrnam(e.gr_name), e) self.assertEqual(grp.getgrnam(e.gr_name), e)
self.assertEqual(grp.getgrgid(e.gr_gid), 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 uid
# and check afterwards
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])
def test_errors(self): def test_errors(self):
self.assertRaises(TypeError, grp.getgrgid) self.assertRaises(TypeError, grp.getgrgid)