From: david-sarah Date: Tue, 9 Aug 2011 01:23:34 +0000 (-0700) Subject: Work around ref #1472 by having test_drop_upload delete the non-ASCII directories... X-Git-Url: https://git.rkrishnan.org/%5B/frontends/somewhere?a=commitdiff_plain;h=70f03bd6158168ed57613443e755e036f0092e0b;p=tahoe-lafs%2Ftahoe-lafs.git Work around ref #1472 by having test_drop_upload delete the non-ASCII directories it creates. --- diff --git a/src/allmydata/test/test_drop_upload.py b/src/allmydata/test/test_drop_upload.py index beade262..74cdbe09 100644 --- a/src/allmydata/test/test_drop_upload.py +++ b/src/allmydata/test/test_drop_upload.py @@ -2,12 +2,12 @@ import os, sys from twisted.trial import unittest -from twisted.python import filepath, runtime +from twisted.python import filepath, runtime, log from twisted.internet import defer from allmydata.interfaces import IDirectoryNode, NoSuchChildError -from allmydata.util import fake_inotify +from allmydata.util import fileutil, fake_inotify from allmydata.util.encodingutil import get_filesystem_encoding from allmydata.util.consumer import download_to_data from allmydata.test.no_network import GridTestMixin @@ -23,6 +23,27 @@ class DropUploadTestMixin(GridTestMixin, ShouldFailMixin, ReallyEqualMixin): with the real INotify. """ + def setUp(self): + GridTestMixin.setUp(self) + self.nonascii_dirs = [] + + def tearDown(self): + try: + GridTestMixin.tearDown(self) + finally: + # kludge to work around the fact that buildbot can't remove a directory tree that has any non-ASCII directory names + if sys.platform == "win32": + for dirpath in self.nonascii_dirs: + try: + fileutil.rm_dir(dirpath) + finally: + log.err("We were unable to delete a non-ASCII directory %r created by the test. " + "This is liable to cause failures on future builds." % (dirpath,)) + + def _mkdir_nonascii(self, dirpath): + self.nonascii_dirs.append(dirpath) + os.mkdir(dirpath) + def _get_count(self, name): return self.stats_provider.get_stats()["counters"].get(name, 0) @@ -36,7 +57,7 @@ class DropUploadTestMixin(GridTestMixin, ShouldFailMixin, ReallyEqualMixin): except UnicodeEncodeError: dirname_u = u"local_dir" self.local_dir = os.path.join(self.basedir, dirname_u) - os.mkdir(self.local_dir) + self._mkdir_nonascii(self.local_dir) self.client = self.g.clients[0] self.stats_provider = self.client.stats_provider