[Python-checkins] python/dist/src/Lib/test test_pwd.py,1.12,1.13 test_grp.py,1.10,1.11 test___all__.py,1.28,1.29
doerwalter@users.sourceforge.net
doerwalter@users.sourceforge.net
Tue, 15 Apr 2003 04:10:38 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv14955/Lib/test
Modified Files:
test_pwd.py test_grp.py test___all__.py
Log Message:
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.
Index: test_pwd.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_pwd.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** test_pwd.py 23 Jul 2002 19:03:59 -0000 1.12
--- test_pwd.py 15 Apr 2003 11:10:32 -0000 1.13
***************
*** 1,71 ****
! from test.test_support import verbose
import pwd
! print 'pwd.getpwall()'
! entries = pwd.getpwall()
! 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
! # try to get some errors
! bynames = {}
! byuids = {}
! for n, p, u, g, gecos, d, s in entries:
! bynames[n] = u
! byuids[u] = n
! 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))
! try:
! pwd.getpwnam(fakename)
! except KeyError:
! print 'caught expected exception'
! else:
! print 'fakename', fakename, 'did not except pwd.getpwnam()'
! # Choose a non-existent uid.
! fakeuid = 4127
! while byuids.has_key(fakeuid):
! fakeuid = (fakeuid * 3) % 0x10000
- try:
- pwd.getpwuid(fakeuid)
- except KeyError:
- print 'caught expected exception'
- else:
- print 'fakeuid', fakeuid, 'did not except pwd.getpwuid()'
--- 1,82 ----
! import unittest
! from test import test_support
!
import pwd
! 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))
!
! self.assertRaises(KeyError, pwd.getpwnam, fakename)
!
! # Choose a non-existent uid.
! fakeuid = 4127
! while fakeuid in byuids:
! fakeuid = (fakeuid * 3) % 0x10000
!
! self.assertRaises(KeyError, pwd.getpwuid, fakeuid)
!
! def test_main():
! suite = unittest.TestSuite()
! suite.addTest(unittest.makeSuite(PwdTest))
! test_support.run_suite(suite)
!
! if __name__ == "__main__":
! test_main()
Index: test_grp.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_grp.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** test_grp.py 23 Jul 2002 19:03:54 -0000 1.10
--- test_grp.py 15 Apr 2003 11:10:33 -0000 1.11
***************
*** 1,6 ****
"""Test script for the grp module."""
- # XXX This really needs some work, but what are the expected invariants?
-
import grp
import unittest
--- 1,4 ----
***************
*** 10,26 ****
class GroupDatabaseTestCase(unittest.TestCase):
! def setUp(self):
! self.groups = grp.getgrall()
! def test_getgrgid(self):
! entry = grp.getgrgid(self.groups[0][2])
! def test_getgrnam(self):
! entry = grp.getgrnam(self.groups[0][0])
! def test_main():
! test_support.run_unittest(GroupDatabaseTestCase)
if __name__ == "__main__":
--- 8,76 ----
class GroupDatabaseTestCase(unittest.TestCase):
! def test_values(self):
! entries = grp.getgrall()
! for e in entries:
! self.assertEqual(len(e), 4)
! self.assertEqual(e[0], e.gr_name)
! self.assert_(isinstance(e.gr_name, basestring))
! self.assertEqual(e[1], e.gr_passwd)
! self.assert_(isinstance(e.gr_passwd, basestring))
! self.assertEqual(e[2], e.gr_gid)
! self.assert_(isinstance(e.gr_gid, int))
! self.assertEqual(e[3], e.gr_mem)
! self.assert_(isinstance(e.gr_mem, list))
! self.assertEqual(grp.getgrnam(e.gr_name), e)
! self.assertEqual(grp.getgrgid(e.gr_gid), e)
+ def test_errors(self):
+ self.assertRaises(TypeError, grp.getgrgid)
+ self.assertRaises(TypeError, grp.getgrnam)
+ self.assertRaises(TypeError, grp.getgrall, 42)
! # try to get some errors
! bynames = {}
! bygids = {}
! for (n, p, g, mem) in grp.getgrall():
! bynames[n] = g
! bygids[g] = 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))
+ self.assertRaises(KeyError, grp.getgrnam, fakename)
+
+ # Choose a non-existent gid.
+ fakegid = 4127
+ while fakegid in bygids:
+ fakegid = (fakegid * 3) % 0x10000
+
+ self.assertRaises(KeyError, grp.getgrgid, fakegid)
+
+ def test_main():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(GroupDatabaseTestCase))
+ test_support.run_suite(suite)
if __name__ == "__main__":
Index: test___all__.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test___all__.py,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** test___all__.py 9 Oct 2002 18:17:06 -0000 1.28
--- test___all__.py 15 Apr 2003 11:10:33 -0000 1.29
***************
*** 1,2 ****
--- 1,5 ----
+ import unittest
+ from test import test_support
+
from test.test_support import verify, verbose
import sys
***************
*** 10,174 ****
r'statcache$')
! def check_all(modname):
! names = {}
! try:
! exec "import %s" % modname in names
! except ImportError:
! # Silent fail here seems the best route since some modules
! # may not be available in all environments.
! # Since an ImportError may leave a partial module object in
! # sys.modules, get rid of that first. Here's what happens if
! # you don't: importing pty fails on Windows because pty tries to
! # import FCNTL, which doesn't exist. That raises an ImportError,
! # caught here. It also leaves a partial pty module in sys.modules.
! # So when test_pty is called later, the import of pty succeeds,
! # but shouldn't. As a result, test_pty crashes with an
! # AttributeError instead of an ImportError, and regrtest interprets
! # the latter as a test failure (ImportError is treated as "test
! # skipped" -- which is what test_pty should say on Windows).
try:
! del sys.modules[modname]
! except KeyError:
! pass
! return
! verify(hasattr(sys.modules[modname], "__all__"),
! "%s has no __all__ attribute" % modname)
! names = {}
! exec "from %s import *" % modname in names
! if names.has_key("__builtins__"):
! del names["__builtins__"]
! keys = names.keys()
! keys.sort()
! all = list(sys.modules[modname].__all__) # in case it's a tuple
! all.sort()
! verify(keys==all, "%s != %s" % (keys, all))
! if not sys.platform.startswith('java'):
! # In case _socket fails to build, make this test fail more gracefully
! # than an AttributeError somewhere deep in CGIHTTPServer.
! import _socket
! check_all("BaseHTTPServer")
! check_all("CGIHTTPServer")
! check_all("ConfigParser")
! check_all("Cookie")
! check_all("MimeWriter")
! check_all("SimpleHTTPServer")
! check_all("SocketServer")
! check_all("StringIO")
! check_all("UserString")
! check_all("aifc")
! check_all("atexit")
! check_all("audiodev")
! check_all("base64")
! check_all("bdb")
! check_all("binhex")
! check_all("calendar")
! check_all("cgi")
! check_all("cmd")
! check_all("code")
! check_all("codecs")
! check_all("codeop")
! check_all("colorsys")
! check_all("commands")
! check_all("compileall")
! check_all("copy")
! check_all("copy_reg")
! check_all("dbhash")
! check_all("dircache")
! check_all("dis")
! check_all("doctest")
! check_all("dospath")
! check_all("filecmp")
! check_all("fileinput")
! check_all("fnmatch")
! check_all("fpformat")
! check_all("ftplib")
! check_all("getopt")
! check_all("getpass")
! check_all("gettext")
! check_all("glob")
! check_all("gopherlib")
! check_all("gzip")
! check_all("htmllib")
! check_all("httplib")
! check_all("ihooks")
! check_all("imaplib")
! check_all("imghdr")
! check_all("imputil")
! check_all("keyword")
! check_all("linecache")
! check_all("locale")
! check_all("macpath")
! check_all("macurl2path")
! check_all("mailbox")
! check_all("mhlib")
! check_all("mimetools")
! check_all("mimetypes")
! check_all("mimify")
! check_all("multifile")
! check_all("netrc")
! check_all("nntplib")
! check_all("ntpath")
! check_all("os")
! check_all("pdb")
! check_all("pickle")
! check_all("pipes")
! check_all("popen2")
! check_all("poplib")
! check_all("posixpath")
! check_all("pprint")
! check_all("pre") # deprecated
! check_all("profile")
! check_all("pstats")
! check_all("pty")
! check_all("py_compile")
! check_all("pyclbr")
! check_all("quopri")
! check_all("random")
! check_all("re")
! check_all("reconvert")
! check_all("regsub")
! check_all("repr")
! check_all("rexec")
! check_all("rfc822")
! check_all("robotparser")
! check_all("sched")
! check_all("sgmllib")
! check_all("shelve")
! check_all("shlex")
! check_all("shutil")
! check_all("smtpd")
! check_all("smtplib")
! check_all("sndhdr")
! check_all("socket")
! check_all("sre")
! check_all("stat_cache")
! check_all("tabnanny")
! check_all("telnetlib")
! check_all("tempfile")
! check_all("toaiff")
! check_all("tokenize")
! check_all("traceback")
! check_all("tty")
! check_all("urllib")
! check_all("urlparse")
! check_all("uu")
! check_all("warnings")
! check_all("wave")
! check_all("weakref")
! check_all("webbrowser")
! check_all("xdrlib")
! check_all("zipfile")
! # rlcompleter needs special consideration; it import readline which
! # initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-(
! try:
! check_all("rlcompleter")
! finally:
! try:
! import locale
! except ImportError:
! pass
! else:
! locale.setlocale(locale.LC_CTYPE, 'C')
--- 13,200 ----
r'statcache$')
! class AllTest(unittest.TestCase):
!
! def check_all(self, modname):
! names = {}
try:
! exec "import %s" % modname in names
! except ImportError:
! # Silent fail here seems the best route since some modules
! # may not be available in all environments.
! # Since an ImportError may leave a partial module object in
! # sys.modules, get rid of that first. Here's what happens if
! # you don't: importing pty fails on Windows because pty tries to
! # import FCNTL, which doesn't exist. That raises an ImportError,
! # caught here. It also leaves a partial pty module in sys.modules.
! # So when test_pty is called later, the import of pty succeeds,
! # but shouldn't. As a result, test_pty crashes with an
! # AttributeError instead of an ImportError, and regrtest interprets
! # the latter as a test failure (ImportError is treated as "test
! # skipped" -- which is what test_pty should say on Windows).
! try:
! del sys.modules[modname]
! except KeyError:
! pass
! return
! verify(hasattr(sys.modules[modname], "__all__"),
! "%s has no __all__ attribute" % modname)
! names = {}
! exec "from %s import *" % modname in names
! if names.has_key("__builtins__"):
! del names["__builtins__"]
! keys = names.keys()
! keys.sort()
! all = list(sys.modules[modname].__all__) # in case it's a tuple
! all.sort()
! verify(keys==all, "%s != %s" % (keys, all))
! def test_all(self):
! if not sys.platform.startswith('java'):
! # In case _socket fails to build, make this test fail more gracefully
! # than an AttributeError somewhere deep in CGIHTTPServer.
! import _socket
! self.check_all("BaseHTTPServer")
! self.check_all("CGIHTTPServer")
! self.check_all("ConfigParser")
! self.check_all("Cookie")
! self.check_all("MimeWriter")
! self.check_all("SimpleHTTPServer")
! self.check_all("SocketServer")
! self.check_all("StringIO")
! self.check_all("UserString")
! self.check_all("aifc")
! self.check_all("atexit")
! self.check_all("audiodev")
! self.check_all("base64")
! self.check_all("bdb")
! self.check_all("binhex")
! self.check_all("calendar")
! self.check_all("cgi")
! self.check_all("cmd")
! self.check_all("code")
! self.check_all("codecs")
! self.check_all("codeop")
! self.check_all("colorsys")
! self.check_all("commands")
! self.check_all("compileall")
! self.check_all("copy")
! self.check_all("copy_reg")
! self.check_all("dbhash")
! self.check_all("difflib")
! self.check_all("dircache")
! self.check_all("dis")
! self.check_all("doctest")
! self.check_all("dummy_thread")
! self.check_all("dummy_threading")
! self.check_all("filecmp")
! self.check_all("fileinput")
! self.check_all("fnmatch")
! self.check_all("fpformat")
! self.check_all("ftplib")
! self.check_all("getopt")
! self.check_all("getpass")
! self.check_all("gettext")
! self.check_all("glob")
! self.check_all("gopherlib")
! self.check_all("gzip")
! self.check_all("heapq")
! self.check_all("htmllib")
! self.check_all("httplib")
! self.check_all("ihooks")
! self.check_all("imaplib")
! self.check_all("imghdr")
! self.check_all("imputil")
! self.check_all("keyword")
! self.check_all("linecache")
! self.check_all("locale")
! self.check_all("macpath")
! self.check_all("macurl2path")
! self.check_all("mailbox")
! self.check_all("mailcap")
! self.check_all("mhlib")
! self.check_all("mimetools")
! self.check_all("mimetypes")
! self.check_all("mimify")
! self.check_all("multifile")
! self.check_all("netrc")
! self.check_all("nntplib")
! self.check_all("ntpath")
! self.check_all("opcode")
! self.check_all("os")
! self.check_all("os2emxpath")
! self.check_all("pdb")
! self.check_all("pickle")
! self.check_all("pipes")
! self.check_all("popen2")
! self.check_all("poplib")
! self.check_all("posixpath")
! self.check_all("pprint")
! self.check_all("pre") # deprecated
! self.check_all("profile")
! self.check_all("pstats")
! self.check_all("pty")
! self.check_all("py_compile")
! self.check_all("pyclbr")
! self.check_all("quopri")
! self.check_all("random")
! self.check_all("re")
! self.check_all("reconvert")
! self.check_all("regsub")
! self.check_all("repr")
! self.check_all("rexec")
! self.check_all("rfc822")
! self.check_all("robotparser")
! self.check_all("sched")
! self.check_all("sets")
! self.check_all("sgmllib")
! self.check_all("shelve")
! self.check_all("shlex")
! self.check_all("shutil")
! self.check_all("smtpd")
! self.check_all("smtplib")
! self.check_all("sndhdr")
! self.check_all("socket")
! self.check_all("sre")
! self.check_all("statcache")
! self.check_all("symtable")
! self.check_all("tabnanny")
! self.check_all("tarfile")
! self.check_all("telnetlib")
! self.check_all("tempfile")
! self.check_all("textwrap")
! self.check_all("threading")
! self.check_all("toaiff")
! self.check_all("tokenize")
! self.check_all("traceback")
! self.check_all("tty")
! self.check_all("urllib")
! self.check_all("urlparse")
! self.check_all("uu")
! self.check_all("warnings")
! self.check_all("wave")
! self.check_all("weakref")
! self.check_all("webbrowser")
! self.check_all("xdrlib")
! self.check_all("zipfile")
! # rlcompleter needs special consideration; it import readline which
! # initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-(
! try:
! self.check_all("rlcompleter")
! finally:
! try:
! import locale
! except ImportError:
! pass
! else:
! locale.setlocale(locale.LC_CTYPE, 'C')
!
!
! def test_main():
! suite = unittest.TestSuite()
! suite.addTest(unittest.makeSuite(AllTest))
! test_support.run_suite(suite)
!
! if __name__ == "__main__":
! test_main()