| Index: tools/telemetry/telemetry/system_stub.py | 
| diff --git a/tools/telemetry/telemetry/system_stub.py b/tools/telemetry/telemetry/system_stub.py | 
| deleted file mode 100644 | 
| index 42078444e744b0e788d3fa522af26b6cd2a405ef..0000000000000000000000000000000000000000 | 
| --- a/tools/telemetry/telemetry/system_stub.py | 
| +++ /dev/null | 
| @@ -1,157 +0,0 @@ | 
| -# Copyright (c) 2012 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. | 
| -"""Provides stubs for os, sys and subprocess for testing | 
| - | 
| -This test allows one to test code that itself uses os, sys, and subprocess. | 
| -""" | 
| - | 
| -import os | 
| -import re | 
| -import shlex | 
| -import sys as real_sys | 
| - | 
| -class Override(object): | 
| -  def __init__(self, base_module, module_list): | 
| -    stubs = {'adb_commands': AdbCommandsModuleStub, | 
| -             'os': OsModuleStub, | 
| -             'subprocess': SubprocessModuleStub, | 
| -             'sys': SysModuleStub, | 
| -    } | 
| -    self.adb_commands = None | 
| -    self.os = None | 
| -    self.subprocess = None | 
| -    self.sys = None | 
| - | 
| -    self._base_module = base_module | 
| -    self._overrides = {} | 
| - | 
| -    for module_name in module_list: | 
| -      self._overrides[module_name] = getattr(base_module, module_name) | 
| -      setattr(self, module_name, stubs[module_name]()) | 
| -      setattr(base_module, module_name, getattr(self, module_name)) | 
| - | 
| -    if self.os and self.sys: | 
| -      self.os.path.sys = self.sys | 
| - | 
| -  def __del__(self): | 
| -    assert not len(self._overrides) | 
| - | 
| -  def Restore(self): | 
| -    for module_name, original_module in self._overrides.iteritems(): | 
| -      setattr(self._base_module, module_name, original_module) | 
| -    self._overrides = {} | 
| - | 
| -class AdbCommandsModuleStub(object): | 
| -# adb not even found | 
| -# android_browser_finder not returning | 
| -  class AdbCommandsStub(object): | 
| -    def __init__(self, module, device): | 
| -      self._module = module | 
| -      self._device = device | 
| -      self.is_root_enabled = True | 
| - | 
| -    def RunShellCommand(self, args): | 
| -      if isinstance(args, basestring): | 
| -        args = shlex.split(args) | 
| -      handler = self._module.shell_command_handlers[args[0]] | 
| -      return handler(args) | 
| - | 
| -    def IsRootEnabled(self): | 
| -      return self.is_root_enabled | 
| - | 
| -  def __init__(self): | 
| -    self.attached_devices = [] | 
| -    self.shell_command_handlers = {} | 
| - | 
| -    def AdbCommandsStubConstructor(device=None): | 
| -      return AdbCommandsModuleStub.AdbCommandsStub(self, device) | 
| -    self.AdbCommands = AdbCommandsStubConstructor | 
| - | 
| -  @staticmethod | 
| -  def IsAndroidSupported(): | 
| -    return True | 
| - | 
| -  def GetAttachedDevices(self): | 
| -    return self.attached_devices | 
| - | 
| -  @staticmethod | 
| -  def HasForwarder(_=None): | 
| -    return True | 
| - | 
| -class OsModuleStub(object): | 
| -  class OsPathModuleStub(object): | 
| -    def __init__(self, sys_module): | 
| -      self.sys = sys_module | 
| -      self.files = [] | 
| - | 
| -    def exists(self, path): | 
| -      return path in self.files | 
| - | 
| -    def join(self, *paths): | 
| -      def IsAbsolutePath(path): | 
| -        if self.sys.platform.startswith('win'): | 
| -          return re.match('[a-zA-Z]:\\\\', path) | 
| -        else: | 
| -          return path.startswith('/') | 
| - | 
| -      # Per Python specification, if any component is an absolute path, | 
| -      # discard previous components. | 
| -      for index, path in reversed(list(enumerate(paths))): | 
| -        if IsAbsolutePath(path): | 
| -          paths = paths[index:] | 
| -          break | 
| - | 
| -      if self.sys.platform.startswith('win'): | 
| -        tmp = os.path.join(*paths) | 
| -        return tmp.replace('/', '\\') | 
| -      else: | 
| -        tmp = os.path.join(*paths) | 
| -        return tmp.replace('\\', '/') | 
| - | 
| -    def expanduser(self, filename): | 
| -      return os.path.expanduser(filename) | 
| - | 
| -    def dirname(self, filename): # pylint: disable=R0201 | 
| -      return os.path.dirname(filename) | 
| - | 
| -  def __init__(self, sys_module=real_sys): | 
| -    self.path = OsModuleStub.OsPathModuleStub(sys_module) | 
| -    self.display = ':0' | 
| -    self.local_app_data = None | 
| -    self.program_files = None | 
| -    self.program_files_x86 = None | 
| -    self.devnull = os.devnull | 
| - | 
| -  def getenv(self, name): | 
| -    if name == 'DISPLAY': | 
| -      return self.display | 
| -    elif name == 'LOCALAPPDATA': | 
| -      return self.local_app_data | 
| -    elif name == 'PROGRAMFILES': | 
| -      return self.program_files | 
| -    elif name == 'PROGRAMFILES(X86)': | 
| -      return self.program_files_x86 | 
| -    raise Exception('Unsupported getenv') | 
| - | 
| -class SubprocessModuleStub(object): | 
| -  class PopenStub(object): | 
| -    def __init__(self): | 
| -      self.communicate_result = ('', '') | 
| - | 
| -    def __call__(self, args, **kwargs): | 
| -      return self | 
| - | 
| -    def communicate(self): | 
| -      return self.communicate_result | 
| - | 
| -  def __init__(self): | 
| -    self.Popen = SubprocessModuleStub.PopenStub() | 
| -    self.PIPE = None | 
| - | 
| -  def call(self, *args, **kwargs): | 
| -    raise NotImplementedError() | 
| - | 
| -class SysModuleStub(object): | 
| -  def __init__(self): | 
| -    self.platform = '' | 
|  |