diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2013-12-16 13:14:19 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-12-16 13:14:19 (GMT) |
commit | cc83b0c8f6089d67e998b4322000c1805f4cb06e (patch) | |
tree | 681cb34e68fc5ff71d78610771c445b955966e25 | |
parent | f5ad91c392199fe8fabeed34d1dce6f8be3a0921 (diff) | |
parent | 593568bf47600154b760edf21f22090ff60a2a74 (diff) | |
download | cpython-cc83b0c8f6089d67e998b4322000c1805f4cb06e.zip cpython-cc83b0c8f6089d67e998b4322000c1805f4cb06e.tar.gz cpython-cc83b0c8f6089d67e998b4322000c1805f4cb06e.tar.bz2 |
Issue #19912: Fixed numerous bugs in ntpath.splitunc().
* splitunc() no more return illegal result for paths with redundant slashes.
* splitunc() now correctly processes the 'İ' character
(U+0130, LATIN CAPITAL LETTER I WITH DOT ABOVE).
* Deprecation warnings now emitted for every use of splitunc().
* Added tests for splitunc().
-rw-r--r-- | Lib/ntpath.py | 26 | ||||
-rw-r--r-- | Lib/test/test_ntpath.py | 23 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 33 insertions, 20 deletions
diff --git a/Lib/ntpath.py b/Lib/ntpath.py index 3d9e200..dd64962 100644 --- a/Lib/ntpath.py +++ b/Lib/ntpath.py @@ -240,26 +240,12 @@ def splitunc(p): """ import warnings warnings.warn("ntpath.splitunc is deprecated, use ntpath.splitdrive instead", - DeprecationWarning) - sep = _get_sep(p) - if not p[1:2]: - return p[:0], p # Drive letter present - firstTwo = p[0:2] - if normcase(firstTwo) == sep + sep: - # is a UNC path: - # vvvvvvvvvvvvvvvvvvvv equivalent to drive letter - # \\machine\mountpoint\directories... - # directory ^^^^^^^^^^^^^^^ - normp = normcase(p) - index = normp.find(sep, 2) - if index == -1: - ##raise RuntimeError, 'illegal UNC path: "' + p + '"' - return (p[:0], p) - index = normp.find(sep, index + 1) - if index == -1: - index = len(p) - return p[:index], p[index:] - return p[:0], p + DeprecationWarning, 2) + drive, path = splitdrive(p) + if len(drive) == 2: + # Drive letter present + return p[:0], p + return drive, path # Split a path in head (everything up to the last '/') and tail (the diff --git a/Lib/test/test_ntpath.py b/Lib/test/test_ntpath.py index 767a5b1..2e6ba63 100644 --- a/Lib/test/test_ntpath.py +++ b/Lib/test/test_ntpath.py @@ -70,6 +70,29 @@ class TestNtpath(unittest.TestCase): self.assertEqual(ntpath.splitdrive('//conky/MOUNTPOİNT/foo/bar'), ('//conky/MOUNTPOİNT', '/foo/bar')) + def test_splitunc(self): + with self.assertWarns(DeprecationWarning): + ntpath.splitunc('') + with support.check_warnings(('', DeprecationWarning)): + tester('ntpath.splitunc("c:\\foo\\bar")', + ('', 'c:\\foo\\bar')) + tester('ntpath.splitunc("c:/foo/bar")', + ('', 'c:/foo/bar')) + tester('ntpath.splitunc("\\\\conky\\mountpoint\\foo\\bar")', + ('\\\\conky\\mountpoint', '\\foo\\bar')) + tester('ntpath.splitunc("//conky/mountpoint/foo/bar")', + ('//conky/mountpoint', '/foo/bar')) + tester('ntpath.splitunc("\\\\\\conky\\mountpoint\\foo\\bar")', + ('', '\\\\\\conky\\mountpoint\\foo\\bar')) + tester('ntpath.splitunc("///conky/mountpoint/foo/bar")', + ('', '///conky/mountpoint/foo/bar')) + tester('ntpath.splitunc("\\\\conky\\\\mountpoint\\foo\\bar")', + ('', '\\\\conky\\\\mountpoint\\foo\\bar')) + tester('ntpath.splitunc("//conky//mountpoint/foo/bar")', + ('', '//conky//mountpoint/foo/bar')) + self.assertEqual(ntpath.splitunc('//conky/MOUNTPOİNT/foo/bar'), + ('//conky/MOUNTPOİNT', '/foo/bar')) + def test_split(self): tester('ntpath.split("c:\\foo\\bar")', ('c:\\foo', 'bar')) tester('ntpath.split("\\\\conky\\mountpoint\\foo\\bar")', @@ -44,6 +44,8 @@ Core and Builtins Library ------- +- Issue #19912: Fixed numerous bugs in ntpath.splitunc(). + - Issue #19911: ntpath.splitdrive() now correctly processes the 'İ' character (U+0130, LATIN CAPITAL LETTER I WITH DOT ABOVE). @@ -183,6 +185,8 @@ IDLE Tests ----- +- Issue #19912: Added tests for ntpath.splitunc(). + - Issue #19828: Fixed test_site when the whole suite is run with -S. - Issue #19928: Implemented a test for repr() of cell objects. |