From: Guido van Rossum Date: Wed, 14 Jul 2004 00:48:02 +0000 (+0000) Subject: Backport: X-Git-Tag: v2.3.5c1~178 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=292b643ea7c4420950ec986c6b0856a13219b1e2;p=thirdparty%2FPython%2Fcpython.git Backport: - Bug #981530: Fix UnboundLocalError in shutil.rmtree(). This affects the documented behavior: the function passed to the onerror() handler can now also be os.listdir. [I could've sworn I checked this in, but apparently I didn't, or it got lost???] --- diff --git a/Lib/shutil.py b/Lib/shutil.py index 10b7a277674a..fde8c90fe9fb 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -128,6 +128,7 @@ def rmtree(path, ignore_errors=False, onerror=None): cmdtuples = [] arg = path try: + func = os.listdir # Make sure it isn't unset _build_cmdtuple(path, cmdtuples) for func, arg in cmdtuples: func(arg) diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index 9a2be0ff8360..164ccf8e618d 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -13,6 +13,7 @@ class TestShutil(unittest.TestCase): filename = tempfile.mktemp() self.assertRaises(OSError, shutil.rmtree, filename) self.assertEqual(shutil.rmtree(filename, True), None) + shutil.rmtree(filename, False, lambda func, arg, exc: None) def test_dont_move_dir_in_itself(self): src_dir = tempfile.mkdtemp()