| #!/usr/bin/env python3 | |
| # Copyright (c) 2013, the Flutter project authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be found | |
| # in the LICENSE file. | |
| import os | |
| import platform | |
| import subprocess | |
| import sys | |
| sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'test_scripts/test/'))) | |
| from common import catch_sigterm, wait_for_sigterm | |
| def Main(): | |
| """ | |
| Executes the test-scripts with required environment variables. It acts like | |
| /usr/bin/env, but provides some extra functionality to dynamically set up | |
| the environment variables. | |
| """ | |
| # Ensures the signals can be correctly forwarded to the subprocesses. | |
| catch_sigterm() | |
| os.environ['SRC_ROOT'] = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../')) | |
| # Flutter uses a different repo structure and fuchsia sdk is not in the | |
| # third_party/, so images root and sdk root need to be explicitly set. | |
| os.environ['FUCHSIA_IMAGES_ROOT'] = os.path.join(os.environ['SRC_ROOT'], 'fuchsia/images/') | |
| assert platform.system() == 'Linux', 'Unsupported OS ' + platform.system() | |
| os.environ['FUCHSIA_SDK_ROOT'] = os.path.join(os.environ['SRC_ROOT'], 'fuchsia/sdk/linux/') | |
| os.environ['FUCHSIA_GN_SDK_ROOT'] = os.path.join( | |
| os.environ['SRC_ROOT'], 'flutter/tools/fuchsia/gn-sdk/src' | |
| ) | |
| if os.getenv('DOWNLOAD_FUCHSIA_SDK') == 'True': | |
| sdk_path = os.environ['FUCHSIA_SDK_PATH'] | |
| assert sdk_path.endswith('/linux-amd64/core.tar.gz') | |
| assert not sdk_path.startswith('/') | |
| os.environ['FUCHSIA_SDK_OVERRIDE' | |
| ] = 'gs://fuchsia-artifacts/' + sdk_path[:-len('/linux-amd64/core.tar.gz')] | |
| with subprocess.Popen(sys.argv[1:]) as proc: | |
| try: | |
| proc.wait() | |
| except: | |
| # Use terminate / SIGTERM to allow the subprocess exiting cleanly. | |
| proc.terminate() | |
| return proc.returncode | |
| if __name__ == '__main__': | |
| sys.exit(Main()) |