summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSenthil Kumaran <orsenthil@gmail.com>2011-04-14 05:16:30 (GMT)
committerSenthil Kumaran <orsenthil@gmail.com>2011-04-14 05:16:30 (GMT)
commit2d2ea1b431f9cf58aa8ac45052bd2e4cf2502a5c (patch)
tree4a476efc06de2f3beb77b85e37068dc20995c40c
parent95cd91c17f4c3ce5eab27551150f5e92ecb1bc22 (diff)
downloadcpython-2d2ea1b431f9cf58aa8ac45052bd2e4cf2502a5c.zip
cpython-2d2ea1b431f9cf58aa8ac45052bd2e4cf2502a5c.tar.gz
cpython-2d2ea1b431f9cf58aa8ac45052bd2e4cf2502a5c.tar.bz2
Fix Issue11474 - fix url2pathname() handling of '/C|/' on Windows
-rw-r--r--Lib/nturl2path.py5
-rw-r--r--Lib/test/test_urllib.py18
-rw-r--r--Misc/NEWS3
3 files changed, 25 insertions, 1 deletions
diff --git a/Lib/nturl2path.py b/Lib/nturl2path.py
index ce9c3d3..511dcec 100644
--- a/Lib/nturl2path.py
+++ b/Lib/nturl2path.py
@@ -27,9 +27,12 @@ def url2pathname(url):
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
index 462a2b0..4d3509a 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -9,6 +9,7 @@ import io
import unittest
from test import support
import os
+import sys
import tempfile
import warnings
@@ -995,6 +996,23 @@ class Pathname_Tests(unittest.TestCase):
"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
index 6a4da30..8764b11 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -51,6 +51,9 @@ Core and Builtins
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