[Python-checkins] r57406 - in python/trunk/Lib/test: output/test_pkg test_pkg.py

collin.winter python-checkins at python.org
Fri Aug 24 21:13:59 CEST 2007


Author: collin.winter
Date: Fri Aug 24 21:13:58 2007
New Revision: 57406

Removed:
   python/trunk/Lib/test/output/test_pkg
Modified:
   python/trunk/Lib/test/test_pkg.py
Log:
Convert test_pkg to use unittest.

Deleted: /python/trunk/Lib/test/output/test_pkg
==============================================================================
--- /python/trunk/Lib/test/output/test_pkg	Fri Aug 24 21:13:58 2007
+++ (empty file)
@@ -1,45 +0,0 @@
-test_pkg
-running test t1
-running test t2
-t2 loading
-doc for t2
-t2.sub.subsub loading
-t2 t2.sub t2.sub.subsub
-['sub', 't2']
-t2.sub t2.sub.subsub
-t2.sub.subsub
-['spam', 'sub', 'subsub', 't2']
-t2 t2.sub t2.sub.subsub
-['spam', 'sub', 'subsub', 't2']
-running test t3
-t3 loading
-t3.sub.subsub loading
-t3 t3.sub t3.sub.subsub
-t3 loading
-t3.sub.subsub loading
-running test t4
-t4 loading
-t4.sub.subsub loading
-t4.sub.subsub.spam = 1
-running test t5
-t5.foo loading
-t5.string loading
-1
-['foo', 'string', 't5']
-['__doc__', '__file__', '__name__', '__path__', 'foo', 'string', 't5']
-['__doc__', '__file__', '__name__', 'string']
-['__doc__', '__file__', '__name__', 'spam']
-running test t6
-['__all__', '__doc__', '__file__', '__name__', '__path__']
-t6.spam loading
-t6.ham loading
-t6.eggs loading
-['__all__', '__doc__', '__file__', '__name__', '__path__', 'eggs', 'ham', 'spam']
-['eggs', 'ham', 'spam', 't6']
-running test t7
-t7 loading
-['__doc__', '__file__', '__name__', '__path__']
-['__doc__', '__file__', '__name__', '__path__']
-t7.sub.subsub loading
-['__doc__', '__file__', '__name__', '__path__', 'spam']
-t7.sub.subsub.spam = 1

Modified: python/trunk/Lib/test/test_pkg.py
==============================================================================
--- python/trunk/Lib/test/test_pkg.py	(original)
+++ python/trunk/Lib/test/test_pkg.py	Fri Aug 24 21:13:58 2007
@@ -1,33 +1,15 @@
 # Test packages (dotted-name import)
 
-import sys, os, tempfile, traceback
-from os import mkdir, rmdir, extsep          # Can't test if these fail
-del mkdir, rmdir
-from test.test_support import verify, verbose, TestFailed
+import sys
+import os
+import tempfile
+import textwrap
+import traceback
+import unittest
+from test import test_support
 
-# Helpers to create and destroy hierarchies.
 
-def mkhier(root, descr):
-    if not os.path.isdir(root):
-        mkdir(root)
-    for name, contents in descr:
-        comps = name.split()
-        fullname = root
-        for c in comps:
-            fullname = os.path.join(fullname, c)
-        if contents is None:
-            mkdir(fullname)
-        else:
-            if verbose: print "write", fullname
-            f = open(fullname, "w")
-            f.write(contents)
-            if contents and contents[-1] != '\n':
-                f.write('\n')
-            f.close()
-
-def mkdir(x):
-    if verbose: print "mkdir", x
-    os.mkdir(x)
+# Helpers to create and destroy hierarchies.
 
 def cleanout(root):
     names = os.listdir(root)
@@ -37,223 +19,252 @@
             cleanout(fullname)
         else:
             os.remove(fullname)
-    rmdir(root)
-
-def rmdir(x):
-    if verbose: print "rmdir", x
-    os.rmdir(x)
+    os.rmdir(root)
 
 def fixdir(lst):
