|
|
"""Run the Python regression test using the compiler
This test runs the standard Python test suite using bytecode generatedby this compiler instead of by the builtin compiler.
The regression test is run with the interpreter in verbose mode sothat import problems can be observed easily."""
from compiler import compileFile
import osimport sysimport testimport 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()
|