2 from test
import test_support
6 class PwdTest(unittest
.TestCase
):
9 entries
= pwd
.getpwall()
14 self
.assertEqual(len(e
), 7)
15 self
.assertEqual(e
[0], e
.pw_name
)
16 self
.assert_(isinstance(e
.pw_name
, basestring
))
17 self
.assertEqual(e
[1], e
.pw_passwd
)
18 self
.assert_(isinstance(e
.pw_passwd
, basestring
))
19 self
.assertEqual(e
[2], e
.pw_uid
)
20 self
.assert_(isinstance(e
.pw_uid
, int))
21 self
.assertEqual(e
[3], e
.pw_gid
)
22 self
.assert_(isinstance(e
.pw_gid
, int))
23 self
.assertEqual(e
[4], e
.pw_gecos
)
24 self
.assert_(isinstance(e
.pw_gecos
, basestring
))
25 self
.assertEqual(e
[5], e
.pw_dir
)
26 self
.assert_(isinstance(e
.pw_dir
, basestring
))
27 self
.assertEqual(e
[6], e
.pw_shell
)
28 self
.assert_(isinstance(e
.pw_shell
, basestring
))
30 # The following won't work, because of duplicate entries
32 # self.assertEqual(pwd.getpwuid(e.pw_uid), e)
33 # instead of this collect all entries for one uid
34 # and check afterwards
35 entriesbyname
.setdefault(e
.pw_name
, []).append(e
)
36 entriesbyuid
.setdefault(e
.pw_uid
, []).append(e
)
38 # check whether the entry returned by getpwuid()
39 # for each uid is among those from getpwall() for this uid
41 self
.assert_(pwd
.getpwnam(e
.pw_name
) in entriesbyname
[e
.pw_name
])
42 self
.assert_(pwd
.getpwuid(e
.pw_uid
) in entriesbyuid
[e
.pw_uid
])
44 def test_errors(self
):
45 self
.assertRaises(TypeError, pwd
.getpwuid
)
46 self
.assertRaises(TypeError, pwd
.getpwnam
)
47 self
.assertRaises(TypeError, pwd
.getpwall
, 42)
49 # try to get some errors
52 for (n
, p
, u
, g
, gecos
, d
, s
) in pwd
.getpwall():
56 allnames
= bynames
.keys()
58 fakename
= allnames
[namei
]
59 while fakename
in bynames
:
60 chars
= map(None, fakename
)
61 for i
in xrange(len(chars
)):
68 chars
[i
] = chr(ord(chars
[i
]) + 1)
73 fakename
= allnames
[namei
]
75 # should never happen... if so, just forget it
77 fakename
= ''.join(map(None, chars
))
79 self
.assertRaises(KeyError, pwd
.getpwnam
, fakename
)
81 # Choose a non-existent uid.
83 while fakeuid
in byuids
:
84 fakeuid
= (fakeuid
* 3) % 0x10000
86 self
.assertRaises(KeyError, pwd
.getpwuid
, fakeuid
)
89 suite
= unittest
.TestSuite()
90 suite
.addTest(unittest
.makeSuite(PwdTest
))
91 test_support
.run_suite(suite
)
93 if __name__
== "__main__":