diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2010-03-20 12:28:08 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2010-03-20 12:28:08 -0400 |
commit | 2748fd508364197a3e1a40523e412be9239c8ebc (patch) | |
tree | 7b193722e8e246170169344149739d4e1df1ab32 | |
parent | 7632f4c60b5fbc856beea7607ce2b448f6b5bbbc (diff) | |
download | python-coveragepy-git-2748fd508364197a3e1a40523e412be9239c8ebc.tar.gz |
Maybe we're done with the scourge of failed tree deletes on Windows?
-rw-r--r-- | test/test_farm.py | 26 |
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 |