mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	Issue #22278: Fix urljoin problem with relative urls, a regression observed
after changes to issue22118 were submitted. Patch contributed by Demian Brecht and reviewed by Antoine Pitrou.
This commit is contained in:
		
							parent
							
								
									e6c27c9f6b
								
							
						
					
					
						commit
						a66e3885fb
					
				
					 3 changed files with 20 additions and 1 deletions
				
			
		|  | @ -380,6 +380,18 @@ def test_urljoins(self): | |||
|         # self.checkJoin(SIMPLE_BASE, '../../../g','http://a/../g') | ||||
|         # self.checkJoin(SIMPLE_BASE, '/./g','http://a/./g') | ||||
| 
 | ||||
|         # test for issue22118 duplicate slashes | ||||
|         self.checkJoin(SIMPLE_BASE + '/', 'foo', SIMPLE_BASE + '/foo') | ||||
| 
 | ||||
|         # Non-RFC-defined tests, covering variations of base and trailing | ||||
|         # slashes | ||||
|         self.checkJoin('http://a/b/c/d/e/', '../../f/g/', 'http://a/b/c/f/g/') | ||||
|         self.checkJoin('http://a/b/c/d/e', '../../f/g/', 'http://a/b/f/g/') | ||||
|         self.checkJoin('http://a/b/c/d/e/', '/../../f/g/', 'http://a/f/g/') | ||||
|         self.checkJoin('http://a/b/c/d/e', '/../../f/g/', 'http://a/f/g/') | ||||
|         self.checkJoin('http://a/b/c/d/e/', '../../f/g', 'http://a/b/c/f/g') | ||||
|         self.checkJoin('http://a/b/', '../../f/g/', 'http://a/f/g/') | ||||
| 
 | ||||
|     def test_RFC2732(self): | ||||
|         str_cases = [ | ||||
|             ('http://Test.python.org:5432/foo/', 'test.python.org', 5432), | ||||
|  |  | |||
|  | @ -443,6 +443,10 @@ def urljoin(base, url, allow_fragments=True): | |||
|         segments = path.split('/') | ||||
|     else: | ||||
|         segments = base_parts + path.split('/') | ||||
|         # filter out elements that would cause redundant slashes on re-joining | ||||
|         # the resolved_path | ||||
|         segments = segments[0:1] + [ | ||||
|             s for s in segments[1:-1] if len(s) > 0] + segments[-1:] | ||||
| 
 | ||||
|     resolved_path = [] | ||||
| 
 | ||||
|  | @ -465,7 +469,7 @@ def urljoin(base, url, allow_fragments=True): | |||
|         resolved_path.append('') | ||||
| 
 | ||||
|     return _coerce_result(urlunparse((scheme, netloc, '/'.join( | ||||
|         resolved_path), params, query, fragment))) | ||||
|         resolved_path) or '/', params, query, fragment))) | ||||
| 
 | ||||
| 
 | ||||
| def urldefrag(url): | ||||
|  |  | |||
|  | @ -137,6 +137,9 @@ Core and Builtins | |||
| Library | ||||
| ------- | ||||
| 
 | ||||
| - Issue #22278: Fix urljoin problem with relative urls, a regression observed | ||||
|   after changes to issue22118 were submitted. | ||||
| 
 | ||||
| - Issue #22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re | ||||
|   module.  Removed trailing spaces in debugging output. | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Senthil Kumaran
						Senthil Kumaran