summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2010-03-06 11:46:31 -0500
committerNed Batchelder <ned@nedbatchelder.com>2010-03-06 11:46:31 -0500
commitd7eecfcb48fe8b57d6051687b9e23523fef639e4 (patch)
tree40ea4c54fc39512401c71cd3b009c29e3a43c1a9
parent444fd0e3503c735fc198ce6564d757aa5efae43a (diff)
downloadpython-coveragepy-git-d7eecfcb48fe8b57d6051687b9e23523fef639e4.tar.gz
The niggling errors cleaning directories on Windows 7 seem to be fixed by this function which was only meant to help diagnose the problem. A heisenbug!
-rw-r--r--test/test_farm.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/test/test_farm.py b/test/test_farm.py
index 6adfe6ad..405c68d4 100644
--- a/test/test_farm.py
+++ b/test/test_farm.py
@@ -296,9 +296,19 @@ class FarmTestCase(object):
"""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 simply retries the operation. Why that helps, I
- # have no idea.
- shutil.rmtree(cleandir, onerror=lambda fn, path, exc: fn(path))
+ # 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
def main(): # pragma: no cover