diff options
author | Walter Dörwald <walter@livinglogic.de> | 2003-04-15 11:10:33 (GMT) |
---|---|---|
committer | Walter Dörwald <walter@livinglogic.de> | 2003-04-15 11:10:33 (GMT) |
commit | b1ded1e508d67acfb71450b353d0939e991cb288 (patch) | |
tree | 1f137b1aa1c1a9d06b2ba4edebb85b400dd50e54 /Lib/test/test_pwd.py | |
parent | 255a3d08a189fb6aa4acb16c2168eb396f63df0f (diff) | |
download | cpython-b1ded1e508d67acfb71450b353d0939e991cb288.zip cpython-b1ded1e508d67acfb71450b353d0939e991cb288.tar.gz cpython-b1ded1e508d67acfb71450b353d0939e991cb288.tar.bz2 |
Port test_pwd.py to PyUnit. Check that getpwall() and
getpwnam()/getpwuid() return consistent data.
Change test_grp to check that getgrall() and
getgrnam()/getgrgid() return consistent data.
Add error checks similar to test_pwd.py.
Port test___all__.py to PyUnit.
From SF patch #662807.
Diffstat (limited to 'Lib/test/test_pwd.py')
-rw-r--r-- | Lib/test/test_pwd.py | 137 |
1 files changed, 74 insertions, 63 deletions
diff --git a/Lib/test/test_pwd.py b/Lib/test/test_pwd.py index 75d083b..78f9a69 100644 --- a/Lib/test/test_pwd.py +++ b/Lib/test/test_pwd.py @@ -1,71 +1,82 @@ -from test.test_support import verbose +import unittest +from test import test_support + import pwd -print 'pwd.getpwall()' -entries = pwd.getpwall() +class PwdTest(unittest.TestCase): + + def test_values(self): + entries = pwd.getpwall() + + for e in entries: + self.assertEqual(len(e), 7) + self.assertEqual(e[0], e.pw_name) + self.assert_(isinstance(e.pw_name, basestring)) + self.assertEqual(e[1], e.pw_passwd) + self.assert_(isinstance(e.pw_passwd, basestring)) + self.assertEqual(e[2], e.pw_uid) + self.assert_(isinstance(e.pw_uid, int)) + self.assertEqual(e[3], e.pw_gid) + self.assert_(isinstance(e.pw_gid, int)) + self.assertEqual(e[4], e.pw_gecos) + self.assert_(isinstance(e.pw_gecos, basestring)) + self.assertEqual(e[5], e.pw_dir) + self.assert_(isinstance(e.pw_dir, basestring)) + self.assertEqual(e[6], e.pw_shell) + self.assert_(isinstance(e.pw_shell, basestring)) + + self.assertEqual(pwd.getpwnam(e.pw_name), e) + self.assertEqual(pwd.getpwuid(e.pw_uid), e) + + def test_errors(self): + self.assertRaises(TypeError, pwd.getpwuid) + self.assertRaises(TypeError, pwd.getpwnam) + self.assertRaises(TypeError, pwd.getpwall, 42) + + # try to get some errors + bynames = {} + byuids = {} + for (n, p, u, g, gecos, d, s) in pwd.getpwall(): + bynames[n] = u + byuids[u] = n + + allnames = bynames.keys() + namei = 0 + fakename = allnames[namei] + while fakename in bynames: + chars = map(None, fakename) + for i in xrange(len(chars)): + if chars[i] == 'z': + chars[i] = 'A' + break + elif chars[i] == 'Z': + continue + else: + chars[i] = chr(ord(chars[i]) + 1) + break + else: + namei = namei + 1 + try: + fakename = allnames[namei] + except IndexError: + # should never happen... if so, just forget it + break + fakename = ''.join(map(None, chars)) -for e in entries: - name = e[0] - uid = e[2] - if verbose: - print name, uid - print 'pwd.getpwuid()' - dbuid = pwd.getpwuid(uid) - if dbuid[0] != name: - print 'Mismatch in pwd.getpwuid()' - print 'pwd.getpwnam()' - dbname = pwd.getpwnam(name) - if dbname[2] != uid: - print 'Mismatch in pwd.getpwnam()' - else: - print 'name matches uid' - break + self.assertRaises(KeyError, pwd.getpwnam, fakename) -# try to get some errors -bynames = {} -byuids = {} -for n, p, u, g, gecos, d, s in entries: - bynames[n] = u - byuids[u] = n + # Choose a non-existent uid. + fakeuid = 4127 + while fakeuid in byuids: + fakeuid = (fakeuid * 3) % 0x10000 -allnames = bynames.keys() -namei = 0 -fakename = allnames[namei] -while bynames.has_key(fakename): - chars = map(None, fakename) - for i in range(len(chars)): - if chars[i] == 'z': - chars[i] = 'A' - break - elif chars[i] == 'Z': - continue - else: - chars[i] = chr(ord(chars[i]) + 1) - break - else: - namei = namei + 1 - try: - fakename = allnames[namei] - except IndexError: - # should never happen... if so, just forget it - break - fakename = ''.join(map(None, chars)) + self.assertRaises(KeyError, pwd.getpwuid, fakeuid) -try: - pwd.getpwnam(fakename) -except KeyError: - print 'caught expected exception' -else: - print 'fakename', fakename, 'did not except pwd.getpwnam()' +def test_main(): + suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(PwdTest)) + test_support.run_suite(suite) -# Choose a non-existent uid. -fakeuid = 4127 -while byuids.has_key(fakeuid): - fakeuid = (fakeuid * 3) % 0x10000 +if __name__ == "__main__": + test_main() -try: - pwd.getpwuid(fakeuid) -except KeyError: - print 'caught expected exception' -else: - print 'fakeuid', fakeuid, 'did not except pwd.getpwuid()' |