From eac69535db412b489d8430cb1e30fd18002b3ebe Mon Sep 17 00:00:00 2001 From: Kirill Podoprigora Date: Fri, 13 Oct 2023 15:48:23 +0300 Subject: [PATCH 1/4] gh-110715: Add missing import --- Lib/zipfile/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Lib/zipfile/__init__.py b/Lib/zipfile/__init__.py index 2c963de18e4f95..995d2678e87536 100644 --- a/Lib/zipfile/__init__.py +++ b/Lib/zipfile/__init__.py @@ -545,6 +545,7 @@ def _decodeExtra(self, filename_crc): if up_unicode_name: self.filename = _sanitize_filename(up_unicode_name) else: + import warnings warnings.warn("Empty unicode path extra field (0x7075)", stacklevel=2) except struct.error as e: raise BadZipFile("Corrupt unicode path extra field (0x7075)") from e From 1b448a2fdfc7a7e978ce7b908f4c160a3901d3e1 Mon Sep 17 00:00:00 2001 From: Kirill Podoprigora Date: Fri, 13 Oct 2023 19:34:34 +0300 Subject: [PATCH 2/4] Add tests --- Lib/test/test_zipfile/test_core.py | 57 ++++++++++++++++++------------ 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/Lib/test/test_zipfile/test_core.py b/Lib/test/test_zipfile/test_core.py index 0f6c0f2107ce6b..609ab97524cca3 100644 --- a/Lib/test/test_zipfile/test_core.py +++ b/Lib/test/test_zipfile/test_core.py @@ -47,6 +47,28 @@ def get_files(test): yield f test.assertFalse(f.closed) + +def create_zipfile_with_extra_data(filename, extra_data_name): + with zipfile.ZipFile(TESTFN, mode='w') as zf: + filename_encoded = filename.encode("utf-8") + # create a ZipInfo object with Unicode path extra field + zip_info = zipfile.ZipInfo(filename) + + tag_for_unicode_path = b'\x75\x70' + version_of_unicode_path = b'\x01' + + import zlib + filename_crc = struct.pack(' Date: Fri, 13 Oct 2023 20:54:21 +0300 Subject: [PATCH 3/4] Move helper to OtherTests --- Lib/test/test_zipfile/test_core.py | 47 +++++++++++++++--------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/Lib/test/test_zipfile/test_core.py b/Lib/test/test_zipfile/test_core.py index 609ab97524cca3..084dc7f17d5fe6 100644 --- a/Lib/test/test_zipfile/test_core.py +++ b/Lib/test/test_zipfile/test_core.py @@ -48,27 +48,6 @@ def get_files(test): test.assertFalse(f.closed) -def create_zipfile_with_extra_data(filename, extra_data_name): - with zipfile.ZipFile(TESTFN, mode='w') as zf: - filename_encoded = filename.encode("utf-8") - # create a ZipInfo object with Unicode path extra field - zip_info = zipfile.ZipInfo(filename) - - tag_for_unicode_path = b'\x75\x70' - version_of_unicode_path = b'\x01' - - import zlib - filename_crc = struct.pack(' Date: Sat, 14 Oct 2023 09:44:54 +0300 Subject: [PATCH 4/4] Delete an accidentally added line --- Lib/test/test_zipfile/test_core.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/test/test_zipfile/test_core.py b/Lib/test/test_zipfile/test_core.py index 084dc7f17d5fe6..519d2ba1a231b5 100644 --- a/Lib/test/test_zipfile/test_core.py +++ b/Lib/test/test_zipfile/test_core.py @@ -47,7 +47,6 @@ def get_files(test): yield f test.assertFalse(f.closed) - class AbstractTestsWithSourceFile: @classmethod def setUpClass(cls):