diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
commit | 458120dd40db6b4df55a4e96b650e16798ef06a0 (patch) | |
tree | 8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Tools/compiler/regrtest.py | |
parent | 3a742c699f6806c1145aea5149bf15de15a0afd7 (diff) |
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Tools/compiler/regrtest.py')
-rw-r--r-- | sys/src/cmd/python/Tools/compiler/regrtest.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/sys/src/cmd/python/Tools/compiler/regrtest.py b/sys/src/cmd/python/Tools/compiler/regrtest.py new file mode 100644 index 000000000..50d06e71f --- /dev/null +++ b/sys/src/cmd/python/Tools/compiler/regrtest.py @@ -0,0 +1,78 @@ +"""Run the Python regression test using the compiler + +This test runs the standard Python test suite using bytecode generated +by this compiler instead of by the builtin compiler. + +The regression test is run with the interpreter in verbose mode so +that import problems can be observed easily. +""" + +from compiler import compileFile + +import os +import sys +import test +import tempfile + +def copy_test_suite(): + dest = tempfile.mkdtemp() + os.system("cp -r %s/* %s" % (test.__path__[0], dest)) + print "Creating copy of test suite in", dest + return dest + +def copy_library(): + dest = tempfile.mkdtemp() + libdir = os.path.split(test.__path__[0])[0] + print "Found standard library in", libdir + print "Creating copy of standard library in", dest + os.system("cp -r %s/* %s" % (libdir, dest)) + return dest + +def compile_files(dir): + print "Compiling", dir, "\n\t", + line_len = 10 + for file in os.listdir(dir): + base, ext = os.path.splitext(file) + if ext == '.py': + source = os.path.join(dir, file) + line_len = line_len + len(file) + 1 + if line_len > 75: + print "\n\t", + line_len = len(source) + 9 + print file, + try: + compileFile(source) + except SyntaxError, err: + print err + continue + # make sure the .pyc file is not over-written + os.chmod(source + "c", 444) + elif file == 'CVS': + pass + else: + path = os.path.join(dir, file) + if os.path.isdir(path): + print + print + compile_files(path) + print "\t", + line_len = 10 + print + +def run_regrtest(lib_dir): + test_dir = os.path.join(lib_dir, "test") + os.chdir(test_dir) + os.system("PYTHONPATH=%s %s -v regrtest.py" % (lib_dir, sys.executable)) + +def cleanup(dir): + os.system("rm -rf %s" % dir) + +def main(): + lib_dir = copy_library() + compile_files(lib_dir) + run_regrtest(lib_dir) + raw_input("Cleanup?") + cleanup(lib_dir) + +if __name__ == "__main__": + main() |