/Tools/compiler/regrtest.py
http://unladen-swallow.googlecode.com/ · Python · 78 lines · 60 code · 9 blank · 9 comment · 9 complexity · d26be0176aaafbc1c9f8e56dcb37412d MD5 · raw file
- """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()