mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Fix Issue11474 - fix url2pathname() handling of '/C|/' on Windows
This commit is contained in:
		
							parent
							
								
									95cd91c17f
								
							
						
					
					
						commit
						2d2ea1b431
					
				
					 3 changed files with 25 additions and 1 deletions
				
			
		|  | @ -27,9 +27,12 @@ def url2pathname(url): | ||||||
|     drive = comp[0][-1].upper() |     drive = comp[0][-1].upper() | ||||||
|     components = comp[1].split('/') |     components = comp[1].split('/') | ||||||
|     path = drive + ':' |     path = drive + ':' | ||||||
|     for  comp in components: |     for comp in components: | ||||||
|         if comp: |         if comp: | ||||||
|             path = path + '\\' + urllib.parse.unquote(comp) |             path = path + '\\' + urllib.parse.unquote(comp) | ||||||
|  |     # Issue #11474 - handing url such as |c/| | ||||||
|  |     if path.endswith(':') and url.endswith('/'): | ||||||
|  |         path += '\\' | ||||||
|     return path |     return path | ||||||
| 
 | 
 | ||||||
| def pathname2url(p): | def pathname2url(p): | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ | ||||||
| import unittest | import unittest | ||||||
| from test import support | from test import support | ||||||
| import os | import os | ||||||
|  | import sys | ||||||
| import tempfile | import tempfile | ||||||
| import warnings | import warnings | ||||||
| 
 | 
 | ||||||
|  | @ -995,6 +996,23 @@ def test_quoting(self): | ||||||
|                          "url2pathname() failed; %s != %s" % |                          "url2pathname() failed; %s != %s" % | ||||||
|                          (expect, result)) |                          (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): | class Utility_Tests(unittest.TestCase): | ||||||
|     """Testcase to test the various utility functions in the urllib.""" |     """Testcase to test the various utility functions in the urllib.""" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -51,6 +51,9 @@ Core and Builtins | ||||||
| Library | 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 #9233: Fix json to work properly even when _json is not available. | ||||||
| 
 | 
 | ||||||
| - Issue #11703: urllib2.geturl() does not return correct url when the original | - Issue #11703: urllib2.geturl() does not return correct url when the original | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Senthil Kumaran
						Senthil Kumaran