[utils] Improve urljoin
This commit is contained in:
		| @@ -448,11 +448,14 @@ class TestUtil(unittest.TestCase): | ||||
|  | ||||
|     def test_urljoin(self): | ||||
|         self.assertEqual(urljoin('http://foo.de/', '/a/b/c.txt'), 'http://foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin('//foo.de/', '/a/b/c.txt'), '//foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin('http://foo.de/', 'a/b/c.txt'), 'http://foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin('http://foo.de', '/a/b/c.txt'), 'http://foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin('http://foo.de', 'a/b/c.txt'), 'http://foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin('http://foo.de/', 'http://foo.de/a/b/c.txt'), 'http://foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin('http://foo.de/', '//foo.de/a/b/c.txt'), '//foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin(None, 'http://foo.de/a/b/c.txt'), 'http://foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin(None, '//foo.de/a/b/c.txt'), '//foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin('', 'http://foo.de/a/b/c.txt'), 'http://foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin(['foobar'], 'http://foo.de/a/b/c.txt'), 'http://foo.de/a/b/c.txt') | ||||
|         self.assertEqual(urljoin('http://foo.de/', None), None) | ||||
|   | ||||
| @@ -1703,9 +1703,9 @@ def base_url(url): | ||||
| def urljoin(base, path): | ||||
|     if not isinstance(path, compat_str) or not path: | ||||
|         return None | ||||
|     if re.match(r'https?://', path): | ||||
|     if re.match(r'^(?:https?:)?//', path): | ||||
|         return path | ||||
|     if not isinstance(base, compat_str) or not re.match(r'https?://', base): | ||||
|     if not isinstance(base, compat_str) or not re.match(r'^(?:https?:)?//', base): | ||||
|         return None | ||||
|     return compat_urlparse.urljoin(base, path) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․