-
Notifications
You must be signed in to change notification settings - Fork 70
Open
Description
In very rare circumstances, the write() on the TemporaryFile files with an IOError, but no error code. I tracked the bug down to the following: When using a file object with read and write mode, then you have to flush or seek, when switching between reading and writing (see http://bugs.python.org/issue3207).
To fix this here, simply reset the filestream pointer by seeking to the position returned by tell(). More specifically, in tee.py:154 add self.tmp.seek(self.tmp.tell()).
If you want to reproduce the error yourself, use the following script. The html file needs to be bigger than two chunk sizes (32KB), so a file with 45 KB should do the trick.
import unittest
from restkit.tee import TeeInput
import os
import tempfile
class TempfileErrorCase(unittest.TestCase):
def test_ioerror(self):
with open("/path/to/large/html/file", "rb") as f:
i = TeeInput(f)
for _ in range(200):
i.readline()
i.tmp.flush()
def tearDown(self):
os.remove(self.tmpfile.name)
# Guard importing as main module
if __name__ == "__main__":
unittest.main()Metadata
Metadata
Assignees
Labels
No labels