summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2014-11-27 22:49:50 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2014-11-27 22:49:50 (GMT)
commit0a99b2ab61e506da60d9c48e440412a75399d4d0 (patch)
tree96f7658f0a648f664695e7b9ea2295a7c7e36a7d
parentf1fc9fb33d6e3181fde24d9fc1a5a224fda5c2ef (diff)
parent9a4fc19589a080d8e21ade8d64034b78d500b004 (diff)
downloadcpython-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.py4
-rw-r--r--Lib/test/test_shutil.py15
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)