1# Copyright 2016 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4import os
5import subprocess
6import sys
7
8from telemetry.core import util
9
10
11def Run(project_config, args):
12  assert '--top-level-dir' not in args, (
13      'Top level directory for running tests should be specified through '
14      'the instance of telemetry.project_config.ProjectConfig.')
15  assert '--client-config' not in args, (
16      'Client config file to be used for telemetry should be specified through '
17      'the instance of telemetry.project_config.ProjectConfig.')
18  assert project_config.top_level_dir, 'Must specify top level dir for project'
19  args.extend(['--top-level-dir', project_config.top_level_dir])
20  for c in project_config.client_configs:
21    args.extend(['--client-config', c])
22  for s in project_config.start_dirs:
23    args.extend(['--start-dir', s])
24
25  if project_config.default_chrome_root and not '--chrome-root' in args:
26    args.extend(['--chrome-root', project_config.default_chrome_root])
27
28  env = os.environ.copy()
29  telemetry_dir = util.GetTelemetryDir()
30  if 'PYTHONPATH' in env:
31    env['PYTHONPATH'] = os.pathsep.join([env['PYTHONPATH'], telemetry_dir])
32  else:
33    env['PYTHONPATH'] = telemetry_dir
34
35  path_to_run_tests = os.path.join(os.path.abspath(os.path.dirname(__file__)),
36                                   'run_browser_tests.py')
37  return subprocess.call([sys.executable, path_to_run_tests] + args, env=env)
38