Issue #21280: Fixed a bug in shutil.make_archive() when create an archive of

current directory in current directory.
This commit is contained in:
Serhiy Storchaka 2014-11-28 00:49:50 +02:00
commit 0a99b2ab61
2 changed files with 17 additions and 2 deletions

View File

@ -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_name = base_name + '.tar' + compress_ext.get(compress, '')
archive_dir = os.path.dirname(archive_name) 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: if logger is not None:
logger.info("creating %s", archive_dir) logger.info("creating %s", archive_dir)
if not dry_run: 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" zip_filename = base_name + ".zip"
archive_dir = os.path.dirname(base_name) 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: if logger is not None:
logger.info("creating %s", archive_dir) logger.info("creating %s", archive_dir)
if not dry_run: if not dry_run:

View File

@ -1132,6 +1132,21 @@ class TestShutil(unittest.TestCase):
finally: finally:
unregister_archive_format('xxx') 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): def test_register_archive_format(self):
self.assertRaises(TypeError, register_archive_format, 'xxx', 1) self.assertRaises(TypeError, register_archive_format, 'xxx', 1)