mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-20 17:52:50 +00:00
Ensure the 'base' argument to abspath_expanduser_unicode takes effect on Windows. fixes #2398
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
parent
edcdaa2799
commit
eb34e0d625
@ -487,7 +487,25 @@ class FileUtil(ReallyEqualMixin, unittest.TestCase):
|
||||
|
||||
# adapted from <http://svn.python.org/view/python/branches/release26-maint/Lib/test/test_posixpath.py?view=markup&pathrev=78279#test_abspath>
|
||||
|
||||
self.failUnlessIn(u"foo", fileutil.abspath_expanduser_unicode(u"foo"))
|
||||
foo = fileutil.abspath_expanduser_unicode(u"foo")
|
||||
self.failUnless(foo.endswith(u"\\foo"), foo)
|
||||
|
||||
foobar = fileutil.abspath_expanduser_unicode(u"bar", base=foo)
|
||||
self.failUnless(foobar.endswith(u"\\foo\\bar"), foobar)
|
||||
|
||||
if sys.platform == "win32":
|
||||
# This is checking that a drive letter is added for a path without one.
|
||||
baz = fileutil.abspath_expanduser_unicode(u"\\baz")
|
||||
self.failUnless(baz.startswith(u"\\\\?\\"), baz)
|
||||
self.failUnlessReallyEqual(baz[5 :], u":\\baz")
|
||||
|
||||
bar = fileutil.abspath_expanduser_unicode(u"\\bar", base=baz)
|
||||
self.failUnless(bar.startswith(u"\\\\?\\"), bar)
|
||||
self.failUnlessReallyEqual(bar[5 :], u":\\bar")
|
||||
# not u":\\baz\\bar", because \bar is absolute on the current drive.
|
||||
|
||||
self.failUnlessReallyEqual(baz[4], bar[4]) # same drive
|
||||
|
||||
self.failIfIn(u"~", fileutil.abspath_expanduser_unicode(u"~"))
|
||||
|
||||
cwds = ['cwd']
|
||||
|
@ -318,10 +318,14 @@ def abspath_expanduser_unicode(path, base=None):
|
||||
path = expanduser(path)
|
||||
|
||||
if _getfullpathname:
|
||||
# On Windows, os.path.isabs will return True for paths without a drive letter,
|
||||
# On Windows, os.path.isabs will incorrectly return True
|
||||
# for paths without a drive letter (that are not UNC paths),
|
||||
# e.g. "\\". See <http://bugs.python.org/issue1669539>.
|
||||
try:
|
||||
path = _getfullpathname(path or u".")
|
||||
if base is None:
|
||||
path = _getfullpathname(path or u".")
|
||||
else:
|
||||
path = _getfullpathname(os.path.join(base, path))
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user