diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2014-11-27 22:49:50 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2014-11-27 22:49:50 (GMT) |
commit | 0a99b2ab61e506da60d9c48e440412a75399d4d0 (patch) | |
tree | 96f7658f0a648f664695e7b9ea2295a7c7e36a7d | |
parent | f1fc9fb33d6e3181fde24d9fc1a5a224fda5c2ef (diff) | |
parent | 9a4fc19589a080d8e21ade8d64034b78d500b004 (diff) | |
download | cpython-0a99b2ab61e506da60d9c48e440412a75399d4d0.zip cpython-0a99b2ab61e506da60d9c48e440412a75399d4d0.tar.gz cpython-0a99b2ab61e506da60d9c48e440412a75399d4d0.tar.bz2 |
Issue #21280: Fixed a bug in shutil.make_archive() when create an archive of
current directory in current directory.
-rw-r--r-- | Lib/shutil.py | 4 | ||||
-rw-r--r-- | Lib/test/test_shutil.py | 15 |
2 files changed, 17 insertions, 2 deletions
diff --git a/Lib/shutil.py b/Lib/shutil.py index 34a6511..a0ff1cd 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -617,7 +617,7 @@ def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0, archive_name = base_name + '.tar' + compress_ext.get(compress, '') archive_dir = os.path.dirname(archive_name) - if not os.path.exists(archive_dir): + if archive_dir and not os.path.exists(archive_dir): if logger is not None: logger.info("creating %s", archive_dir) if not dry_run: @@ -662,7 +662,7 @@ def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None): zip_filename = base_name + ".zip" archive_dir = os.path.dirname(base_name) - if not os.path.exists(archive_dir): + if archive_dir and not os.path.exists(archive_dir): if logger is not None: logger.info("creating %s", archive_dir) if not dry_run: diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index 96cb54b..b1f5bbe 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -1132,6 +1132,21 @@ class TestShutil(unittest.TestCase): finally: unregister_archive_format('xxx') + def test_make_tarfile_in_curdir(self): + # Issue #21280 + root_dir = self.mkdtemp() + with support.change_cwd(root_dir): + self.assertEqual(make_archive('test', 'tar'), 'test.tar') + self.assertTrue(os.path.isfile('test.tar')) + + @requires_zlib + def test_make_zipfile_in_curdir(self): + # Issue #21280 + root_dir = self.mkdtemp() + with support.change_cwd(root_dir): + self.assertEqual(make_archive('test', 'zip'), 'test.zip') + self.assertTrue(os.path.isfile('test.zip')) + def test_register_archive_format(self): self.assertRaises(TypeError, register_archive_format, 'xxx', 1) |