Fixed a failing test introduced in 918a16bc4c.

Refs #22307.
This commit is contained in:
Baptiste Mispelon 2014-03-22 17:12:43 +01:00
parent c94bff2b26
commit 96fc3908ad
1 changed files with 19 additions and 12 deletions

View File

@ -36,19 +36,26 @@ class File(FileProxyMixin):
def __len__(self): def __len__(self):
return self.size return self.size
def _get_size_from_underlying_file(self):
if hasattr(self.file, 'size'):
return self.file.size
if hasattr(self.file, 'name'):
try:
return os.path.getsize(self.file.name)
except (OSError, TypeError):
pass
if hasattr(self.file, 'tell') and hasattr(self.file, 'seek'):
pos = self.file.tell()
self.file.seek(0, os.SEEK_END)
size = self.file.tell()
self.file.seek(pos)
return size
raise AttributeError("Unable to determine the file's size.")
def _get_size(self): def _get_size(self):
if not hasattr(self, '_size'): if hasattr(self, '_size'):
if hasattr(self.file, 'size'): return self._size
self._size = self.file.size self._size = self._get_size_from_underlying_file()
elif hasattr(self.file, 'name') and self.file.name is not None and os.path.exists(self.file.name):
self._size = os.path.getsize(self.file.name)
elif hasattr(self.file, 'tell') and hasattr(self.file, 'seek'):
pos = self.file.tell()
self.file.seek(0, os.SEEK_END)
self._size = self.file.tell()
self.file.seek(pos)
else:
raise AttributeError("Unable to determine the file's size.")
return self._size return self._size
def _set_size(self, size): def _set_size(self, size):