blob: be80ea4fc9874cb0787f775c640d401eb0a198bf [file] [log] [blame] [edit]
import os
import sys
import lit.formats
config.name = "Binaryen lit tests"
config.test_format = lit.formats.ShTest()
config.suffixes = ['.wat', '.wast', '.test']
config.test_source_root = os.path.dirname(__file__)
config.test_exec_root = os.path.join(config.binaryen_build_root, 'out', 'test')
config.environment = dict(os.environ)
# Replace all Binaryen tools with their absolute paths
bin_dir = os.path.join(config.binaryen_build_root, 'bin')
assert(os.path.isdir(bin_dir))
for tool_file in os.listdir(bin_dir):
tool_path = config.binaryen_build_root + '/bin/' + tool_file
tool = tool_file[:-4] if tool_file.endswith('.exe') else tool_file
config.substitutions.append((tool, tool_path))
# Also make the `not` and `foreach` commands available
for tool in ('not', 'foreach'):
tool_file = config.binaryen_src_root + '/scripts/' + tool + '.py'
python = sys.executable.replace('\\', '/')
config.substitutions.append((tool, python + ' ' + tool_file))
if 'linux' in sys.platform:
config.available_features.add('linux')
# Finds the given executable 'program' in PATH.
# Operates like the Unix tool 'which'.
# This is similar to script/test/shared.py, but does not use binaryen_root, and
# instead is tuned to jsvu's install dir.
def which(program):
def is_exe(fpath):
return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
fpath, fname = os.path.split(program)
if fpath:
if is_exe(program):
return program
else:
# Prefer the path, or jsvu's install dir.
paths = os.environ['PATH'].split(os.pathsep) + [
os.path.expanduser('~/.jsvu/bin'),
]
for path in paths:
path = path.strip('"')
exe_file = os.path.join(path, program)
if is_exe(exe_file):
return exe_file
if '.' not in fname:
if is_exe(exe_file + '.exe'):
return exe_file + '.exe'
if is_exe(exe_file + '.cmd'):
return exe_file + '.cmd'
if is_exe(exe_file + '.bat'):
return exe_file + '.bat'
# v8 may be provided by jsvu, or it may be "d8". It may also not exist at all,
# in which case the relevant lit tests should be skipped.
V8 = os.environ.get('V8') or which('v8') or which('d8')
if V8:
config.substitutions.append(('v8', V8))