blob: bb23636a419c9f1d0cc1e9bae07fb1a19f0aeed9 [file] [log] [blame]
#!/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())