Fix a corner case for to_filepath on Windows to make it consistent with Unix.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
parent
959a4a9c33
commit
4271e0daab
|
@ -447,6 +447,14 @@ class QuotePaths(ReallyEqualMixin, unittest.TestCase):
|
||||||
self.failUnlessReallyEqual(quote_filepath(foo_bar_fp, quotemarks=False),
|
self.failUnlessReallyEqual(quote_filepath(foo_bar_fp, quotemarks=False),
|
||||||
win32_other("C:\\foo\\bar", "/foo/bar"))
|
win32_other("C:\\foo\\bar", "/foo/bar"))
|
||||||
|
|
||||||
|
foo_longfp = FilePath(u'\\\\?\\C:\\foo')
|
||||||
|
self.failUnlessReallyEqual(quote_filepath(foo_longfp),
|
||||||
|
win32_other("'C:\\foo'", "'\\\\?\\C:\\foo'"))
|
||||||
|
self.failUnlessReallyEqual(quote_filepath(foo_longfp, quotemarks=True),
|
||||||
|
win32_other("'C:\\foo'", "'\\\\?\\C:\\foo'"))
|
||||||
|
self.failUnlessReallyEqual(quote_filepath(foo_longfp, quotemarks=False),
|
||||||
|
win32_other("C:\\foo", "\\\\?\\C:\\foo"))
|
||||||
|
|
||||||
|
|
||||||
class FilePaths(ReallyEqualMixin, unittest.TestCase):
|
class FilePaths(ReallyEqualMixin, unittest.TestCase):
|
||||||
def test_to_filepath(self):
|
def test_to_filepath(self):
|
||||||
|
|
|
@ -274,11 +274,18 @@ def extend_filepath(fp, segments):
|
||||||
return fp
|
return fp
|
||||||
|
|
||||||
def to_filepath(path):
|
def to_filepath(path):
|
||||||
precondition(isinstance(path, basestring), path=path)
|
precondition(isinstance(path, unicode if use_unicode_filepath else basestring),
|
||||||
|
path=path)
|
||||||
|
|
||||||
if isinstance(path, unicode) and not use_unicode_filepath:
|
if isinstance(path, unicode) and not use_unicode_filepath:
|
||||||
path = path.encode(filesystem_encoding)
|
path = path.encode(filesystem_encoding)
|
||||||
|
|
||||||
|
if sys.platform == "win32":
|
||||||
|
_assert(isinstance(path, unicode), path=path)
|
||||||
|
if path.startswith(u"\\\\?\\") and len(path) > 4:
|
||||||
|
# FilePath normally strips trailing path separators, but not in this case.
|
||||||
|
path = path.rstrip(u"\\")
|
||||||
|
|
||||||
return FilePath(path)
|
return FilePath(path)
|
||||||
|
|
||||||
def _decode(s):
|
def _decode(s):
|
||||||
|
|
Loading…
Reference in New Issue