from __future__ import print_function
import argparse
import difflib
+import errno
import io
import os
import subprocess
import sys
import tempfile
+# The meson version handles windows paths better, but if it's not available
+# fall back to shlex
+try:
+ from meson.mesonlib import split_args
+except ImportError:
+ from shlex import split as split_args
+
def arg_parser():
parser = argparse.ArgumentParser()
with open(filename, 'rb') as f:
proc = subprocess.Popen(
- [glcpp] + extra_args,
+ glcpp + extra_args,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
stdin=subprocess.PIPE)
os.close(fd)
with open(filename, 'rb') as f:
proc = subprocess.Popen(
- ['valgrind', '--error-exitcode=31', '--log-file', tmpfile, glcpp] + extra_args,
+ ['valgrind', '--error-exitcode=31', '--log-file', tmpfile] + glcpp + extra_args,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
stdin=subprocess.PIPE)
def main():
args = arg_parser()
+ wrapper = os.environ.get('MESON_EXE_WRAPPER')
+ if wrapper is not None:
+ args.glcpp = split_args(wrapper) + [args.glcpp]
+ else:
+ args.glcpp = [args.glcpp]
+
success = True
- if args.unix:
- success = success and test_unix(args)
- if args.windows:
- success = success and test_windows(args)
- if args.oldmac:
- success = success and test_oldmac(args)
- if args.bizarro:
- success = success and test_bizarro(args)
- if args.valgrind:
- success = success and test_valgrind(args)
+ try:
+ if args.unix:
+ success = success and test_unix(args)
+ if args.windows:
+ success = success and test_windows(args)
+ if args.oldmac:
+ success = success and test_oldmac(args)
+ if args.bizarro:
+ success = success and test_bizarro(args)
+ if args.valgrind:
+ success = success and test_valgrind(args)
+ except OSError as e:
+ if e.errno == errno.ENOEXEC:
+ print('Skipping due to inability to run host binaries.',
+ file=sys.stderr)
+ sys.exit(77)
+ raise
exit(0 if success else 1)
import sexps
import lower_jump_cases
+# The meson version handles windows paths better, but if it's not available
+# fall back to shlex
+try:
+ from meson.mesonlib import split_args
+except ImportError:
+ from shlex import split as split_args
+
def arg_parser():
parser = argparse.ArgumentParser()
def get_test_runner(runner):
"""Wrap the test runner in the exe wrapper if necessary."""
- wrapper = os.environ.get('MESON_EXE_WRAPPER', None)
+ wrapper = os.environ.get('MESON_EXE_WRAPPER', None)
if wrapper is None:
return [runner]
- return [wrapper, runner]
+ return split_args(wrapper) + [runner]
def main():
main()
except OSError as e:
if e.errno == errno.ENOEXEC:
- print('Skipping due to lack of exe_wrapper.', file=sys.stderr)
+ print('Skipping due to inability to run host binaries', file=sys.stderr)
sys.exit(77)
- else:
- raise
+ raise
import subprocess
import sys
+# The meson version handles windows paths better, but if it's not available
+# fall back to shlex
+try:
+ from meson.mesonlib import split_args
+except ImportError:
+ from shlex import split as split_args
+
def arg_parser():
parser = argparse.ArgumentParser()
def get_test_runner(runner):
"""Wrap the test runner in the exe wrapper if necessary."""
- wrapper = os.environ.get('MESON_EXE_WRAPPER', None)
+ wrapper = os.environ.get('MESON_EXE_WRAPPER', None)
if wrapper is None:
return [runner]
- return [wrapper, runner]
+ return split_args(wrapper) + [runner]
def main():
main()
except OSError as e:
if e.errno == errno.ENOEXEC:
- print('Skipping due to lack of exe_wrapper.', file=sys.stderr)
+ print('Skipping due to inability to run host binaries', file=sys.stderr)
sys.exit(77)
- else:
- raise
+ raise