Skip to content

Commit 92b921a

Browse files
authored
update unittest
1 parent 0c90d87 commit 92b921a

File tree

2 files changed

+12
-57
lines changed

2 files changed

+12
-57
lines changed

Lib/test/test_zipfile/test_core.py

Lines changed: 11 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3449,71 +3449,26 @@ def test_too_short(self):
34493449

34503450
class StoreSeekReadTest(unittest.TestCase):
34513451
def test_store_seek_read(self):
3452-
class StatIO(io.RawIOBase):
3453-
def __init__(self, buf: bytes):
3452+
from _pyio import BytesIO
3453+
class StatIO(BytesIO):
3454+
def __init__(self):
3455+
super().__init__()
34543456
self.bytes_read = 0
3455-
self.buffer = buf
3456-
self.pos = 0
3457-
self.eof = False
3458-
3459-
def readinto(self, buffer, /):
3460-
if self.eof:
3461-
return 0
3462-
sz = min(len(buffer), len(self.buffer) - self.pos)
3463-
buffer[:sz] = self.buffer[self.pos:self.pos + sz]
3464-
self.pos += sz
3465-
self.bytes_read += sz
3466-
self.eof = self.pos == len(self.buffer)
3467-
return sz
3468-
3469-
def readall(self):
3470-
if self.eof:
3471-
return b''
3472-
self.eof = True
3473-
self.bytes_read += len(self.buffer) - self.pos
3474-
ret = self.buffer[self.pos:]
3475-
self.pos = len(self.buffer)
3476-
return ret
3477-
3478-
def seek(self, offset, whence=os.SEEK_SET, /):
3479-
if whence == os.SEEK_CUR:
3480-
new_pos = self.pos + offset
3481-
elif whence == os.SEEK_SET:
3482-
new_pos = offset
3483-
elif whence == os.SEEK_END:
3484-
new_pos = len(self.buffer) + offset
3485-
else:
3486-
raise ValueError("unsupported whence")
3487-
3488-
if new_pos < 0:
3489-
new_pos = 0
3490-
elif new_pos > len(self.buffer):
3491-
new_pos = len(self.buffer)
3492-
3493-
self.eof = new_pos == len(self.buffer)
3494-
self.pos = new_pos
3495-
return new_pos
3496-
3497-
def tell(self):
3498-
return self.pos
3499-
3500-
def readable(self):
3501-
return True
3502-
3503-
def writable(self):
3504-
return False
35053457

3506-
def seekable(self):
3507-
return True
3458+
def read(self, size=-1):
3459+
bs = super().read(size)
3460+
self.bytes_read += len(bs)
3461+
print('read sz', len(bs))
3462+
return bs
35083463

35093464
def get_bytes_read(self):
35103465
return self.bytes_read
35113466

3512-
bio = io.BytesIO()
3467+
sio = StatIO()
35133468
txt = b'0123456789'*10000
35143469

35153470
# Check seek on a file
3516-
with zipfile.ZipFile(bio, "w") as zipf:
3471+
with zipfile.ZipFile(sio, "w") as zipf:
35173472
zipf.writestr("foo.txt", txt) # 100000 bytes
35183473

35193474
sio = StatIO(bio.getvalue())
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Support forward seek in uncompressed unencrypted :class:`!zipfile.ZipExtFile`.
1+
Support fast forward seek in uncompressed unencrypted :class:`!zipfile.ZipExtFile`.

0 commit comments

Comments
 (0)