-    try:
-        lst.remove('__builtins__')
-    except ValueError:
-        pass
+    if "__builtins__" in lst:
+        lst.remove("__builtins__")
     return lst
 
-# Helper to run a test
 
-def runtest(hier, code):
-    root = tempfile.mkdtemp()
-    mkhier(root, hier)
-    savepath = sys.path[:]
-    fd, fname = tempfile.mkstemp(text=True)
-    os.write(fd, code)
-    os.close(fd)
-    try:
+# XXX Things to test
+#
+# import package without __init__
+# import package with __init__
+# __init__ importing submodule
+# __init__ importing global module
+# __init__ defining variables
+# submodule importing other submodule
+# submodule importing global module
+# submodule import submodule via global name
+# from package import submodule
+# from package import subpackage
+# from package import variable (defined in __init__)
+# from package import * (defined in __init__)
+
+
+class Test(unittest.TestCase):
+
+    def setUp(self):
+        self.root = None
+        self.syspath = list(sys.path)
+
+    def tearDown(self):
+        sys.path[:] = self.syspath
+        cleanout(self.root)
+
+    def run_code(self, code):
+        exec(textwrap.dedent(code), globals(), {"self": self})
+
+    def mkhier(self, descr):
+        root = tempfile.mkdtemp()
         sys.path.insert(0, root)
