|  | #!/usr/bin/env python | 
|  | # Copyright 2015 The Chromium 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 sys | 
|  | import subprocess | 
|  | import argparse | 
|  |  | 
|  | FLUTTER_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | 
|  | FLUTTER = os.path.join(FLUTTER_ROOT, 'bin', 'flutter') | 
|  |  | 
|  | UNIT_DIR = os.path.join(FLUTTER_ROOT, 'packages', 'unit') | 
|  | TESTS_DIR = os.path.join(UNIT_DIR, 'test') | 
|  | DEFAULT_ENGINE_DIR = os.path.abspath(os.path.join(FLUTTER_ROOT, '..', 'engine', 'src')) | 
|  |  | 
|  | def main(): | 
|  | parser = argparse.ArgumentParser(description='Runs Flutter unit tests') | 
|  | parser.add_argument('--engine-dir', default=DEFAULT_ENGINE_DIR) | 
|  | parser.add_argument('--config', default='Debug') | 
|  | parser.add_argument('--debug', dest='config', action='store_const', const='Debug') | 
|  | parser.add_argument('--release', dest='config', action='store_const', const='Release') | 
|  | args, remaining = parser.parse_known_args() | 
|  |  | 
|  | build_dir = os.path.join(os.path.abspath(args.engine_dir), 'out', args.config) | 
|  |  | 
|  | if not remaining: | 
|  | for root, dirs, files in os.walk(TESTS_DIR): | 
|  | remaining.extend(os.path.join(root, f) | 
|  | for f in files if f.endswith("_test.dart")) | 
|  |  | 
|  | if os.environ['TERM'] == 'dumb': | 
|  | remaining = [ '--no-color' ] + remaining | 
|  |  | 
|  | return subprocess.call([ | 
|  | FLUTTER, | 
|  | 'test', | 
|  | '--build-dir=%s' % build_dir | 
|  | ] + remaining, cwd=UNIT_DIR) | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(main()) |