summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2023-05-09 14:04:50 (GMT)
committerGitHub <noreply@github.com>2023-05-09 14:04:50 (GMT)
commit82f789be3b15df5f6660f5fd0c563ad690ee00fb (patch)
treef9c50ed83da5f8d9623710559106e8bc0a66a10f /Lib
parentca95edf177e3c10e10d7011ed52619b1312cf15e (diff)
downloadcpython-82f789be3b15df5f6660f5fd0c563ad690ee00fb.zip
cpython-82f789be3b15df5f6660f5fd0c563ad690ee00fb.tar.gz
cpython-82f789be3b15df5f6660f5fd0c563ad690ee00fb.tar.bz2
gh-104139: Add itms-services to uses_netloc urllib.parse. (#104312)
Teach unsplit to retain the `"//"` when assembling `itms-services://?action=generate-bugs` style [Apple Platform Deployment](https://support.apple.com/en-gb/guide/deployment/depce7cefc4d/web) URLs.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_urlparse.py33
-rw-r--r--Lib/urllib/parse.py2
2 files changed, 20 insertions, 15 deletions
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
index 80fb9e5..dcdbb1c 100644
--- a/Lib/test/test_urlparse.py
+++ b/Lib/test/test_urlparse.py
@@ -72,20 +72,20 @@ class UrlParseTestCase(unittest.TestCase):
def checkRoundtrips(self, url, parsed, split):
result = urllib.parse.urlparse(url)
- self.assertEqual(result, parsed)
+ self.assertSequenceEqual(result, parsed)
t = (result.scheme, result.netloc, result.path,
result.params, result.query, result.fragment)
- self.assertEqual(t, parsed)
+ self.assertSequenceEqual(t, parsed)
# put it back together and it should be the same
result2 = urllib.parse.urlunparse(result)
- self.assertEqual(result2, url)
- self.assertEqual(result2, result.geturl())
+ self.assertSequenceEqual(result2, url)
+ self.assertSequenceEqual(result2, result.geturl())
# the result of geturl() is a fixpoint; we can always parse it
# again to get the same result:
result3 = urllib.parse.urlparse(result.geturl())
self.assertEqual(result3.geturl(), result.geturl())
- self.assertEqual(result3, result)
+ self.assertSequenceEqual(result3, result)
self.assertEqual(result3.scheme, result.scheme)
self.assertEqual(result3.netloc, result.netloc)
self.assertEqual(result3.path, result.path)
@@ -99,18 +99,18 @@ class UrlParseTestCase(unittest.TestCase):
# check the roundtrip using urlsplit() as well
result = urllib.parse.urlsplit(url)
- self.assertEqual(result, split)
+ self.assertSequenceEqual(result, split)
t = (result.scheme, result.netloc, result.path,
result.query, result.fragment)
- self.assertEqual(t, split)
+ self.assertSequenceEqual(t, split)
result2 = urllib.parse.urlunsplit(result)
- self.assertEqual(result2, url)
- self.assertEqual(result2, result.geturl())
+ self.assertSequenceEqual(result2, url)
+ self.assertSequenceEqual(result2, result.geturl())
# check the fixpoint property of re-parsing the result of geturl()
result3 = urllib.parse.urlsplit(result.geturl())
self.assertEqual(result3.geturl(), result.geturl())
- self.assertEqual(result3, result)
+ self.assertSequenceEqual(result3, result)
self.assertEqual(result3.scheme, result.scheme)
self.assertEqual(result3.netloc, result.netloc)
self.assertEqual(result3.path, result.path)
@@ -162,10 +162,15 @@ class UrlParseTestCase(unittest.TestCase):
('svn+ssh', 'svn.zope.org', '/repos/main/ZConfig/trunk/',
'', '')),
('git+ssh://git@github.com/user/project.git',
- ('git+ssh', 'git@github.com','/user/project.git',
- '','',''),
- ('git+ssh', 'git@github.com','/user/project.git',
- '', '')),
+ ('git+ssh', 'git@github.com','/user/project.git',
+ '','',''),
+ ('git+ssh', 'git@github.com','/user/project.git',
+ '', '')),
+ ('itms-services://?action=download-manifest&url=https://example.com/app',
+ ('itms-services', '', '', '',
+ 'action=download-manifest&url=https://example.com/app', ''),
+ ('itms-services', '', '',
+ 'action=download-manifest&url=https://example.com/app', '')),
]
def _encode(t):
return (t[0].encode('ascii'),
diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py
index 5f95c5f..777b7c5 100644
--- a/Lib/urllib/parse.py
+++ b/Lib/urllib/parse.py
@@ -54,7 +54,7 @@ uses_netloc = ['', 'ftp', 'http', 'gopher', 'nntp', 'telnet',
'imap', 'wais', 'file', 'mms', 'https', 'shttp',
'snews', 'prospero', 'rtsp', 'rtspu', 'rsync',
'svn', 'svn+ssh', 'sftp', 'nfs', 'git', 'git+ssh',
- 'ws', 'wss']
+ 'ws', 'wss', 'itms-services']
uses_params = ['', 'ftp', 'hdl', 'prospero', 'http', 'imap',
'https', 'shttp', 'rtsp', 'rtspu', 'sip', 'sips',