mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Fix Issue5842 - Moving the tests out of urllib.parse module
This commit is contained in:
		
							parent
							
								
									fc9e08de3a
								
							
						
					
					
						commit
						aa69d4d00f
					
				
					 2 changed files with 32 additions and 64 deletions
				
			
		|  | @ -7,6 +7,7 @@ | |||
| RFC1808_BASE = "http://a/b/c/d;p?q#f" | ||||
| RFC2396_BASE = "http://a/b/c/d;p?q" | ||||
| RFC3986_BASE = 'http://a/b/c/d;p?q' | ||||
| SIMPLE_BASE  = 'http://a/b/c/d' | ||||
| 
 | ||||
| # A list of test cases.  Each test case is a a two-tuple that contains | ||||
| # a string with the query and a dictionary with the expected result. | ||||
|  | @ -295,6 +296,37 @@ def test_RFC3986(self): | |||
|         #self.checkJoin(RFC3986_BASE, 'http:g','http:g') # strict parser | ||||
|         self.checkJoin(RFC3986_BASE, 'http:g','http://a/b/c/g') #relaxed parser | ||||
| 
 | ||||
|     def test_urljoins(self): | ||||
|         self.checkJoin(SIMPLE_BASE, 'g:h','g:h') | ||||
|         self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g') | ||||
|         self.checkJoin(SIMPLE_BASE, 'http:','http://a/b/c/d') | ||||
|         self.checkJoin(SIMPLE_BASE, 'g','http://a/b/c/g') | ||||
|         self.checkJoin(SIMPLE_BASE, './g','http://a/b/c/g') | ||||
|         self.checkJoin(SIMPLE_BASE, 'g/','http://a/b/c/g/') | ||||
|         self.checkJoin(SIMPLE_BASE, '/g','http://a/g') | ||||
|         self.checkJoin(SIMPLE_BASE, '//g','http://g') | ||||
|         self.checkJoin(SIMPLE_BASE, '?y','http://a/b/c/d?y') | ||||
|         self.checkJoin(SIMPLE_BASE, 'g?y','http://a/b/c/g?y') | ||||
|         self.checkJoin(SIMPLE_BASE, 'g?y/./x','http://a/b/c/g?y/./x') | ||||
|         self.checkJoin(SIMPLE_BASE, '.','http://a/b/c/') | ||||
|         self.checkJoin(SIMPLE_BASE, './','http://a/b/c/') | ||||
|         self.checkJoin(SIMPLE_BASE, '..','http://a/b/') | ||||
|         self.checkJoin(SIMPLE_BASE, '../','http://a/b/') | ||||
|         self.checkJoin(SIMPLE_BASE, '../g','http://a/b/g') | ||||
|         self.checkJoin(SIMPLE_BASE, '../..','http://a/') | ||||
|         self.checkJoin(SIMPLE_BASE, '../../g','http://a/g') | ||||
|         self.checkJoin(SIMPLE_BASE, '../../../g','http://a/../g') | ||||
|         self.checkJoin(SIMPLE_BASE, './../g','http://a/b/g') | ||||
|         self.checkJoin(SIMPLE_BASE, './g/.','http://a/b/c/g/') | ||||
|         self.checkJoin(SIMPLE_BASE, '/./g','http://a/./g') | ||||
|         self.checkJoin(SIMPLE_BASE, 'g/./h','http://a/b/c/g/h') | ||||
|         self.checkJoin(SIMPLE_BASE, 'g/../h','http://a/b/c/h') | ||||
|         self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g') | ||||
|         self.checkJoin(SIMPLE_BASE, 'http:','http://a/b/c/d') | ||||
|         self.checkJoin(SIMPLE_BASE, 'http:?y','http://a/b/c/d?y') | ||||
|         self.checkJoin(SIMPLE_BASE, 'http:g?y','http://a/b/c/g?y') | ||||
|         self.checkJoin(SIMPLE_BASE, 'http:g?y/./x','http://a/b/c/g?y/./x') | ||||
| 
 | ||||
|     def test_RFC2732(self): | ||||
|         for url, hostname, port in [ | ||||
|             ('http://Test.python.org:5432/foo/', 'test.python.org', 5432), | ||||
|  |  | |||
|  | @ -799,67 +799,3 @@ def splitvalue(attr): | |||
|     match = _valueprog.match(attr) | ||||
|     if match: return match.group(1, 2) | ||||
|     return attr, None | ||||
| 
 | ||||
| test_input = """ | ||||
|       http://a/b/c/d | ||||
| 
 | ||||
|       g:h        = <URL:g:h> | ||||
|       http:g     = <URL:http://a/b/c/g> | ||||
|       http:      = <URL:http://a/b/c/d> | ||||
|       g          = <URL:http://a/b/c/g> | ||||
|       ./g        = <URL:http://a/b/c/g> | ||||
|       g/         = <URL:http://a/b/c/g/> | ||||
|       /g         = <URL:http://a/g> | ||||
|       //g        = <URL:http://g> | ||||
|       ?y         = <URL:http://a/b/c/d?y> | ||||
|       g?y        = <URL:http://a/b/c/g?y> | ||||
|       g?y/./x    = <URL:http://a/b/c/g?y/./x> | ||||
|       .          = <URL:http://a/b/c/> | ||||
|       ./         = <URL:http://a/b/c/> | ||||
|       ..         = <URL:http://a/b/> | ||||
|       ../        = <URL:http://a/b/> | ||||
|       ../g       = <URL:http://a/b/g> | ||||
|       ../..      = <URL:http://a/> | ||||
|       ../../g    = <URL:http://a/g> | ||||
|       ../../../g = <URL:http://a/../g> | ||||
|       ./../g     = <URL:http://a/b/g> | ||||
|       ./g/.      = <URL:http://a/b/c/g/> | ||||
|       /./g       = <URL:http://a/./g> | ||||
|       g/./h      = <URL:http://a/b/c/g/h> | ||||
|       g/../h     = <URL:http://a/b/c/h> | ||||
|       http:g     = <URL:http://a/b/c/g> | ||||
|       http:      = <URL:http://a/b/c/d> | ||||
|       http:?y         = <URL:http://a/b/c/d?y> | ||||
|       http:g?y        = <URL:http://a/b/c/g?y> | ||||
|       http:g?y/./x    = <URL:http://a/b/c/g?y/./x> | ||||
| """ | ||||
| 
 | ||||
| def test(): | ||||
|     base = '' | ||||
|     if sys.argv[1:]: | ||||
|         fn = sys.argv[1] | ||||
|         if fn == '-': | ||||
|             fp = sys.stdin | ||||
|         else: | ||||
|             fp = open(fn) | ||||
|     else: | ||||
|         from io import StringIO | ||||
|         fp = StringIO(test_input) | ||||
|     for line in fp: | ||||
|         words = line.split() | ||||
|         if not words: | ||||
|             continue | ||||
|         url = words[0] | ||||
|         parts = urlparse(url) | ||||
|         print('%-10s : %s' % (url, parts)) | ||||
|         abs = urljoin(base, url) | ||||
|         if not base: | ||||
|             base = abs | ||||
|         wrapped = '<URL:%s>' % abs | ||||
|         print('%-10s = %s' % (url, wrapped)) | ||||
|         if len(words) == 3 and words[1] == '=': | ||||
|             if wrapped != words[2]: | ||||
|                 print('EXPECTED', words[2], '!!!!!!!!!!') | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     test() | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Senthil Kumaran
						Senthil Kumaran