Index: tools/telemetry/third_party/pyfakefs/pyfakefs/fake_filesystem_shutil.py |
diff --git a/tools/telemetry/third_party/pyfakefs/pyfakefs/fake_filesystem_shutil.py b/tools/telemetry/third_party/pyfakefs/pyfakefs/fake_filesystem_shutil.py |
deleted file mode 100755 |
index 87aff449497c0dcd704b5272df2caadecb07afdc..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/third_party/pyfakefs/pyfakefs/fake_filesystem_shutil.py |
+++ /dev/null |
@@ -1,220 +0,0 @@ |
-#!/usr/bin/env python |
-# |
-# Copyright 2009 Google Inc. All Rights Reserved. |
-# |
-# Licensed under the Apache License, Version 2.0 (the "License"); |
-# you may not use this file except in compliance with the License. |
-# You may obtain a copy of the License at |
-# |
-# http://www.apache.org/licenses/LICENSE-2.0 |
-# |
-# Unless required by applicable law or agreed to in writing, software |
-# distributed under the License is distributed on an "AS IS" BASIS, |
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-# See the License for the specific language governing permissions and |
-# limitations under the License. |
-# |
-# pylint: disable-msg=W0612,W0613,C6409 |
- |
-"""A fake shutil module implementation that uses fake_filesystem for unit tests. |
- |
-Includes: |
- FakeShutil: Uses a FakeFilesystem to provide a fake replacement for the |
- shutil module. |
- |
-Usage: |
->>> import fake_filesystem |
->>> import fake_filesystem_shutil |
->>> filesystem = fake_filesystem.FakeFilesystem() |
->>> shutil_module = fake_filesystem_shutil.FakeShutilModule(filesystem) |
- |
-Copy a fake_filesystem directory tree: |
->>> new_file = filesystem.CreateFile('/src/new-file') |
->>> shutil_module.copytree('/src', '/dst') |
->>> filesystem.Exists('/dst/new-file') |
-True |
- |
-Remove a fake_filesystem directory tree: |
->>> shutil_module.rmtree('/src') |
->>> filesystem.Exists('/src/new-file') |
-False |
-""" |
- |
-import errno |
-import os |
-import shutil |
-import stat |
- |
-__pychecker__ = 'no-reimportself' |
- |
-_PERM_WRITE = 0o200 # Write permission bit. |
-_PERM_READ = 0o400 # Read permission bit. |
-_PERM_ALL = 0o7777 # All permission bits. |
- |
- |
-class FakeShutilModule(object): |
- """Uses a FakeFilesystem to provide a fake replacement for shutil module.""" |
- |
- def __init__(self, filesystem): |
- """Construct fake shutil module using the fake filesystem. |
- |
- Args: |
- filesystem: FakeFilesystem used to provide file system information |
- """ |
- self.filesystem = filesystem |
- self._shutil_module = shutil |
- |
- def rmtree(self, path, ignore_errors=False, onerror=None): |
- """Remove a directory and all its contents. |
- |
- Args: |
- path: (str) Directory tree to remove. |
- ignore_errors: (bool) unimplemented |
- onerror: (func) unimplemented |
- """ |
- self.filesystem.RemoveObject(path) |
- |
- def copy(self, src, dst): |
- """Copy data and mode bits ("cp src dst"). |
- |
- Args: |
- src: (str) source file |
- dst: (str) destination, may be a directory |
- """ |
- if self.filesystem.Exists(dst): |
- if stat.S_ISDIR(self.filesystem.GetObject(dst).st_mode): |
- dst = self.filesystem.JoinPaths(dst, os.path.basename(src)) |
- self.copyfile(src, dst) |
- src_object = self.filesystem.GetObject(src) |
- dst_object = self.filesystem.GetObject(dst) |
- dst_object.st_mode = ((dst_object.st_mode & ~_PERM_ALL) | |
- (src_object.st_mode & _PERM_ALL)) |
- |
- def copyfile(self, src, dst): |
- """Copy data from src to dst. |
- |
- Args: |
- src: (str) source file |
- dst: (dst) destination file |
- |
- Raises: |
- IOError: if the file can't be copied |
- shutil.Error: if the src and dst files are the same |
- """ |
- src_file_object = self.filesystem.GetObject(src) |
- if not src_file_object.st_mode & _PERM_READ: |
- raise IOError(errno.EACCES, 'Permission denied', src) |
- if stat.S_ISDIR(src_file_object.st_mode): |
- raise IOError(errno.EISDIR, 'Is a directory', src) |
- |
- dst_dir = os.path.dirname(dst) |
- if dst_dir: |
- if not self.filesystem.Exists(dst_dir): |
- raise IOError(errno.ENOTDIR, 'Not a directory', dst) |
- dst_dir_object = self.filesystem.GetObject(dst_dir) |
- if not dst_dir_object.st_mode & _PERM_WRITE: |
- raise IOError(errno.EACCES, 'Permission denied', dst_dir) |
- |
- abspath_src = self.filesystem.NormalizePath( |
- self.filesystem.ResolvePath(src)) |
- abspath_dst = self.filesystem.NormalizePath( |
- self.filesystem.ResolvePath(dst)) |
- if abspath_src == abspath_dst: |
- raise shutil.Error('`%s` and `%s` are the same file' % (src, dst)) |
- |
- if self.filesystem.Exists(dst): |
- dst_file_object = self.filesystem.GetObject(dst) |
- if stat.S_ISDIR(dst_file_object.st_mode): |
- raise IOError(errno.EISDIR, 'Is a directory', dst) |
- if not dst_file_object.st_mode & _PERM_WRITE: |
- raise IOError(errno.EACCES, 'Permission denied', dst) |
- dst_file_object.SetContents(src_file_object.contents) |
- |
- else: |
- self.filesystem.CreateFile(dst, contents=src_file_object.contents) |
- |
- def copystat(self, src, dst): |
- """Copy all stat info (mode bits, atime, and mtime) from src to dst. |
- |
- Args: |
- src: (str) source file |
- dst: (str) destination file |
- """ |
- src_object = self.filesystem.GetObject(src) |
- dst_object = self.filesystem.GetObject(dst) |
- dst_object.st_mode = ((dst_object.st_mode & ~_PERM_ALL) | |
- (src_object.st_mode & _PERM_ALL)) |
- dst_object.st_uid = src_object.st_uid |
- dst_object.st_gid = src_object.st_gid |
- dst_object.st_atime = src_object.st_atime |
- dst_object.st_mtime = src_object.st_mtime |
- |
- def copy2(self, src, dst): |
- """Copy data and all stat info ("cp -p src dst"). |
- |
- Args: |
- src: (str) source file |
- dst: (str) destination, may be a directory |
- """ |
- if self.filesystem.Exists(dst): |
- if stat.S_ISDIR(self.filesystem.GetObject(dst).st_mode): |
- dst = self.filesystem.JoinPaths(dst, os.path.basename(src)) |
- self.copyfile(src, dst) |
- self.copystat(src, dst) |
- |
- def copytree(self, src, dst, symlinks=False): |
- """Recursively copy a directory tree. |
- |
- Args: |
- src: (str) source directory |
- dst: (str) destination directory, must not already exist |
- symlinks: (bool) copy symlinks as symlinks instead of copying the |
- contents of the linked files. Currently unused. |
- |
- Raises: |
- OSError: if src is missing or isn't a directory |
- """ |
- self.filesystem.CreateDirectory(dst) |
- try: |
- directory = self.filesystem.GetObject(src) |
- except IOError as e: |
- raise OSError(e.errno, e.message) |
- if not stat.S_ISDIR(directory.st_mode): |
- raise OSError(errno.ENOTDIR, |
- 'Fake os module: %r not a directory' % src) |
- for name in directory.contents: |
- srcname = self.filesystem.JoinPaths(src, name) |
- dstname = self.filesystem.JoinPaths(dst, name) |
- src_mode = self.filesystem.GetObject(srcname).st_mode |
- if stat.S_ISDIR(src_mode): |
- self.copytree(srcname, dstname, symlinks) |
- else: |
- self.copy2(srcname, dstname) |
- |
- def move(self, src, dst): |
- """Rename a file or directory. |
- |
- Args: |
- src: (str) source file or directory |
- dst: (str) if the src is a directory, the dst must not already exist |
- """ |
- if stat.S_ISDIR(self.filesystem.GetObject(src).st_mode): |
- self.copytree(src, dst, symlinks=True) |
- else: |
- self.copy2(src, dst) |
- self.filesystem.RemoveObject(src) |
- |
- def __getattr__(self, name): |
- """Forwards any non-faked calls to the standard shutil module.""" |
- return getattr(self._shutil_module, name) |
- |
- |
-def _RunDoctest(): |
- # pylint: disable-msg=C6111,C6204,W0406 |
- import doctest |
- import fake_filesystem_shutil |
- return doctest.testmod(fake_filesystem_shutil) |
- |
- |
-if __name__ == '__main__': |
- _RunDoctest() |