mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			56 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
	
		
			1.4 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 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()
							 |