Guard shutil._make_archive against a logger=None argument.

Backporting two lines from the 3.x tests was enough to trigger the bug.
I also took the opportunity of making the logging call lazy.
This commit is contained in:
Éric Araujo 2011-08-19 03:07:39 +02:00
parent 99c4c340e6
commit e7329f47e7
3 changed files with 8 additions and 1 deletions

View File

@ -359,7 +359,8 @@ def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0,
archive_dir = os.path.dirname(archive_name) archive_dir = os.path.dirname(archive_name)
if not os.path.exists(archive_dir): if not os.path.exists(archive_dir):
logger.info("creating %s" % archive_dir) if logger is not None:
logger.info("creating %s", archive_dir)
if not dry_run: if not dry_run:
os.makedirs(archive_dir) os.makedirs(archive_dir)

View File

@ -349,6 +349,8 @@ class TestShutil(unittest.TestCase):
self.write_file([tmpdir, 'sub', 'file3'], 'xxx') self.write_file([tmpdir, 'sub', 'file3'], 'xxx')
tmpdir2 = self.mkdtemp() tmpdir2 = self.mkdtemp()
# force shutil to create the directory
os.rmdir(tmpdir2)
unittest.skipUnless(splitdrive(tmpdir)[0] == splitdrive(tmpdir2)[0], unittest.skipUnless(splitdrive(tmpdir)[0] == splitdrive(tmpdir2)[0],
"source and target should be on same drive") "source and target should be on same drive")
@ -464,6 +466,8 @@ class TestShutil(unittest.TestCase):
self.write_file([tmpdir, 'file2'], 'xxx') self.write_file([tmpdir, 'file2'], 'xxx')
tmpdir2 = self.mkdtemp() tmpdir2 = self.mkdtemp()
# force shutil to create the directory
os.rmdir(tmpdir2)
base_name = os.path.join(tmpdir2, 'archive') base_name = os.path.join(tmpdir2, 'archive')
_make_zipfile(base_name, tmpdir) _make_zipfile(base_name, tmpdir)

View File

@ -40,6 +40,8 @@ Core and Builtins
Library Library
------- -------
- Issue #9173: Let shutil._make_archive work if the logger argument is None.
- Issue #12650: Fix a race condition where a subprocess.Popen could leak - Issue #12650: Fix a race condition where a subprocess.Popen could leak
resources (FD/zombie) when killed at the wrong time. resources (FD/zombie) when killed at the wrong time.