changeset: 104662:e93149fee04d branch: 3.6 parent: 104654:a1975621bba2 parent: 104661:d4fce66ebe01 user: Serhiy Storchaka date: Sun Oct 23 15:57:42 2016 +0300 files: Lib/shutil.py Lib/test/test_shutil.py Misc/NEWS description: Issue #28488: shutil.make_archive() no longer adds entry "./" to ZIP archive. diff -r a1975621bba2 -r e93149fee04d Lib/shutil.py --- a/Lib/shutil.py Sun Oct 23 13:12:39 2016 +0300 +++ b/Lib/shutil.py Sun Oct 23 15:57:42 2016 +0300 @@ -680,9 +680,10 @@ with zipfile.ZipFile(zip_filename, "w", compression=zipfile.ZIP_DEFLATED) as zf: path = os.path.normpath(base_dir) - zf.write(path, path) - if logger is not None: - logger.info("adding '%s'", path) + if path != os.curdir: + zf.write(path, path) + if logger is not None: + logger.info("adding '%s'", path) for dirpath, dirnames, filenames in os.walk(base_dir): for name in sorted(dirnames): path = os.path.normpath(os.path.join(dirpath, name)) diff -r a1975621bba2 -r e93149fee04d Lib/test/test_shutil.py --- a/Lib/test/test_shutil.py Sun Oct 23 13:12:39 2016 +0300 +++ b/Lib/test/test_shutil.py Sun Oct 23 15:57:42 2016 +0300 @@ -1066,6 +1066,19 @@ 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): + base_name = os.path.abspath(rel_base_name) res = make_archive(rel_base_name, 'zip', root_dir, base_dir) self.assertEqual(res, base_name + '.zip') diff -r a1975621bba2 -r e93149fee04d Misc/NEWS --- a/Misc/NEWS Sun Oct 23 13:12:39 2016 +0300 +++ b/Misc/NEWS Sun Oct 23 15:57:42 2016 +0300 @@ -23,6 +23,8 @@ 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 reference in replacement template even if the pattern is not found in the string. Error message for invalid group reference now includes the