Staging
v0.8.1
https://github.com/python/cpython
Raw File
Tip revision: 2a9b0a93091b9ef7350a94bb3d3f1c43725b7a8c authored by Georg Brandl on 05 March 2011, 13:54:19 UTC
Close 2.0 branch.
Tip revision: 2a9b0a9
regrtest.py
"""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 compile

import os
import sys
import test
import tempfile

def copy_test_suite():
    dest = tempfile.mktemp()
    os.mkdir(dest)
    os.system("cp -r %s/* %s" % (test.__path__[0], dest))
    print "Creating copy of test suite in", dest
    return dest

def compile_files(dir):
    print "Compiling",
    line_len = 10
    for file in os.listdir(dir):
        base, ext = os.path.splitext(file)
        if ext == '.py' and base[:4] == 'test':
            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,
            compile(source)
            # make sure the .pyc file is not over-written
            os.chmod(source + "c", 444)
    print

def run_regrtest(test_dir):
    os.chdir(test_dir)
    os.system("%s -v regrtest.py" % sys.executable)

def cleanup(dir):
    os.system("rm -rf %s" % dir)

def main():
    test_dir = copy_test_suite()
    compile_files(test_dir)
    run_regrtest(test_dir)
    cleanup(test_dir)

if __name__ == "__main__":
    main()
back to top