mirror of
				https://github.com/python/cpython.git
				synced 2025-10-27 03:34:32 +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" | RFC1808_BASE = "http://a/b/c/d;p?q#f" | ||||||
| RFC2396_BASE = "http://a/b/c/d;p?q" | RFC2396_BASE = "http://a/b/c/d;p?q" | ||||||
| RFC3986_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 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. | # 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:g') # strict parser | ||||||
|         self.checkJoin(RFC3986_BASE, 'http:g','http://a/b/c/g') #relaxed 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): |     def test_RFC2732(self): | ||||||
|         for url, hostname, port in [ |         for url, hostname, port in [ | ||||||
|             ('http://Test.python.org:5432/foo/', 'test.python.org', 5432), |             ('http://Test.python.org:5432/foo/', 'test.python.org', 5432), | ||||||
|  |  | ||||||
|  | @ -799,67 +799,3 @@ def splitvalue(attr): | ||||||
|     match = _valueprog.match(attr) |     match = _valueprog.match(attr) | ||||||
|     if match: return match.group(1, 2) |     if match: return match.group(1, 2) | ||||||
|     return attr, None |     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