From: Daira Hopwood Date: Sun, 4 May 2014 16:05:48 +0000 (+0100) Subject: Use "long" paths prefixed with \\?\ on Windows. refs #2235 X-Git-Tag: allmydata-tahoe-1.10.1a1~187 X-Git-Url: https://git.rkrishnan.org/specifications/(%5B%5E?a=commitdiff_plain;h=603f5eba32c98d4bfbc354530dcd36dfcd58887a;p=tahoe-lafs%2Ftahoe-lafs.git Use "long" paths prefixed with \\?\ on Windows. refs #2235 Signed-off-by: Daira Hopwood --- diff --git a/src/allmydata/test/test_cli.py b/src/allmydata/test/test_cli.py index 5e7d56ab..41493b35 100644 --- a/src/allmydata/test/test_cli.py +++ b/src/allmydata/test/test_cli.py @@ -3740,7 +3740,7 @@ class Webopen(GridTestMixin, CLITestMixin, unittest.TestCase): raise return d -class Options(unittest.TestCase): +class Options(ReallyEqualMixin, unittest.TestCase): # this test case only looks at argument-processing and simple stuff. def parse(self, args, stdout=None): @@ -3822,14 +3822,14 @@ class Options(unittest.TestCase): # option after, or a basedir argument after, but none in the wrong # place, and not more than one of the three. o = self.parse(["start"]) - self.failUnlessEqual(o["basedir"], os.path.join(os.path.expanduser("~"), - ".tahoe")) + self.failUnlessReallyEqual(o["basedir"], os.path.join(fileutil.abspath_expanduser_unicode(u"~"), + u".tahoe")) o = self.parse(["start", "here"]) - self.failUnlessEqual(o["basedir"], os.path.abspath("here")) + self.failUnlessReallyEqual(o["basedir"], fileutil.abspath_expanduser_unicode(u"here")) o = self.parse(["start", "--basedir", "there"]) - self.failUnlessEqual(o["basedir"], os.path.abspath("there")) + self.failUnlessReallyEqual(o["basedir"], fileutil.abspath_expanduser_unicode(u"there")) o = self.parse(["--node-directory", "there", "start"]) - self.failUnlessEqual(o["basedir"], os.path.abspath("there")) + self.failUnlessReallyEqual(o["basedir"], fileutil.abspath_expanduser_unicode(u"there")) self.failUnlessRaises(usage.UsageError, self.parse, ["--basedir", "there", "start"]) diff --git a/src/allmydata/test/test_client.py b/src/allmydata/test/test_client.py index 796971b2..4a9fa5d4 100644 --- a/src/allmydata/test/test_client.py +++ b/src/allmydata/test/test_client.py @@ -1,4 +1,4 @@ -import os +import os, sys from twisted.trial import unittest from twisted.application import service @@ -45,10 +45,11 @@ class Basic(testutil.ReallyEqualMixin, unittest.TestCase): fileutil.write(os.path.join(basedir, "debug_discard_storage"), "") e = self.failUnlessRaises(OldConfigError, client.Client, basedir) - self.failUnlessIn(os.path.abspath(os.path.join(basedir, "introducer.furl")), e.args[0]) - self.failUnlessIn(os.path.abspath(os.path.join(basedir, "no_storage")), e.args[0]) - self.failUnlessIn(os.path.abspath(os.path.join(basedir, "readonly_storage")), e.args[0]) - self.failUnlessIn(os.path.abspath(os.path.join(basedir, "debug_discard_storage")), e.args[0]) + abs_basedir = fileutil.abspath_expanduser_unicode(unicode(basedir)).encode(sys.getfilesystemencoding()) + self.failUnlessIn(os.path.join(abs_basedir, "introducer.furl"), e.args[0]) + self.failUnlessIn(os.path.join(abs_basedir, "no_storage"), e.args[0]) + self.failUnlessIn(os.path.join(abs_basedir, "readonly_storage"), e.args[0]) + self.failUnlessIn(os.path.join(abs_basedir, "debug_discard_storage"), e.args[0]) for oldfile in ['introducer.furl', 'no_storage', 'readonly_storage', 'debug_discard_storage']: diff --git a/src/allmydata/test/test_util.py b/src/allmydata/test/test_util.py index b527771d..e45d7ef1 100644 --- a/src/allmydata/test/test_util.py +++ b/src/allmydata/test/test_util.py @@ -488,7 +488,10 @@ class FileUtil(unittest.TestCase): abspath_cwd = fileutil.abspath_expanduser_unicode(u".") self.failUnless(isinstance(saved_cwd, unicode), saved_cwd) self.failUnless(isinstance(abspath_cwd, unicode), abspath_cwd) - self.failUnlessEqual(abspath_cwd, saved_cwd) + if sys.platform == "win32": + self.failUnlessEqual(abspath_cwd, u"\\\\?\\" + saved_cwd) + else: + self.failUnlessEqual(abspath_cwd, saved_cwd) # adapted from diff --git a/src/allmydata/util/fileutil.py b/src/allmydata/util/fileutil.py index 8eb8e9fb..87650848 100644 --- a/src/allmydata/util/fileutil.py +++ b/src/allmydata/util/fileutil.py @@ -311,7 +311,12 @@ def abspath_expanduser_unicode(path): # We won't hit because # there is always at least one Unicode path component. - return os.path.normpath(path) + path = os.path.normpath(path) + + if sys.platform == "win32" and not path.startswith(u"\\\\"): + path = u"\\\\?\\" + path + + return path have_GetDiskFreeSpaceExW = False