[Python-checkins] cpython (3.1): Fix Issue11474 - fix url2pathname() handling of '/C|/' on Windows

senthil.kumaran python-checkins at python.org
Thu Apr 14 07:20:58 CEST 2011


http://hg.python.org/cpython/rev/de0da2759c8c
changeset: 69348:de0da2759c8c
branch: 3.1
parent: 69342:11c72a305eb5
user: Senthil Kumaran <orsenthil at gmail.com>
date: Thu Apr 14 13:16:30 2011 +0800
summary:
 Fix Issue11474 - fix url2pathname() handling of '/C|/' on Windows
files:
 Lib/nturl2path.py | 5 ++++-
 Lib/test/test_urllib.py | 18 ++++++++++++++++++
 Misc/NEWS | 3 +++
 3 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/Lib/nturl2path.py b/Lib/nturl2path.py
--- a/Lib/nturl2path.py
+++ b/Lib/nturl2path.py
@@ -27,9 +27,12 @@
 drive = comp[0][-1].upper()
 components = comp[1].split('/')
 path = drive + ':'
- for comp in components:
+ for comp in components:
 if comp:
 path = path + '\\' + urllib.parse.unquote(comp)
+ # Issue #11474 - handing url such as |c/|
+ if path.endswith(':') and url.endswith('/'):
+ path += '\\'
 return path
 
 def pathname2url(p):
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -9,6 +9,7 @@
 import unittest
 from test import support
 import os
+import sys
 import tempfile
 import warnings
 
@@ -995,6 +996,23 @@
 "url2pathname() failed; %s != %s" %
 (expect, result))
 
+ @unittest.skipUnless(sys.platform == 'win32',
+ 'test specific to the urllib.url2path function.')
+ def test_ntpath(self):
+ given = ('/C:/', '///C:/', '/C|//')
+ expect = 'C:\\'
+ for url in given:
+ result = urllib.request.url2pathname(url)
+ self.assertEqual(expect, result,
+ 'urllib.request..url2pathname() failed; %s != %s' %
+ (expect, result))
+ given = '///C|/path'
+ expect = 'C:\\path'
+ result = urllib.request.url2pathname(given)
+ self.assertEqual(expect, result,
+ 'urllib.request.url2pathname() failed; %s != %s' %
+ (expect, result))
+
 class Utility_Tests(unittest.TestCase):
 """Testcase to test the various utility functions in the urllib."""
 
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -51,6 +51,9 @@
 Library
 -------
 
+- Issue #11474: Fix the bug with url2pathname() handling of '/C|/' on Windows.
+ Patch by Santoso Wijaya.
+
 - Issue #9233: Fix json to work properly even when _json is not available.
 
 - Issue #11703: urllib2.geturl() does not return correct url when the original
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /