Index: tracing/third_party/tvcm/tvcm/fake_fs.py |
diff --git a/tracing/third_party/tvcm/tvcm/fake_fs.py b/tracing/third_party/tvcm/tvcm/fake_fs.py |
deleted file mode 100644 |
index 965cb8b08b87257416a8a8daa41a385d2d77698e..0000000000000000000000000000000000000000 |
--- a/tracing/third_party/tvcm/tvcm/fake_fs.py |
+++ /dev/null |
@@ -1,147 +0,0 @@ |
-# Copyright 2014 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 codecs |
-import os |
-import sys |
-import collections |
-import StringIO |
- |
- |
-class WithableStringIO(StringIO.StringIO): |
- |
- def __enter__(self, *args): |
- return self |
- |
- def __exit__(self, *args): |
- pass |
- |
- |
-class FakeFS(object): |
- |
- def __init__(self, initial_filenames_and_contents=None): |
- self._file_contents = {} |
- if initial_filenames_and_contents: |
- for k, v in initial_filenames_and_contents.iteritems(): |
- self._file_contents[k] = v |
- |
- self._bound = False |
- self._real_codecs_open = codecs.open |
- self._real_open = sys.modules['__builtin__'].open |
- self._real_abspath = os.path.abspath |
- self._real_exists = os.path.exists |
- self._real_walk = os.walk |
- self._real_listdir = os.listdir |
- |
- def __enter__(self): |
- self.Bind() |
- return self |
- |
- def __exit__(self, *args): |
- self.Unbind() |
- |
- def Bind(self): |
- assert not self._bound |
- codecs.open = self._FakeCodecsOpen |
- sys.modules['__builtin__'].open = self._FakeOpen |
- os.path.abspath = self._FakeAbspath |
- os.path.exists = self._FakeExists |
- os.walk = self._FakeWalk |
- os.listdir = self._FakeListDir |
- self._bound = True |
- |
- def Unbind(self): |
- assert self._bound |
- codecs.open = self._real_codecs_open |
- sys.modules['__builtin__'].open = self._real_open |
- os.path.abspath = self._real_abspath |
- os.path.exists = self._real_exists |
- os.walk = self._real_walk |
- os.listdir = self._real_listdir |
- self._bound = False |
- |
- def AddFile(self, path, contents): |
- assert path not in self._file_contents |
- path = os.path.normpath(path) |
- self._file_contents[path] = contents |
- |
- def _FakeOpen(self, path, mode=None): |
- if mode is None: |
- mode = 'r' |
- if mode == 'r' or mode == 'rU' or mode == 'rb': |
- if path not in self._file_contents: |
- return self._real_open(path, mode) |
- return WithableStringIO(self._file_contents[path]) |
- |
- raise NotImplementedError() |
- |
- def _FakeCodecsOpen(self, path, mode=None, |
- encoding=None): # pylint: disable=unused-argument |
- if mode is None: |
- mode = 'r' |
- if mode == 'r' or mode == 'rU' or mode == 'rb': |
- if path not in self._file_contents: |
- return self._real_open(path, mode) |
- return WithableStringIO(self._file_contents[path]) |
- |
- raise NotImplementedError() |
- |
- def _FakeAbspath(self, path): |
- """Normalize the path and ensure it starts with os.path.sep. |
- |
- The tests all assume paths start with things like '/my/project', |
- and this abspath implementaion makes that assumption work correctly |
- on Windows. |
- """ |
- normpath = os.path.normpath(path) |
- if not normpath.startswith(os.path.sep): |
- normpath = os.path.sep + normpath |
- return normpath |
- |
- def _FakeExists(self, path): |
- if path in self._file_contents: |
- return True |
- return self._real_exists(path) |
- |
- def _FakeWalk(self, top): |
- assert os.path.isabs(top) |
- all_filenames = self._file_contents.keys() |
- pending_prefixes = collections.deque() |
- pending_prefixes.append(top) |
- visited_prefixes = set() |
- while len(pending_prefixes): |
- prefix = pending_prefixes.popleft() |
- if prefix in visited_prefixes: |
- continue |
- visited_prefixes.add(prefix) |
- if prefix.endswith(os.path.sep): |
- prefix_with_trailing_sep = prefix |
- else: |
- prefix_with_trailing_sep = prefix + os.path.sep |
- |
- dirs = set() |
- files = [] |
- for filename in all_filenames: |
- if not filename.startswith(prefix_with_trailing_sep): |
- continue |
- relative_to_prefix = os.path.relpath(filename, prefix) |
- |
- dirpart = os.path.dirname(relative_to_prefix) |
- if len(dirpart) == 0: |
- files.append(relative_to_prefix) |
- continue |
- parts = dirpart.split(os.sep) |
- if len(parts) == 0: |
- dirs.add(dirpart) |
- else: |
- pending = os.path.join(prefix, parts[0]) |
- dirs.add(parts[0]) |
- pending_prefixes.appendleft(pending) |
- |
- dirs = list(dirs) |
- dirs.sort() |
- yield prefix, dirs, files |
- |
- def _FakeListDir(self, dirname): |
- raise NotImplementedError() |