mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Issue #28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
file with compression before trying to open it without compression. Otherwise it had 50% chance failed with ignore_zeros=True.
This commit is contained in:
parent
d1af5effc2
commit
a89d22aff3
3 changed files with 14 additions and 2 deletions
|
@ -3,6 +3,7 @@ import os
|
|||
import io
|
||||
from hashlib import md5
|
||||
from contextlib import contextmanager
|
||||
from random import Random
|
||||
|
||||
import unittest
|
||||
import unittest.mock
|
||||
|
@ -349,12 +350,17 @@ class CommonReadTest(ReadTest):
|
|||
|
||||
def test_ignore_zeros(self):
|
||||
# Test TarFile's ignore_zeros option.
|
||||
# generate 512 pseudorandom bytes
|
||||
data = Random(0).getrandbits(512*8).to_bytes(512, 'big')
|
||||
for char in (b'\0', b'a'):
|
||||
# Test if EOFHeaderError ('\0') and InvalidHeaderError ('a')
|
||||
# are ignored correctly.
|
||||
with self.open(tmpname, "w") as fobj:
|
||||
fobj.write(char * 1024)
|
||||
fobj.write(tarfile.TarInfo("foo").tobuf())
|
||||
tarinfo = tarfile.TarInfo("foo")
|
||||
tarinfo.size = len(data)
|
||||
fobj.write(tarinfo.tobuf())
|
||||
fobj.write(data)
|
||||
|
||||
tar = tarfile.open(tmpname, mode="r", ignore_zeros=True)
|
||||
try:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue