summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/test_farm.py26
1 files changed, 12 insertions, 14 deletions
diff --git a/test/test_farm.py b/test/test_farm.py
index 405c68d4..08e51cd6 100644
--- a/test/test_farm.py
+++ b/test/test_farm.py
@@ -295,20 +295,18 @@ class FarmTestCase(object):
def clean(self, cleandir):
"""Clean `cleandir` by removing it and all its children completely."""
if os.path.exists(cleandir):
- # rmtree gives mysterious failures on Win7, so use an onerror
- # function that tries to help diagnose the problem. Somehow, just
- # having a function that prints and raises keeps the error from
- # happening??
- shutil.rmtree(cleandir, onerror=self.rmtree_err)
-
- def rmtree_err(self, fn, path, exc):
- """A stupid error handler that prints and raises.
-
- Somehow, this fixes the problem it was meant to diagnose.
-
- """
- print("Couldn't %r on %r due to %s" % (fn, path, exc))
- raise exc
+ # rmtree gives mysterious failures on Win7, so retry a few times.
+ tries = 3
+ while tries:
+ try:
+ shutil.rmtree(cleandir)
+ except OSError:
+ if tries == 1:
+ raise
+ else:
+ tries -= 1
+ continue
+ break
def main(): # pragma: no cover