mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-20 13:33:09 +00:00
Add long_path=False option to abspath_expanduser_unicode.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
parent
62dc2f7ac1
commit
07389571c2
@ -497,12 +497,14 @@ class FileUtil(ReallyEqualMixin, unittest.TestCase):
|
||||
|
||||
saved_cwd = os.path.normpath(os.getcwdu())
|
||||
abspath_cwd = fileutil.abspath_expanduser_unicode(u".")
|
||||
abspath_cwd_notlong = fileutil.abspath_expanduser_unicode(u".", long_path=False)
|
||||
self.failUnless(isinstance(saved_cwd, unicode), saved_cwd)
|
||||
self.failUnless(isinstance(abspath_cwd, unicode), abspath_cwd)
|
||||
if sys.platform == "win32":
|
||||
self.failUnlessReallyEqual(abspath_cwd, fileutil.to_windows_long_path(saved_cwd))
|
||||
else:
|
||||
self.failUnlessReallyEqual(abspath_cwd, saved_cwd)
|
||||
self.failUnlessReallyEqual(abspath_cwd_notlong, saved_cwd)
|
||||
|
||||
self.failUnlessReallyEqual(fileutil.to_windows_long_path(u"\\\\?\\foo"), u"\\\\?\\foo")
|
||||
self.failUnlessReallyEqual(fileutil.to_windows_long_path(u"\\\\.\\foo"), u"\\\\.\\foo")
|
||||
@ -531,7 +533,19 @@ class FileUtil(ReallyEqualMixin, unittest.TestCase):
|
||||
|
||||
self.failUnlessReallyEqual(baz[4], bar[4]) # same drive
|
||||
|
||||
baz_notlong = fileutil.abspath_expanduser_unicode(u"\\baz", long_path=False)
|
||||
self.failIf(baz_notlong.startswith(u"\\\\?\\"), baz_notlong)
|
||||
self.failUnlessReallyEqual(baz_notlong[1 :], u":\\baz")
|
||||
|
||||
bar_notlong = fileutil.abspath_expanduser_unicode(u"\\bar", base=baz, long_path=False)
|
||||
self.failIf(bar_notlong.startswith(u"\\\\?\\"), bar_notlong)
|
||||
self.failUnlessReallyEqual(bar_notlong[1 :], u":\\bar")
|
||||
# not u":\\baz\\bar", because \bar is absolute on the current drive.
|
||||
|
||||
self.failUnlessReallyEqual(baz_notlong[0], bar_notlong[0]) # same drive
|
||||
|
||||
self.failIfIn(u"~", fileutil.abspath_expanduser_unicode(u"~"))
|
||||
self.failIfIn(u"~", fileutil.abspath_expanduser_unicode(u"~", long_path=False))
|
||||
|
||||
cwds = ['cwd']
|
||||
try:
|
||||
@ -547,6 +561,9 @@ class FileUtil(ReallyEqualMixin, unittest.TestCase):
|
||||
for upath in (u'', u'fuu', u'f\xf9\xf9', u'/fuu', u'U:\\', u'~'):
|
||||
uabspath = fileutil.abspath_expanduser_unicode(upath)
|
||||
self.failUnless(isinstance(uabspath, unicode), uabspath)
|
||||
|
||||
uabspath_notlong = fileutil.abspath_expanduser_unicode(upath, long_path=False)
|
||||
self.failUnless(isinstance(uabspath_notlong, unicode), uabspath_notlong)
|
||||
finally:
|
||||
os.chdir(saved_cwd)
|
||||
|
||||
|
@ -281,13 +281,14 @@ try:
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
def abspath_expanduser_unicode(path, base=None):
|
||||
def abspath_expanduser_unicode(path, base=None, long_path=True):
|
||||
"""
|
||||
Return the absolute version of a path. If 'base' is given and 'path' is relative,
|
||||
the path will be expanded relative to 'base'.
|
||||
'path' must be a Unicode string. 'base', if given, must be a Unicode string
|
||||
corresponding to an absolute path as returned by a previous call to
|
||||
abspath_expanduser_unicode.
|
||||
On Windows, the result will be a long path unless long_path is given as False.
|
||||
"""
|
||||
if not isinstance(path, unicode):
|
||||
raise AssertionError("paths must be Unicode strings")
|
||||
@ -318,7 +319,7 @@ def abspath_expanduser_unicode(path, base=None):
|
||||
# there is always at least one Unicode path component.
|
||||
path = os.path.normpath(path)
|
||||
|
||||
if sys.platform == "win32":
|
||||
if sys.platform == "win32" and long_path:
|
||||
path = to_windows_long_path(path)
|
||||
|
||||
return path
|
||||
|
Loading…
Reference in New Issue
Block a user