Files
python-uncompyle6/test/compile_tests
2015-12-11 18:14:47 -05:00

78 lines
2.2 KiB
Python
Executable File

#!/usr/bin/env python
from __future__ import print_function
"""
compile_tests -- compile test patterns for the decompyle test suite
"""
import py_compile, os, sys, getopt
work_dir = os.path.dirname(sys.argv[0])
src_dir = work_dir
opts, args = getopt.getopt(sys.argv[1:], 's:w:')
for opt, val in opts:
if opt == '-s':
src_dir = val
if opt == '-w':
work_dir = val
else:
raise "Unknown Option '%s'" % opt
if args:
raise 'This tool does not want any arguments'
print("Using files in dir %s" % src_dir)
print("Compiling into dir %s" % work_dir)
tests = {}
tests['1.5'] = ["class", "del", "docstring", 'empty', "exec",
"exceptions", "expressions", "functions", "global",
"globals", "import", "integers", "lambda", "loops",
"misc", "nested_elif", "prettyprint", "print",
'single_stmt', "slices", "tuple_params", 'tuples']
tests['1.6'] = ["applyEquiv", ] + tests['1.5']
tests['2.0'] = ["augmentedAssign", "extendedImport", "extendedPrint",
"import_as", "listComprehensions", 'print_to'] + \
tests['1.6'] # [ "--extendedarg", ]
tests['2.1'] = ['loops2', 'nested_scopes'] + tests['2.0']
tests['2.2'] = ['divide_future', 'divide_no_future', 'iterators',
'yield'] + tests['2.1']
tests['2.3'] = tests['2.2']
tests['2.5'] = tests['2.3']
tests['2.6'] = tests['2.5']
tests['2.7'] = ['mine'] + tests['2.6']
tests['3.4'] = ['mine']
total_tests = len(tests['2.7'])
#tests['2.2'].sort(); print tests['2.2']
extension = '.py' + (__debug__ and 'c' or 'o')
def compile(file, target_dir):
sfile = os.path.join(src_dir, 'test_%s.py' % file)
cfile = os.path.join(target_dir, 'test_%s%s' % (file, extension) )
py_compile.compile(sfile, cfile=cfile)
def compile_for_version(version):
target_dir = os.path.join(work_dir, 'bytecode_' + version)
if not os.path.exists(target_dir):
os.mkdir(target_dir)
for file in tests[version]:
compile(file, target_dir)
try:
version = '%i.%i' % sys.version_info[:2]
except AttributeError:
version = sys.version[:3]
print('Compiling test files for Python', version)
print('(%i/%i files)' % (len(tests[version]), total_tests))
compile_for_version(version)
print('Done.')