From e7329f47e777d75a6602418f3198589828c35fce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Araujo?= Date: Fri, 19 Aug 2011 03:07:39 +0200 Subject: [PATCH] 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. --- Lib/shutil.py | 3 ++- Lib/test/test_shutil.py | 4 ++++ Misc/NEWS | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Lib/shutil.py b/Lib/shutil.py index 9d922fbefc3..59a38fef76e 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 9f9bf45e42d..b4e5415c0a8 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 679b4b07045..78f4fa6c8d0 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.