12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/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())
|