summaryrefslogtreecommitdiff
path: root/Lib/test/test_zipfile.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-01-26 14:01:27 +0200
committerSerhiy Storchaka <storchaka@gmail.com>2015-01-26 14:01:27 +0200
commit84d6a9777237e0d01bd87bce9010a0821162b06a (patch)
treeed71183383f255d14dd6c29b4d8e116a167f1107 /Lib/test/test_zipfile.py
parent940ddbf6ef56413beae4c33f223b175b8822366d (diff)
downloadcpython-84d6a9777237e0d01bd87bce9010a0821162b06a.tar.gz
Issue #14099: Restored support of writing ZIP files to tellable but
non-seekable streams.
Diffstat (limited to 'Lib/test/test_zipfile.py')
-rw-r--r--Lib/test/test_zipfile.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 57431c7809..abe80e4de2 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -1668,6 +1668,34 @@ class LzmaTestsWithRandomBinaryFiles(AbstractTestsWithRandomBinaryFiles,
compression = zipfile.ZIP_LZMA
+# Privide the tell() method but not seek()
+class Tellable:
+ def __init__(self, fp):
+ self.fp = fp
+ self.offset = 0
+
+ def write(self, data):
+ self.offset += self.fp.write(data)
+
+ def tell(self):
+ return self.offset
+
+ def flush(self):
+ pass
+
+class UnseekableTests(unittest.TestCase):
+ def test_writestr_tellable(self):
+ f = io.BytesIO()
+ with zipfile.ZipFile(Tellable(f), 'w', zipfile.ZIP_STORED) as zipfp:
+ zipfp.writestr('ones', b'111')
+ zipfp.writestr('twos', b'222')
+ with zipfile.ZipFile(f, mode='r') as zipf:
+ with zipf.open('ones') as zopen:
+ self.assertEqual(zopen.read(), b'111')
+ with zipf.open('twos') as zopen:
+ self.assertEqual(zopen.read(), b'222')
+
+
@requires_zlib
class TestsWithMultipleOpens(unittest.TestCase):
@classmethod