From 70f03bd6158168ed57613443e755e036f0092e0b Mon Sep 17 00:00:00 2001 From: david-sarah <david-sarah@jacaranda.org> Date: Mon, 8 Aug 2011 18:23:34 -0700 Subject: [PATCH] Work around ref #1472 by having test_drop_upload delete the non-ASCII directories it creates. --- src/allmydata/test/test_drop_upload.py | 27 +++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) 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 -- 2.45.2