#!/usr/bin/env python3 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file # for details. All rights reserved. Use of this source code is governed by a # BSD-style license that can be found in the LICENSE file. from contextlib import ExitStack import os import string import subprocess import sys import utils def Main(): args = sys.argv[1:] cleanup_dart = False if '--cleanup-dart-processes' in args: args.remove('--cleanup-dart-processes') cleanup_dart = True tools_dir = os.path.dirname(os.path.realpath(__file__)) repo_dir = os.path.dirname(tools_dir) dart_test_script = os.path.join(repo_dir, 'pkg', 'test_runner', 'bin', 'test_runner.dart') command = [utils.CheckedInSdkExecutable(), dart_test_script] + args # The testing script potentially needs the android platform tools in PATH so # we do that in ./tools/test.py (a similar logic exists in ./tools/build.py). android_platform_tools = os.path.normpath( os.path.join(tools_dir, '../third_party/android_tools/sdk/platform-tools')) if os.path.isdir(android_platform_tools): os.environ['PATH'] = '%s%s%s' % (os.environ['PATH'], os.pathsep, android_platform_tools) with utils.FileDescriptorLimitIncreaser(): with ExitStack() as stack: for ctx in utils.CoreDumpArchiver(args): stack.enter_context(ctx) exit_code = subprocess.call(command) if cleanup_dart: cleanup_command = [ sys.executable, os.path.join(tools_dir, 'task_kill.py'), '--kill_dart=True', '--kill_vc=False' ] subprocess.call(cleanup_command) utils.DiagnoseExitCode(exit_code, command) return exit_code if __name__ == '__main__': sys.exit(Main())