diff options
Diffstat (limited to '')
-rwxr-xr-x | run_cross_test.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/run_cross_test.py b/run_cross_test.py new file mode 100755 index 0000000..bafdbb6 --- /dev/null +++ b/run_cross_test.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 + +# Copyright 2013-2016 The Meson development team + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +'''Runs the basic test suite through a cross compiler. + +This is now just a wrapper around run_project_tests.py with specific arguments +''' + +import argparse +import subprocess +from mesonbuild import mesonlib +from mesonbuild.coredata import version as meson_version +from pathlib import Path +import json +import os + + +def runtests(cross_file, failfast, cross_only, test_list, env=None): + tests = ['--only'] + test_list + if not cross_only: + tests.append('native') + cmd = mesonlib.python_command + ['run_project_tests.py', '--backend', 'ninja'] + if failfast: + cmd += ['--failfast'] + cmd += tests + cmd += ['--cross-file', cross_file] + if cross_only: + cmd += ['--native-file', 'cross/none.txt'] + return subprocess.call(cmd, env=env) + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--failfast', action='store_true') + parser.add_argument('--cross-only', action='store_true') + parser.add_argument('cross_file') + options = parser.parse_args() + cf_path = Path(options.cross_file) + try: + data = json.loads(cf_path.read_text(encoding='utf-8')) + real_cf = cf_path.resolve().parent / data['file'] + assert real_cf.exists() + env = os.environ.copy() + env.update(data['env']) + return runtests(real_cf.as_posix(), options.failfast, options.cross_only, data['tests'], env=env) + except Exception: + return runtests(options.cross_file, options.failfast, options.cross_only, ['common']) + +if __name__ == '__main__': + print('Meson build system', meson_version, 'Cross Tests') + raise SystemExit(main()) |