📄 test_pkg.py
字号:
# Test packages (dotted-name import)import sys, os, string, tempfile, tracebackfrom os import mkdir, rmdir # Can't test if these faildel mkdir, rmdirfrom test_support import verbose, TestFailed# Helpers to create and destroy hierarchies.def mkhier(root, descr): mkdir(root) for name, contents in descr: comps = string.split(name) 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)def cleanout(root): names = os.listdir(root) for name in names: fullname = os.path.join(root, name) if os.path.isdir(fullname) and not os.path.islink(fullname): cleanout(fullname) else: os.remove(fullname) rmdir(root)def rmdir(x): if verbose: print "rmdir", x os.rmdir(x)# Helper to run a testdef runtest(hier, code): root = tempfile.mktemp() mkhier(root, hier) savepath = sys.path[:] codefile = tempfile.mktemp() f = open(codefile, "w") f.write(code) f.close() try: sys.path.insert(0, root) if verbose: print "sys.path =", sys.path try: execfile(codefile, globals(), {}) except: traceback.print_exc(file=sys.stdout) finally: sys.path[:] = savepath try: cleanout(root) except (os.error, IOError): pass os.remove(codefile)# Test descriptionstests = [ ("t1", [("t1", None), ("t1 __init__.py", "")], "import t1"), ("t2", [ ("t2", None), ("t2 __init__.py", "'doc for t2'; print __name__, 'loading'"), ("t2 sub", None), ("t2 sub __init__.py", ""), ("t2 sub subsub", None), ("t2 sub subsub __init__.py", "print __name__, 'loading'; spam = 1"), ],"""import t2print t2.__doc__import t2.subimport t2.sub.subsubprint t2.__name__, t2.sub.__name__, t2.sub.subsub.__name__import t2from t2 import *print dir()from t2 import subfrom t2.sub import subsubfrom t2.sub.subsub import spamprint sub.__name__, subsub.__name__print sub.subsub.__name__print dir()import t2.subimport t2.sub.subsubprint t2.__name__, t2.sub.__name__, t2.sub.subsub.__name__from t2 import *print dir()"""), ("t3", [ ("t3", None), ("t3 __init__.py", "print __name__, 'loading'"), ("t3 sub", None), ("t3 sub __init__.py", ""), ("t3 sub subsub", None), ("t3 sub subsub __init__.py", "print __name__, 'loading'; spam = 1"), ],"""import t3.sub.subsubprint t3.__name__, t3.sub.__name__, t3.sub.subsub.__name__reload(t3)reload(t3.sub)reload(t3.sub.subsub)"""), ("t4", [ ("t4.py", "print 'THIS SHOULD NOT BE PRINTED (t4.py)'"), ("t4", None), ("t4 __init__.py", "print __name__, 'loading'"), ("t4 sub.py", "print 'THIS SHOULD NOT BE PRINTED (sub.py)'"), ("t4 sub", None), ("t4 sub __init__.py", ""), ("t4 sub subsub.py", "print 'THIS SHOULD NOT BE PRINTED (subsub.py)'"), ("t4 sub subsub", None), ("t4 sub subsub __init__.py", "print __name__, 'loading'; spam = 1"), ],"""from t4.sub.subsub import *print "t4.sub.subsub.spam =", spam"""), ("t5", [ ("t5", None), ("t5 __init__.py", "import t5.foo"), ("t5 string.py", "print __name__, 'loading'; spam = 1"), ("t5 foo.py", "print __name__, 'loading'; import string; print string.spam"), ],"""import t5from t5 import *print dir()import t5print dir(t5)print dir(t5.foo)print dir(t5.string)"""), ("t6", [ ("t6", None), ("t6 __init__.py", "__all__ = ['spam', 'ham', 'eggs']"), ("t6 spam.py", "print __name__, 'loading'"), ("t6 ham.py", "print __name__, 'loading'"), ("t6 eggs.py", "print __name__, 'loading'"), ],"""import t6print dir(t6)from t6 import *print dir(t6)print dir()"""),]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 testimport package without __init__import package with __init____init__ importing submodule__init__ importing global module__init__ defining variablessubmodule importing other submodulesubmodule importing global modulesubmodule import submodule via global namefrom package import submodulefrom package import subpackagefrom package import variable (defined in __init__)from package import * (defined in __init__)"""# Run the testsargs = []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)# Testimport sysimport imptry: import sys.impexcept ImportError: # This is what we expect passelse: raise TestFailed, "No ImportError exception on 'import sys.imp'"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -