910e62b5创建于 1月15日历史提交
# Copyright 2015 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import contextlib
import os
import sys


@contextlib.contextmanager
def SysPath(path, position=None):
  if position is None:
    sys.path.append(path)
  else:
    sys.path.insert(position, path)
  try:
    yield
  finally:
    if sys.path[-1] == path:
      sys.path.pop()
    else:
      sys.path.remove(path)


def GetChromiumSrcDir():
  return os.path.abspath(os.path.join(
      os.path.dirname(__file__), '..', '..', '..'))


def GetAndroidDeviceInteractionToPath():
  return os.path.join(GetChromiumSrcDir(), 'third_party', 'catapult', 'devil')


def GetBuildUtilDir():
  return os.path.join(GetChromiumSrcDir(), 'build', 'util')


def GetTelemetryDir():
  return os.path.join(
      GetChromiumSrcDir(), 'third_party', 'catapult', 'telemetry')


def GetTracingDir():
  return os.path.join(
      GetChromiumSrcDir(), 'third_party', 'catapult', 'tracing')


def GetPyUtilsDir():
  return os.path.join(
      GetChromiumSrcDir(), 'third_party', 'catapult', 'common', 'py_utils')


def GetCrossBenchDir():
  return os.path.join(GetChromiumSrcDir(), 'third_party', 'crossbench')


def GetPerfDir():
  return os.path.join(GetChromiumSrcDir(), 'tools', 'perf')


def GetPerfStorySetsDir():
  return os.path.join(GetPerfDir(), 'page_sets')


def GetOfficialBenchmarksDir():
  return os.path.join(GetPerfDir(), 'benchmarks')


def GetContribDir():
  return os.path.join(GetPerfDir(), 'contrib')


def GetAndroidPylibDir():
  return os.path.join(GetChromiumSrcDir(), 'build', 'android')


def GetVariationsDir():
  return os.path.join(GetChromiumSrcDir(), 'tools', 'variations')


def GetDashboardDir():
  return os.path.join(GetChromiumSrcDir(), 'third_party', 'catapult',
                      'dashboard')

def AddAndroidDeviceInteractionToPath():
  device_interaction_path = GetAndroidDeviceInteractionToPath()
  if device_interaction_path not in sys.path:
    sys.path.insert(1, device_interaction_path)


def AddBuildUtilToPath():
  build_util_path = GetBuildUtilDir()
  if build_util_path not in sys.path:
    sys.path.insert(1, build_util_path)


def AddTelemetryToPath():
  telemetry_path = GetTelemetryDir()
  if telemetry_path not in sys.path:
    sys.path.insert(1, telemetry_path)


def AddTracingToPath():
  tracing_path = GetTracingDir()
  if tracing_path not in sys.path:
    sys.path.insert(1, tracing_path)


def AddPyUtilsToPath():
  py_utils_dir = GetPyUtilsDir()
  if py_utils_dir not in sys.path:
    sys.path.insert(1, py_utils_dir)


def AddAndroidPylibToPath():
  android_pylib_path = GetAndroidPylibDir()
  if android_pylib_path not in sys.path:
    sys.path.insert(1, android_pylib_path)


def AddDashboardToPath():
  dashboard_path = GetDashboardDir()
  if dashboard_path not in sys.path:
    sys.path.insert(1, dashboard_path)

def GetExpectationsPath():
  return os.path.join(GetPerfDir(), 'expectations.config')