]> granicus.if.org Git - python/commitdiff
run the std regression test suite using bytecode produced by the compiler
authorJeremy Hylton <jeremy@alum.mit.edu>
Fri, 13 Oct 2000 22:00:13 +0000 (22:00 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Fri, 13 Oct 2000 22:00:13 +0000 (22:00 +0000)
Tools/compiler/regrtest.py [new file with mode: 0644]

diff --git a/Tools/compiler/regrtest.py b/Tools/compiler/regrtest.py
new file mode 100644 (file)
index 0000000..fd990a9
--- /dev/null
@@ -0,0 +1,55 @@
+"""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()