mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 2a8ec79353
			
		
	
	
		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.
		
			
				
	
	
		
			74 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			2 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()
 |