Commit 7e672910 authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.

parents ae3d9d05 7c4a3aa8
...@@ -680,6 +680,7 @@ def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None): ...@@ -680,6 +680,7 @@ def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None):
with zipfile.ZipFile(zip_filename, "w", with zipfile.ZipFile(zip_filename, "w",
compression=zipfile.ZIP_DEFLATED) as zf: compression=zipfile.ZIP_DEFLATED) as zf:
path = os.path.normpath(base_dir) path = os.path.normpath(base_dir)
if path != os.curdir:
zf.write(path, path) zf.write(path, path)
if logger is not None: if logger is not None:
logger.info("adding '%s'", path) logger.info("adding '%s'", path)
......
...@@ -1064,6 +1064,19 @@ class TestShutil(unittest.TestCase): ...@@ -1064,6 +1064,19 @@ class TestShutil(unittest.TestCase):
work_dir = os.path.dirname(tmpdir2) work_dir = os.path.dirname(tmpdir2)
rel_base_name = os.path.join(os.path.basename(tmpdir2), 'archive') rel_base_name = os.path.join(os.path.basename(tmpdir2), 'archive')
with support.change_cwd(work_dir):
base_name = os.path.abspath(rel_base_name)
res = make_archive(rel_base_name, 'zip', root_dir)
self.assertEqual(res, base_name + '.zip')
self.assertTrue(os.path.isfile(res))
self.assertTrue(zipfile.is_zipfile(res))
with zipfile.ZipFile(res) as zf:
self.assertCountEqual(zf.namelist(),
['dist/', 'dist/sub/', 'dist/sub2/',
'dist/file1', 'dist/file2', 'dist/sub/file3',
'outer'])
with support.change_cwd(work_dir): with support.change_cwd(work_dir):
base_name = os.path.abspath(rel_base_name) base_name = os.path.abspath(rel_base_name)
res = make_archive(rel_base_name, 'zip', root_dir, base_dir) res = make_archive(rel_base_name, 'zip', root_dir, base_dir)
......
...@@ -23,6 +23,8 @@ Core and Builtins ...@@ -23,6 +23,8 @@ Core and Builtins
Library Library
------- -------
- Issue #28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.
- Issue #25953: re.sub() now raises an error for invalid numerical group - Issue #25953: re.sub() now raises an error for invalid numerical group
reference in replacement template even if the pattern is not found in reference in replacement template even if the pattern is not found in
the string. Error message for invalid group reference now includes the the string. Error message for invalid group reference now includes the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment