⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_pkg.py

📁 minimal python variant for small footprint apps like embedded apps
💻 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 + -