diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2015-01-26 14:01:27 +0200 |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2015-01-26 14:01:27 +0200 |
commit | 84d6a9777237e0d01bd87bce9010a0821162b06a (patch) | |
tree | ed71183383f255d14dd6c29b4d8e116a167f1107 /Lib/test/test_zipfile.py | |
parent | 940ddbf6ef56413beae4c33f223b175b8822366d (diff) | |
download | cpython-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.py | 28 |
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 |