diff options
author | Dylan Baker <[email protected]> | 2019-10-07 13:03:58 -0700 |
---|---|---|
committer | Dylan Baker <[email protected]> | 2019-10-10 16:33:05 -0700 |
commit | 638868bbff5fca0263df3d8fa400f980fb738e10 (patch) | |
tree | 6cde0c566a633e4cfecddc87059a51460ea6329d /src | |
parent | 1bf5e5a011a53cdb561eb2d66163c05aacba7a2c (diff) |
glsl/tests: Handle no-exec errors
Currently meson doesn't correctly handle passing compiled binaries to
scripts in tests. This patch looks to the future (0.53) when meson will
have this functionality, but also immediately it fixes these tests in
cross compiles by causing them to return 77, which meson interprets as
skip.
Acked-by: Kristian H. Kristensen <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/glsl/tests/optimization_test.py | 23 | ||||
-rw-r--r-- | src/compiler/glsl/tests/warnings_test.py | 23 |
2 files changed, 42 insertions, 4 deletions
diff --git a/src/compiler/glsl/tests/optimization_test.py b/src/compiler/glsl/tests/optimization_test.py index 15ca3216f40..a02dcd31a05 100644 --- a/src/compiler/glsl/tests/optimization_test.py +++ b/src/compiler/glsl/tests/optimization_test.py @@ -24,6 +24,8 @@ from __future__ import print_function import argparse import difflib +import errno +import os import subprocess import sys @@ -54,6 +56,14 @@ def compare(actual, expected): return difflib.unified_diff(expected.splitlines(), actual.splitlines()) +def get_test_runner(runner): + """Wrap the test runner in the exe wrapper if necessary.""" + wrapper = os.environ.get('MESON_EXE_WRAPPER', None) + if wrapper is None: + return [runner] + return [wrapper, runner] + + def main(): """Generate each test and report pass or fail.""" args = arg_parser() @@ -61,12 +71,14 @@ def main(): total = 0 passes = 0 + runner = get_test_runner(args.test_runner) + for gen in lower_jump_cases.CASES: for name, opt, source, expected in gen(): total += 1 print('{}: '.format(name), end='') proc = subprocess.Popen( - [args.test_runner, 'optpass', '--quiet', '--input-ir', opt], + runner + ['optpass', '--quiet', '--input-ir', opt], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) @@ -93,4 +105,11 @@ def main(): if __name__ == '__main__': - main() + try: + main() + except OSError as e: + if e.errno == errno.ENOEXEC: + print('Skipping due to lack of exe_wrapper.', file=sys.stderr) + sys.exit(77) + else: + raise diff --git a/src/compiler/glsl/tests/warnings_test.py b/src/compiler/glsl/tests/warnings_test.py index 2c4fa5a0d5a..ed0774880d3 100644 --- a/src/compiler/glsl/tests/warnings_test.py +++ b/src/compiler/glsl/tests/warnings_test.py @@ -21,8 +21,10 @@ from __future__ import print_function import argparse +import errno import os import subprocess +import sys def arg_parser(): @@ -38,6 +40,14 @@ def arg_parser(): return parser.parse_args() +def get_test_runner(runner): + """Wrap the test runner in the exe wrapper if necessary.""" + wrapper = os.environ.get('MESON_EXE_WRAPPER', None) + if wrapper is None: + return [runner] + return [wrapper, runner] + + def main(): args = arg_parser() files = [f for f in os.listdir(args.test_directory) if f.endswith('.vert')] @@ -47,6 +57,8 @@ def main(): print('Could not find any tests') exit(1) + runner = get_test_runner(args.glsl_compiler) + print('====== Testing compilation output ======') for file in files: print('Testing {} ...'.format(file), end='') @@ -56,7 +68,7 @@ def main(): expected = f.read().strip() actual = subprocess.check_output( - [args.glsl_compiler, '--just-log', '--version', '150', file] + runner + ['--just-log', '--version', '150', file] ).strip() if actual == expected: @@ -70,4 +82,11 @@ def main(): if __name__ == '__main__': - main() + try: + main() + except OSError as e: + if e.errno == errno.ENOEXEC: + print('Skipping due to lack of exe_wrapper.', file=sys.stderr) + sys.exit(77) + else: + raise |