mirror of https://github.com/python/cpython
Issue #25624: ZipFile now always writes a ZIP_STORED header for directory
entries. Patch by Dingyuan Wang.
This commit is contained in:
parent
04d759b1e4
commit
8bc792a602
|
@ -1099,6 +1099,29 @@ class TestShutil(unittest.TestCase):
|
|||
names2 = zf.namelist()
|
||||
self.assertEqual(sorted(names), sorted(names2))
|
||||
|
||||
@requires_zlib
|
||||
@unittest.skipUnless(ZIP_SUPPORT, 'Need zip support to run')
|
||||
@unittest.skipUnless(shutil.which('unzip'),
|
||||
'Need the unzip command to run')
|
||||
def test_unzip_zipfile(self):
|
||||
root_dir, base_dir = self._create_files()
|
||||
base_name = os.path.join(self.mkdtemp(), 'archive')
|
||||
archive = make_archive(base_name, 'zip', root_dir, base_dir)
|
||||
|
||||
# check if ZIP file was created
|
||||
self.assertEqual(archive, base_name + '.zip')
|
||||
self.assertTrue(os.path.isfile(archive))
|
||||
|
||||
# now check the ZIP file using `unzip -t`
|
||||
zip_cmd = ['unzip', '-t', archive]
|
||||
with support.change_cwd(root_dir):
|
||||
try:
|
||||
subprocess.check_output(zip_cmd, stderr=subprocess.STDOUT)
|
||||
except subprocess.CalledProcessError as exc:
|
||||
details = exc.output.decode(errors="replace")
|
||||
msg = "{}\n\n**Unzip Output**\n{}"
|
||||
self.fail(msg.format(exc, details))
|
||||
|
||||
def test_make_archive(self):
|
||||
tmpdir = self.mkdtemp()
|
||||
base_name = os.path.join(tmpdir, 'archive')
|
||||
|
|
|
@ -1337,7 +1337,9 @@ class ZipFile:
|
|||
arcname += '/'
|
||||
zinfo = ZipInfo(arcname, date_time)
|
||||
zinfo.external_attr = (st[0] & 0xFFFF) << 16 # Unix attributes
|
||||
if compress_type is None:
|
||||
if isdir:
|
||||
zinfo.compress_type = ZIP_STORED
|
||||
elif compress_type is None:
|
||||
zinfo.compress_type = self.compression
|
||||
else:
|
||||
zinfo.compress_type = compress_type
|
||||
|
|
|
@ -1471,6 +1471,7 @@ Richard Walker
|
|||
Larry Wall
|
||||
Kevin Walzer
|
||||
Rodrigo Steinmuller Wanderley
|
||||
Dingyuan Wang
|
||||
Ke Wang
|
||||
Greg Ward
|
||||
Tom Wardill
|
||||
|
|
|
@ -106,6 +106,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #25624: ZipFile now always writes a ZIP_STORED header for directory
|
||||
entries. Patch by Dingyuan Wang.
|
||||
|
||||
- Issue #25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
|
||||
when the OS gives priority to errors such as EACCES over EEXIST.
|
||||
|
||||
|
|
Loading…
Reference in New Issue