[Python-checkins] r85693 - in python/branches/release31-maint: Lib/ntpath.py Lib/posixpath.py Lib/test/test_ntpath.py Lib/test/test_posixpath.py Misc/NEWS
hirokazu.yamamoto
python-checkins at python.org
Mon Oct 18 15:49:10 CEST 2010
Author: hirokazu.yamamoto
Date: Mon Oct 18 15:49:09 2010
New Revision: 85693
Log:
Merged revisions 85689 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r85689 | hirokazu.yamamoto | 2010-10-18 21:13:18 +0900 | 3 lines
Issue #5117: Case normalization was needed on ntpath.relpath(). And
fixed root directory issue on posixpath.relpath(). (Ported working fixes
from ntpath)
........
Modified:
python/branches/release31-maint/ (props changed)
python/branches/release31-maint/Lib/ntpath.py
python/branches/release31-maint/Lib/posixpath.py
python/branches/release31-maint/Lib/test/test_ntpath.py
python/branches/release31-maint/Lib/test/test_posixpath.py
python/branches/release31-maint/Misc/NEWS
Modified: python/branches/release31-maint/Lib/ntpath.py
==============================================================================
--- python/branches/release31-maint/Lib/ntpath.py (original)
+++ python/branches/release31-maint/Lib/ntpath.py Mon Oct 18 15:49:09 2010
@@ -600,7 +600,7 @@
path_abs = abspath(normpath(path))
start_drive, start_rest = splitdrive(start_abs)
path_drive, path_rest = splitdrive(path_abs)
- if start_drive != path_drive:
+ if normcase(start_drive) != normcase(path_drive):
error = "path is on mount '{0}', start on mount '{1}'".format(
path_drive, start_drive)
raise ValueError(error)
@@ -610,7 +610,7 @@
# Work out how much of the filepath is shared by start and path.
i = 0
for e1, e2 in zip(start_list, path_list):
- if e1 != e2:
+ if normcase(e1) != normcase(e2):
break
i += 1
Modified: python/branches/release31-maint/Lib/posixpath.py
==============================================================================
--- python/branches/release31-maint/Lib/posixpath.py (original)
+++ python/branches/release31-maint/Lib/posixpath.py Mon Oct 18 15:49:09 2010
@@ -444,8 +444,8 @@
if start is None:
start = curdir
- start_list = abspath(start).split(sep)
- path_list = abspath(path).split(sep)
+ start_list = [x for x in abspath(start).split(sep) if x]
+ path_list = [x for x in abspath(path).split(sep) if x]
# Work out how much of the filepath is shared by start and path.
i = len(commonprefix([start_list, path_list]))
Modified: python/branches/release31-maint/Lib/test/test_ntpath.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_ntpath.py (original)
+++ python/branches/release31-maint/Lib/test/test_ntpath.py Mon Oct 18 15:49:09 2010
@@ -236,6 +236,7 @@
tester('ntpath.relpath("/", "/")', '.')
tester('ntpath.relpath("/a", "/a")', '.')
tester('ntpath.relpath("/a/b", "/a/b")', '.')
+ tester('ntpath.relpath("c:/foo", "C:/FOO")', '.')
def test_main():
Modified: python/branches/release31-maint/Lib/test/test_posixpath.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_posixpath.py (original)
+++ python/branches/release31-maint/Lib/test/test_posixpath.py Mon Oct 18 15:49:09 2010
@@ -602,6 +602,15 @@
"../"+curdir+"/a/b")
self.assertEqual(posixpath.relpath("a", "b/c"), "../../a")
self.assertEqual(posixpath.relpath("a", "a"), ".")
+ self.assertEqual(posixpath.relpath("/foo/bar/bat", "/x/y/z"), '../../../foo/bar/bat')
+ self.assertEqual(posixpath.relpath("/foo/bar/bat", "/foo/bar"), 'bat')
+ self.assertEqual(posixpath.relpath("/foo/bar/bat", "/"), 'foo/bar/bat')
+ self.assertEqual(posixpath.relpath("/", "/foo/bar/bat"), '../../..')
+ self.assertEqual(posixpath.relpath("/foo/bar/bat", "/x"), '../foo/bar/bat')
+ self.assertEqual(posixpath.relpath("/x", "/foo/bar/bat"), '../../../x')
+ self.assertEqual(posixpath.relpath("/", "/"), '.')
+ self.assertEqual(posixpath.relpath("/a", "/a"), '.')
+ self.assertEqual(posixpath.relpath("/a/b", "/a/b"), '.')
finally:
os.getcwd = real_getcwd
@@ -620,6 +629,15 @@
b"../"+curdir+b"/a/b")
self.assertEqual(posixpath.relpath(b"a", b"b/c"), b"../../a")
self.assertEqual(posixpath.relpath(b"a", b"a"), b".")
+ self.assertEqual(posixpath.relpath(b"/foo/bar/bat", b"/x/y/z"), b'../../../foo/bar/bat')
+ self.assertEqual(posixpath.relpath(b"/foo/bar/bat", b"/foo/bar"), b'bat')
+ self.assertEqual(posixpath.relpath(b"/foo/bar/bat", b"/"), b'foo/bar/bat')
+ self.assertEqual(posixpath.relpath(b"/", b"/foo/bar/bat"), b'../../..')
+ self.assertEqual(posixpath.relpath(b"/foo/bar/bat", b"/x"), b'../foo/bar/bat')
+ self.assertEqual(posixpath.relpath(b"/x", b"/foo/bar/bat"), b'../../../x')
+ self.assertEqual(posixpath.relpath(b"/", b"/"), b'.')
+ self.assertEqual(posixpath.relpath(b"/a", b"/a"), b'.')
+ self.assertEqual(posixpath.relpath(b"/a/b", b"/a/b"), b'.')
self.assertRaises(TypeError, posixpath.relpath, b"bytes", "str")
self.assertRaises(TypeError, posixpath.relpath, "str", b"bytes")
Modified: python/branches/release31-maint/Misc/NEWS
==============================================================================
--- python/branches/release31-maint/Misc/NEWS (original)
+++ python/branches/release31-maint/Misc/NEWS Mon Oct 18 15:49:09 2010
@@ -128,6 +128,10 @@
Library
-------
+- Issue #5117: Case normalization was needed on ntpath.relpath(). And
+ fixed root directory issue on posixpath.relpath(). (Ported working fixes
+ from ntpath)
+
- Issue #10041: The signature of optional arguments in socket.makefile()
didn't match that of io.open(), and they also didn't get forwarded
properly to TextIOWrapper in text mode. Patch by Kai Zhu.
More information about the Python-checkins
mailing list