mirror of
https://github.com/python/cpython.git
synced 2026-06-02 01:29:52 -04:00
2a8ec79353
The tests are run from a copy of the library directory, where everything has been compiled by the compiler package. Add a raw_input() call at the end of the script, so that I can check the output before the temp directory with the compiled code is removed.
75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
"""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 copy_library():
|
|
dest = tempfile.mktemp()
|
|
os.mkdir(dest)
|
|
libdir = os.path.split(test.__path__[0])[0]
|
|
os.system("cp -r %s/* %s" % (libdir, dest))
|
|
print "Creating copy of standard library in", dest
|
|
return dest
|
|
|
|
def compile_files(dir):
|
|
print "Compiling", dir
|
|
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:
|
|
compile(source)
|
|
except SyntaxError, err:
|
|
print err
|
|
continue
|
|
# make sure the .pyc file is not over-written
|
|
os.chmod(source + "c", 444)
|
|
else:
|
|
path = os.path.join(dir, file)
|
|
if os.path.isdir(path):
|
|
print
|
|
compile_files(path)
|
|
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 -r" % (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()
|