| Index: tools/telemetry/third_party/pyfakefs/pyfakefs/fake_tempfile.py
|
| diff --git a/tools/telemetry/third_party/pyfakefs/pyfakefs/fake_tempfile.py b/tools/telemetry/third_party/pyfakefs/pyfakefs/fake_tempfile.py
|
| deleted file mode 100644
|
| index 090425d19fbaf0e3eeec4a9f02ccd363279c044e..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/pyfakefs/pyfakefs/fake_tempfile.py
|
| +++ /dev/null
|
| @@ -1,312 +0,0 @@
|
| -# Copyright 2010 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.
|
| -
|
| -"""Fake tempfile module.
|
| -
|
| -Fake implementation of the python2.4.1 tempfile built-in module that works with
|
| -a FakeFilesystem object.
|
| -"""
|
| -#pylint: disable-all
|
| -
|
| -import errno
|
| -import logging
|
| -import os
|
| -import stat
|
| -import tempfile
|
| -
|
| -import fake_filesystem
|
| -
|
| -try:
|
| - import StringIO as io # pylint: disable-msg=C6204
|
| -except ImportError:
|
| - import io # pylint: disable-msg=C6204
|
| -
|
| -
|
| -class FakeTempfileModule(object):
|
| - """Uses a FakeFilesystem to provide a mock for the tempfile 2.4.1 module.
|
| -
|
| - Common usage:
|
| - filesystem = fake_filesystem.FakeFilesystem()
|
| - my_tempfile_module = mock_tempfile.FakeTempfileModule(filesystem)
|
| -
|
| - See also: default keyword arguments for Dependency Injection on
|
| - http://go/tott-episode-12
|
| - """
|
| -
|
| - def __init__(self, filesystem):
|
| - self._filesystem = filesystem
|
| - self._tempfile = tempfile
|
| - self.tempdir = None # initialized by mktemp(), others
|
| - self._temp_prefix = 'tmp'
|
| - self._mktemp_retvals = []
|
| -
|
| - # pylint: disable-msg=W0622
|
| - def _TempFilename(self, suffix='', prefix=None, dir=None):
|
| - """Create a temporary filename that does not exist.
|
| -
|
| - This is a re-implementation of how tempfile creates random filenames,
|
| - and is probably different.
|
| -
|
| - Does not modify self._filesystem, that's your job.
|
| -
|
| - Output: self.tempdir is initialized if unset
|
| - Args:
|
| - suffix: filename suffix
|
| - prefix: filename prefix
|
| - dir: dir to put filename in
|
| - Returns:
|
| - string, temp filename that does not exist
|
| - """
|
| - if dir is None:
|
| - dir = self._filesystem.JoinPaths(self._filesystem.root.name, 'tmp')
|
| - filename = None
|
| - if prefix is None:
|
| - prefix = self._temp_prefix
|
| - while not filename or self._filesystem.Exists(filename):
|
| - # pylint: disable-msg=W0212
|
| - filename = self._filesystem.JoinPaths(dir, '%s%s%s' % (
|
| - prefix,
|
| - next(self._tempfile._RandomNameSequence()),
|
| - suffix))
|
| - return filename
|
| -
|
| - # pylint: disable-msg=W0622,W0613
|
| - def TemporaryFile(self, mode='w+b', bufsize=-1,
|
| - suffix='', prefix=None, dir=None):
|
| - """Return a file-like object deleted on close().
|
| -
|
| - Python 2.4.1 tempfile.TemporaryFile.__doc__ =
|
| - >Return a file (or file-like) object that can be used as a temporary
|
| - >storage area. The file is created using mkstemp. It will be destroyed as
|
| - >soon as it is closed (including an implicit close when the object is
|
| - >garbage collected). Under Unix, the directory entry for the file is
|
| - >removed immediately after the file is created. Other platforms do not
|
| - >support this; your code should not rely on a temporary file created using
|
| - >this function having or not having a visible name in the file system.
|
| - >
|
| - >The mode parameter defaults to 'w+b' so that the file created can be read
|
| - >and written without being closed. Binary mode is used so that it behaves
|
| - >consistently on all platforms without regard for the data that is stored.
|
| - >bufsize defaults to -1, meaning that the operating system default is used.
|
| - >
|
| - >The dir, prefix and suffix parameters are passed to mkstemp()
|
| -
|
| - Args:
|
| - mode: optional string, see above
|
| - bufsize: optional int, see above
|
| - suffix: optional string, see above
|
| - prefix: optional string, see above
|
| - dir: optional string, see above
|
| - Returns:
|
| - a file-like object.
|
| - """
|
| - # pylint: disable-msg=C6002
|
| - # TODO: prefix, suffix, bufsize, dir, mode unused?
|
| - # cannot be cStringIO due to .name requirement below
|
| - retval = io.StringIO()
|
| - retval.name = '<fdopen>' # as seen on 2.4.3
|
| - return retval
|
| -
|
| - # pylint: disable-msg=W0622,W0613
|
| - def NamedTemporaryFile(self, mode='w+b', bufsize=-1,
|
| - suffix='', prefix=None, dir=None, delete=True):
|
| - """Return a file-like object with name that is deleted on close().
|
| -
|
| - Python 2.4.1 tempfile.NamedTemporaryFile.__doc__ =
|
| - >This function operates exactly as TemporaryFile() does, except that
|
| - >the file is guaranteed to have a visible name in the file system. That
|
| - >name can be retrieved from the name member of the file object.
|
| -
|
| - Args:
|
| - mode: optional string, see above
|
| - bufsize: optional int, see above
|
| - suffix: optional string, see above
|
| - prefix: optional string, see above
|
| - dir: optional string, see above
|
| - delete: optional bool, see above
|
| - Returns:
|
| - a file-like object including obj.name
|
| - """
|
| - # pylint: disable-msg=C6002
|
| - # TODO: bufsiz unused?
|
| - temp = self.mkstemp(suffix=suffix, prefix=prefix, dir=dir)
|
| - filename = temp[1]
|
| - mock_open = fake_filesystem.FakeFileOpen(
|
| - self._filesystem, delete_on_close=delete)
|
| - obj = mock_open(filename, mode)
|
| - obj.name = filename
|
| - return obj
|
| -
|
| - # pylint: disable-msg=C6409
|
| - def mkstemp(self, suffix='', prefix=None, dir=None, text=False):
|
| - """Create temp file, returning a 2-tuple: (9999, filename).
|
| -
|
| - Important: Returns 9999 instead of a real file descriptor!
|
| -
|
| - Python 2.4.1 tempfile.mkstemp.__doc__ =
|
| - >mkstemp([suffix, [prefix, [dir, [text]]]])
|
| - >
|
| - >User-callable function to create and return a unique temporary file.
|
| - >The return value is a pair (fd, name) where fd is the file descriptor
|
| - >returned by os.open, and name is the filename.
|
| - >
|
| - >...[snip args]...
|
| - >
|
| - >The file is readable and writable only by the creating user ID.
|
| - >If the operating system uses permission bits to indicate whether
|
| - >a file is executable, the file is executable by no one. The file
|
| - >descriptor is not inherited by children of this process.
|
| - >
|
| - >Caller is responsible for deleting the file when done with it.
|
| -
|
| - NOTE: if dir is unspecified, this call creates a directory.
|
| -
|
| - Output: self.tempdir is initialized if unset
|
| - Args:
|
| - suffix: optional string, filename suffix
|
| - prefix: optional string, filename prefix
|
| - dir: optional string, directory for temp file; must exist before call
|
| - text: optional boolean, True = open file in text mode.
|
| - default False = open file in binary mode.
|
| - Returns:
|
| - 2-tuple containing
|
| - [0] = int, file descriptor number for the file object
|
| - [1] = string, absolute pathname of a file
|
| - Raises:
|
| - OSError: when dir= is specified but does not exist
|
| - """
|
| - # pylint: disable-msg=C6002
|
| - # TODO: optional boolean text is unused?
|
| - # default dir affected by "global"
|
| - filename = self._TempEntryname(suffix, prefix, dir)
|
| - fh = self._filesystem.CreateFile(filename, st_mode=stat.S_IFREG|0o600)
|
| - fd = self._filesystem.AddOpenFile(fh)
|
| -
|
| - self._mktemp_retvals.append(filename)
|
| - return (fd, filename)
|
| -
|
| - # pylint: disable-msg=C6409
|
| - def mkdtemp(self, suffix='', prefix=None, dir=None):
|
| - """Create temp directory, returns string, absolute pathname.
|
| -
|
| - Python 2.4.1 tempfile.mkdtemp.__doc__ =
|
| - >mkdtemp([suffix[, prefix[, dir]]])
|
| - >Creates a temporary directory in the most secure manner
|
| - >possible. [...]
|
| - >
|
| - >The user of mkdtemp() is responsible for deleting the temporary
|
| - >directory and its contents when done with it.
|
| - > [...]
|
| - >mkdtemp() returns the absolute pathname of the new directory. [...]
|
| -
|
| - Args:
|
| - suffix: optional string, filename suffix
|
| - prefix: optional string, filename prefix
|
| - dir: optional string, directory for temp dir. Must exist before call
|
| - Returns:
|
| - string, directory name
|
| - """
|
| - dirname = self._TempEntryname(suffix, prefix, dir)
|
| - self._filesystem.CreateDirectory(dirname, perm_bits=0o700)
|
| -
|
| - self._mktemp_retvals.append(dirname)
|
| - return dirname
|
| -
|
| - def _TempEntryname(self, suffix, prefix, dir):
|
| - """Helper function for mk[ds]temp.
|
| -
|
| - Args:
|
| - suffix: string, filename suffix
|
| - prefix: string, filename prefix
|
| - dir: string, directory for temp dir. Must exist before call
|
| - Returns:
|
| - string, entry name
|
| - """
|
| - # default dir affected by "global"
|
| - if dir is None:
|
| - call_mkdir = True
|
| - dir = self.gettempdir()
|
| - else:
|
| - call_mkdir = False
|
| -
|
| - entryname = None
|
| - while not entryname or self._filesystem.Exists(entryname):
|
| - entryname = self._TempFilename(suffix=suffix, prefix=prefix, dir=dir)
|
| - if not call_mkdir:
|
| - # This is simplistic. A bad input of suffix=/f will cause tempfile
|
| - # to blow up, but this mock won't. But that's already a broken
|
| - # corner case
|
| - parent_dir = os.path.dirname(entryname)
|
| - try:
|
| - self._filesystem.GetObject(parent_dir)
|
| - except IOError as err:
|
| - assert 'No such file or directory' in str(err)
|
| - # python -c 'import tempfile; tempfile.mkstemp(dir="/no/such/dr")'
|
| - # OSError: [Errno 2] No such file or directory: '/no/such/dr/tmpFBuqjO'
|
| - raise OSError(
|
| - errno.ENOENT,
|
| - 'No such directory in mock filesystem',
|
| - parent_dir)
|
| - return entryname
|
| -
|
| - # pylint: disable-msg=C6409
|
| - def gettempdir(self):
|
| - """Get default temp dir. Sets default if unset."""
|
| - if self.tempdir:
|
| - return self.tempdir
|
| - # pylint: disable-msg=C6002
|
| - # TODO: environment variables TMPDIR TEMP TMP, or other dirs?
|
| - self.tempdir = '/tmp'
|
| - return self.tempdir
|
| -
|
| - # pylint: disable-msg=C6409
|
| - def gettempprefix(self):
|
| - """Get temp filename prefix.
|
| -
|
| - NOTE: This has no effect on py2.4
|
| -
|
| - Returns:
|
| - string, prefix to use in temporary filenames
|
| - """
|
| - return self._temp_prefix
|
| -
|
| - # pylint: disable-msg=C6409
|
| - def mktemp(self, suffix=''):
|
| - """mktemp is deprecated in 2.4.1, and is thus unimplemented."""
|
| - raise NotImplementedError
|
| -
|
| - def _SetTemplate(self, template):
|
| - """Setter for 'template' property."""
|
| - self._temp_prefix = template
|
| - logging.error('tempfile.template= is a NOP in python2.4')
|
| -
|
| - def __SetTemplate(self, template):
|
| - """Indirect setter for 'template' property."""
|
| - self._SetTemplate(template)
|
| -
|
| - def __DeprecatedTemplate(self):
|
| - """template property implementation."""
|
| - raise NotImplementedError
|
| -
|
| - # reading from template is deprecated, setting is ok.
|
| - template = property(__DeprecatedTemplate, __SetTemplate,
|
| - doc="""Set the prefix for temp filenames""")
|
| -
|
| - def FakeReturnedMktempValues(self):
|
| - """For validation purposes, mktemp()'s return values are stored."""
|
| - return self._mktemp_retvals
|
| -
|
| - def FakeMktempReset(self):
|
| - """Clear the stored mktemp() values."""
|
| - self._mktemp_retvals = []
|
|
|