diff options
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/compiler/glsl/glcpp/tests/glcpp_test.py | 45 | ||||
-rw-r--r-- | src/compiler/glsl/tests/optimization_test.py | 16 | ||||
-rw-r--r-- | src/compiler/glsl/tests/warnings_test.py | 16 |
4 files changed, 56 insertions, 23 deletions
diff --git a/.pick_status.json b/.pick_status.json index 2edb04414f6..cf3a2787318 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -67,7 +67,7 @@ "description": "tests: Make tests aware of meson test wrapper", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/compiler/glsl/glcpp/tests/glcpp_test.py b/src/compiler/glsl/glcpp/tests/glcpp_test.py index b024300522f..c11a7c2105b 100644 --- a/src/compiler/glsl/glcpp/tests/glcpp_test.py +++ b/src/compiler/glsl/glcpp/tests/glcpp_test.py @@ -24,12 +24,20 @@ 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() @@ -61,7 +69,7 @@ def test_output(glcpp, filename, expfile, nl_format='\n'): with open(filename, 'rb') as f: proc = subprocess.Popen( - [glcpp] + extra_args, + glcpp + extra_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE) @@ -85,7 +93,7 @@ def _valgrind(glcpp, filename): 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) @@ -216,17 +224,30 @@ def test_valgrind(args): 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) diff --git a/src/compiler/glsl/tests/optimization_test.py b/src/compiler/glsl/tests/optimization_test.py index a02dcd31a05..a413370a5e7 100644 --- a/src/compiler/glsl/tests/optimization_test.py +++ b/src/compiler/glsl/tests/optimization_test.py @@ -32,6 +32,13 @@ import sys 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() @@ -58,10 +65,10 @@ def compare(actual, expected): 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(): @@ -109,7 +116,6 @@ if __name__ == '__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 diff --git a/src/compiler/glsl/tests/warnings_test.py b/src/compiler/glsl/tests/warnings_test.py index 6cd3fbf294f..e587bc9ba2d 100644 --- a/src/compiler/glsl/tests/warnings_test.py +++ b/src/compiler/glsl/tests/warnings_test.py @@ -26,6 +26,13 @@ import os 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() @@ -42,10 +49,10 @@ def arg_parser(): 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(): @@ -86,7 +93,6 @@ if __name__ == '__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 |