-        if verbose: print "sys.path =", sys.path
-        try:
-            execfile(fname, globals(), {})
-        except:
-            traceback.print_exc(file=sys.stdout)
-    finally:
-        sys.path[:] = savepath
-        os.unlink(fname)
-        try:
-            cleanout(root)
-        except (os.error, IOError):
-            pass
-
-# Test descriptions
-
-tests = [
-    ("t1", [("t1", None), ("t1 __init__"+os.extsep+"py", "")], "import t1"),
-
-    ("t2", [
-    ("t2", None),
-    ("t2 __init__"+os.extsep+"py", "'doc for t2'; print __name__, 'loading'"),
-    ("t2 sub", None),
-    ("t2 sub __init__"+os.extsep+"py", ""),
-    ("t2 sub subsub", None),
-    ("t2 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
-    ],
-"""
-import t2
-print t2.__doc__
-import t2.sub
-import t2.sub.subsub
-print t2.__name__, t2.sub.__name__, t2.sub.subsub.__name__
-import t2
-from t2 import *
-print dir()
-from t2 import sub
-from t2.sub import subsub
-from t2.sub.subsub import spam
-print sub.__name__, subsub.__name__
-print sub.subsub.__name__
-print dir()
-import t2.sub
-import t2.sub.subsub
-print t2.__name__, t2.sub.__name__, t2.sub.subsub.__name__
-from t2 import *
-print dir()
-"""),
-
-    ("t3", [
-    ("t3", None),
-    ("t3 __init__"+os.extsep+"py", "print __name__, 'loading'"),
-    ("t3 sub", None),
-    ("t3 sub __init__"+os.extsep+"py", ""),
-    ("t3 sub subsub", None),
-    ("t3 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
-    ],
-"""
-import t3.sub.subsub
-print t3.__name__, t3.sub.__name__, t3.sub.subsub.__name__
-reload(t3)
-reload(t3.sub)
-reload(t3.sub.subsub)
-"""),
-
-    ("t4", [
-    ("t4"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (t4"+os.extsep+"py)'"),
-    ("t4", None),
-    ("t4 __init__"+os.extsep+"py", "print __name__, 'loading'"),
-    ("t4 sub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (sub"+os.extsep+"py)'"),
-    ("t4 sub", None),
-    ("t4 sub __init__"+os.extsep+"py", ""),
-    ("t4 sub subsub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (subsub"+os.extsep+"py)'"),
-    ("t4 sub subsub", None),
-    ("t4 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
-    ],
-"""
-from t4.sub.subsub import *
-print "t4.sub.subsub.spam =", spam
-"""),
-
-    ("t5", [
-    ("t5", None),
-    ("t5 __init__"+os.extsep+"py", "import t5.foo"),
-    ("t5 string"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
-    ("t5 foo"+os.extsep+"py",
-     "print __name__, 'loading'; import string; print string.spam"),
-     ],
-"""
-import t5
-from t5 import *
-print dir()
-import t5
-print fixdir(dir(t5))
-print fixdir(dir(t5.foo))
-print fixdir(dir(t5.string))
-"""),
-
-    ("t6", [
-    ("t6", None),
-    ("t6 __init__"+os.extsep+"py", "__all__ = ['spam', 'ham', 'eggs']"),
-    ("t6 spam"+os.extsep+"py", "print __name__, 'loading'"),
-    ("t6 ham"+os.extsep+"py", "print __name__, 'loading'"),
-    ("t6 eggs"+os.extsep+"py", "print __name__, 'loading'"),
-    ],
-"""
-import t6
-print fixdir(dir(t6))
-from t6 import *
-print fixdir(dir(t6))
-print dir()
-"""),
-
-    ("t7", [
-    ("t7"+os.extsep+"py", "print 'Importing t7"+os.extsep+"py'"),
-    ("t7", None),
-    ("t7 __init__"+os.extsep+"py", "print __name__, 'loading'"),
-    ("t7 sub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (sub"+os.extsep+"py)'"),
-    ("t7 sub", None),
-    ("t7 sub __init__"+os.extsep+"py", ""),
-    ("t7 sub subsub"+os.extsep+"py", "print 'THIS SHOULD NOT BE PRINTED (subsub"+os.extsep+"py)'"),
-    ("t7 sub subsub", None),
-    ("t7 sub subsub __init__"+os.extsep+"py", "print __name__, 'loading'; spam = 1"),
-    ],
-"""
-t7, sub, subsub = None, None, None
-import t7 as tas
-print fixdir(dir(tas))
-verify(not t7)
-from t7 import sub as subpar
-print fixdir(dir(subpar))
-verify(not t7 and not sub)
-from t7.sub import subsub as subsubsub
-print fixdir(dir(subsubsub))
-verify(not t7 and not sub and not subsub)
-from t7.sub.subsub import spam as ham
-print "t7.sub.subsub.spam =", ham
-verify(not t7 and not sub and not subsub)
-"""),
-
-]
-
-nontests = [
-    ("x5", [], ("import a" + ".a"*400)),
-    ("x6", [], ("import a" + ".a"*499)),
-    ("x7", [], ("import a" + ".a"*500)),
-    ("x8", [], ("import a" + ".a"*1100)),
-    ("x9", [], ("import " + "a"*400)),
-    ("x10", [], ("import " + "a"*500)),
-    ("x11", [], ("import " + "a"*998)),
-    ("x12", [], ("import " + "a"*999)),
-    ("x13", [], ("import " + "a"*999)),
-    ("x14", [], ("import " + "a"*2000)),
-]
-
-"""XXX Things to test
-
-import package without __init__
-import package with __init__
-__init__ importing submodule
-__init__ importing global module
-__init__ defining variables
-submodule importing other submodule
-submodule importing global module
-submodule import submodule via global name
-from package import submodule
-from package import subpackage
-from package import variable (defined in __init__)
-from package import * (defined in __init__)
-"""
-
-# Run the tests
-
-args = []
-if __name__ == '__main__':
-    args = sys.argv[1:]
-    if args and args[0] == '-q':
-        verbose = 0
-        del args[0]
-
-for name, hier, code in tests:
-    if args and name not in args:
-        print "skipping test", name
-        continue
-    print "running test", name
-    runtest(hier, code)
+        if not os.path.isdir(root):
+            os.mkdir(root)
+        for name, contents in descr:
+            comps = name.split()
+            fullname = root
+            for c in comps:
+                fullname = os.path.join(fullname, c)
+            if contents is None:
+                os.mkdir(fullname)
+            else:
+                f = open(fullname, "w")
+                f.write(contents)
+                if contents and contents[-1] != '\n':
+                    f.write('\n')
+                f.close()
+        self.root = root
+
+    def test_1(self):
+        hier = [("t1", None), ("t1 __init__"+os.extsep+"py", "")]
+        self.mkhier(hier)
+        import t1
+
+    def test_2(self):
+        hier = [
+         ("t2", None),
+         ("t2 __init__"+os.extsep+"py", "'doc for t2'"),
+         ("t2 sub", None),
+         ("t2 sub __init__"+os.extsep+"py", ""),
+         ("t2 sub subsub", None),
+         ("t2 sub subsub __init__"+os.extsep+"py", "spam = 1"),
+        ]
+        self.mkhier(hier)
+
+        import t2
+        self.assertEqual(t2.__doc__, "doc for t2")
+
+        import t2.sub
+        import t2.sub.subsub
+        self.assertEqual(t2.__name__, "t2")
+        self.assertEqual(t2.sub.__name__, "t2.sub")
+        self.assertEqual(t2.sub.subsub.__name__, "t2.sub.subsub")
+
+        # This exec crap is needed because Py3k forbids 'import *' outside
+        # of module-scope and __import__() is insufficient for what we need.
+        s = """
+            import t2
+            from t2 import *
+            self.assertEqual(dir(), ['self', 'sub', 't2'])
+            """
+        self.run_code(s)
+
+        from t2 import sub
+        from t2.sub import subsub
+        from t2.sub.subsub import spam
+        self.assertEqual(sub.__name__, "t2.sub")
+        self.assertEqual(subsub.__name__, "t2.sub.subsub")
+        self.assertEqual(sub.subsub.__name__, "t2.sub.subsub")
+        for name in ['spam', 'sub', 'subsub', 't2']:
+            self.failUnless(locals()["name"], "Failed to import %s" % name)
+
+        import t2.sub
+        import t2.sub.subsub
+        self.assertEqual(t2.__name__, "t2")
+        self.assertEqual(t2.sub.__name__, "t2.sub")
+        self.assertEqual(t2.sub.subsub.__name__, "t2.sub.subsub")
+
+        s = """
+            from t2 import *
+            self.failUnless(dir(), ['self', 'sub'])
+            """
+        self.run_code(s)
+
+    def test_3(self):
+        hier = [
+                ("t3", None),
+                ("t3 __init__"+os.extsep+"py", ""),
+                ("t3 sub", None),
+                ("t3 sub __init__"+os.extsep+"py", ""),
+                ("t3 sub subsub", None),
+                ("t3 sub subsub __init__"+os.extsep+"py", "spam = 1"),
+               ]
+        self.mkhier(hier)
+
+        import t3.sub.subsub
+        self.assertEqual(t3.__name__, "t3")
+        self.assertEqual(t3.sub.__name__, "t3.sub")
+        self.assertEqual(t3.sub.subsub.__name__, "t3.sub.subsub")
+
+    def test_4(self):
+        hier = [
+        ("t4.py", "raise RuntimeError('Shouldnt load t4.py')"),
+        ("t4", None),
+        ("t4 __init__"+os.extsep+"py", ""),
+        ("t4 sub.py", "raise RuntimeError('Shouldnt load sub.py')"),
+        ("t4 sub", None),
+        ("t4 sub __init__"+os.extsep+"py", ""),
+        ("t4 sub subsub"+os.extsep+"py",
+         "raise RuntimeError('Shouldnt load subsub.py')"),
+        ("t4 sub subsub", None),
+        ("t4 sub subsub __init__"+os.extsep+"py", "spam = 1"),
+               ]
+        self.mkhier(hier)
+
+        s = """
+            from t4.sub.subsub import *
+            self.assertEqual(spam, 1)
+            """
+        self.run_code(s)
+
+    def test_5(self):
+        hier = [
+        ("t5", None),
+        ("t5 __init__"+os.extsep+"py", "import t5.foo"),
+        ("t5 string"+os.extsep+"py", "spam = 1"),
+        ("t5 foo"+os.extsep+"py",
+         "from . import string; assert string.spam == 1"),
+         ]
+        self.mkhier(hier)
+
+        import t5
+        s = """
+            from t5 import *
+            self.assertEqual(dir(), ['foo', 'self', 'string', 't5'])
+            """
+        self.run_code(s)
+
+        import t5
+        self.assertEqual(fixdir(dir(t5)),
+                         ['__doc__', '__file__', '__name__',
+                          '__path__', 'foo', 'string', 't5'])
+        self.assertEqual(fixdir(dir(t5.foo)),
+                         ['__doc__', '__file__', '__name__', 'string'])
+        self.assertEqual(fixdir(dir(t5.string)),
+                         ['__doc__', '__file__', '__name__', 'spam'])
+
+    def test_6(self):
+        hier = [
+                ("t6", None),
+                ("t6 __init__"+os.extsep+"py",
+                 "__all__ = ['spam', 'ham', 'eggs']"),
+                ("t6 spam"+os.extsep+"py", ""),
+                ("t6 ham"+os.extsep+"py", ""),
+                ("t6 eggs"+os.extsep+"py", ""),
+               ]
+        self.mkhier(hier)
+
+        import t6
+        self.assertEqual(fixdir(dir(t6)),
+                         ['__all__', '__doc__', '__file__',
+                          '__name__', '__path__'])
+        s = """
+            import t6
+            from t6 import *
+            self.assertEqual(fixdir(dir(t6)),
+                             ['__all__', '__doc__', '__file__',
+                              '__name__', '__path__', 'eggs',
+                              'ham', 'spam'])
+            self.assertEqual(dir(), ['eggs', 'ham', 'self', 'spam', 't6'])
+            """
+        self.run_code(s)
+
+    def test_7(self):
+        hier = [
+                ("t7"+os.extsep+"py", ""),
+                ("t7", None),
+                ("t7 __init__"+os.extsep+"py", ""),
+                ("t7 sub"+os.extsep+"py",
+                 "raise RuntimeError('Shouldnt load sub.py')"),
+                ("t7 sub", None),
+                ("t7 sub __init__"+os.extsep+"py", ""),
+                ("t7 sub "+os.extsep+"py",
+                 "raise RuntimeError('Shouldnt load subsub.py')"),
+                ("t7 sub subsub", None),
+                ("t7 sub subsub __init__"+os.extsep+"py",
+                 "spam = 1"),
+               ]
+        self.mkhier(hier)
+
+
+        t7, sub, subsub = None, None, None
+        import t7 as tas
+        self.assertEqual(fixdir(dir(tas)),
+                         ['__doc__', '__file__', '__name__', '__path__'])
+        self.failIf(t7)
+        from t7 import sub as subpar
+        self.assertEqual(fixdir(dir(subpar)),
+                         ['__doc__', '__file__', '__name__', '__path__'])
+        self.failIf(t7)
+        self.failIf(sub)
+        from t7.sub import subsub as subsubsub
+        self.assertEqual(fixdir(dir(subsubsub)),
+                         ['__doc__', '__file__', '__name__', '__path__',
+                          'spam'])
+        self.failIf(t7)
+        self.failIf(sub)
+        self.failIf(subsub)
+        from t7.sub.subsub import spam as ham
+        self.assertEqual(ham, 1)
+        self.failIf(t7)
+        self.failIf(sub)
+        self.failIf(subsub)
 
-# Test
-import sys
-import imp
-try:
-    import sys.imp
-except ImportError:
-    # This is what we expect
-    pass
-else:
-    raise TestFailed, "No ImportError exception on 'import sys.imp'"
+
+def test_main():
+    test_support.run_unittest(__name__)
+
+
+if __name__ == "__main__":
+    test_main()


More information about the Python-checkins mailing list