mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Change test_pwd and test_grp so they can handle duplicate user
and group names. This should fix SF bug #724771.
This commit is contained in:
parent
41c9f880d8
commit
ecd2fdca0f
2 changed files with 7 additions and 3 deletions
|
@ -9,6 +9,7 @@ class GroupDatabaseTestCase(unittest.TestCase):
|
||||||
|
|
||||||
def test_values(self):
|
def test_values(self):
|
||||||
entries = grp.getgrall()
|
entries = grp.getgrall()
|
||||||
|
entriesbyname = {}
|
||||||
entriesbygid = {}
|
entriesbygid = {}
|
||||||
|
|
||||||
for e in entries:
|
for e in entries:
|
||||||
|
@ -22,18 +23,19 @@ class GroupDatabaseTestCase(unittest.TestCase):
|
||||||
self.assertEqual(e[3], e.gr_mem)
|
self.assertEqual(e[3], e.gr_mem)
|
||||||
self.assert_(isinstance(e.gr_mem, list))
|
self.assert_(isinstance(e.gr_mem, list))
|
||||||
|
|
||||||
self.assertEqual(grp.getgrnam(e.gr_name), e)
|
|
||||||
# The following won't work, because of duplicate entries
|
# The following won't work, because of duplicate entries
|
||||||
# for one gid
|
# for one gid
|
||||||
# self.assertEqual(grp.getgrgid(e.gr_gid), e)
|
# 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
|
# and check afterwards
|
||||||
|
entriesbyname.setdefault(e.gr_name, []).append(e)
|
||||||
entriesbygid.setdefault(e.gr_gid, []).append(e)
|
entriesbygid.setdefault(e.gr_gid, []).append(e)
|
||||||
|
|
||||||
# check whether the entry returned by getgrgid()
|
# check whether the entry returned by getgrgid()
|
||||||
# for each uid is among those from getgrall() for this uid
|
# for each uid is among those from getgrall() for this uid
|
||||||
for e in entries:
|
for e in entries:
|
||||||
self.assert_(grp.getgrgid(e.gr_gid) in entriesbygid[e.gr_gid])
|
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):
|
def test_errors(self):
|
||||||
self.assertRaises(TypeError, grp.getgrgid)
|
self.assertRaises(TypeError, grp.getgrgid)
|
||||||
|
|
|
@ -7,6 +7,7 @@ class PwdTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_values(self):
|
def test_values(self):
|
||||||
entries = pwd.getpwall()
|
entries = pwd.getpwall()
|
||||||
|
entriesbyname = {}
|
||||||
entriesbyuid = {}
|
entriesbyuid = {}
|
||||||
|
|
||||||
for e in entries:
|
for e in entries:
|
||||||
|
@ -26,17 +27,18 @@ class PwdTest(unittest.TestCase):
|
||||||
self.assertEqual(e[6], e.pw_shell)
|
self.assertEqual(e[6], e.pw_shell)
|
||||||
self.assert_(isinstance(e.pw_shell, basestring))
|
self.assert_(isinstance(e.pw_shell, basestring))
|
||||||
|
|
||||||
self.assertEqual(pwd.getpwnam(e.pw_name), e)
|
|
||||||
# The following won't work, because of duplicate entries
|
# The following won't work, because of duplicate entries
|
||||||
# for one uid
|
# for one uid
|
||||||
# self.assertEqual(pwd.getpwuid(e.pw_uid), e)
|
# self.assertEqual(pwd.getpwuid(e.pw_uid), e)
|
||||||
# instead of this collect all entries for one uid
|
# instead of this collect all entries for one uid
|
||||||
# and check afterwards
|
# and check afterwards
|
||||||
|
entriesbyname.setdefault(e.pw_name, []).append(e)
|
||||||
entriesbyuid.setdefault(e.pw_uid, []).append(e)
|
entriesbyuid.setdefault(e.pw_uid, []).append(e)
|
||||||
|
|
||||||
# check whether the entry returned by getpwuid()
|
# check whether the entry returned by getpwuid()
|
||||||
# for each uid is among those from getpwall() for this uid
|
# for each uid is among those from getpwall() for this uid
|
||||||
for e in entries:
|
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])
|
self.assert_(pwd.getpwuid(e.pw_uid) in entriesbyuid[e.pw_uid])
|
||||||
|
|
||||||
def test_errors(self):
|
def test_errors(self):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue