From: Éric Araujo Date: Fri, 19 Aug 2011 01:07:39 +0000 (+0200) Subject: Guard shutil._make_archive against a logger=None argument. X-Git-Tag: v2.7.3rc1~503^2^2~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e7329f47e777d75a6602418f3198589828c35fce;p=python 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. --- diff --git a/Lib/shutil.py b/Lib/shutil.py index 9d922fbefc..59a38fef76 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -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) 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: os.makedirs(archive_dir) diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index 9f9bf45e42..b4e5415c0a 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -349,6 +349,8 @@ class TestShutil(unittest.TestCase): self.write_file([tmpdir, 'sub', 'file3'], 'xxx') tmpdir2 = self.mkdtemp() + # force shutil to create the directory + os.rmdir(tmpdir2) unittest.skipUnless(splitdrive(tmpdir)[0] == splitdrive(tmpdir2)[0], "source and target should be on same drive") @@ -464,6 +466,8 @@ class TestShutil(unittest.TestCase): self.write_file([tmpdir, 'file2'], 'xxx') tmpdir2 = self.mkdtemp() + # force shutil to create the directory + os.rmdir(tmpdir2) base_name = os.path.join(tmpdir2, 'archive') _make_zipfile(base_name, tmpdir) diff --git a/Misc/NEWS b/Misc/NEWS index 679b4b0704..78f4fa6c8d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -40,6 +40,8 @@ Core and Builtins 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 resources (FD/zombie) when killed at the wrong time.