| """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()
|