Skip to content

Commit c5f5e24

Browse files
committed
Add test methods for common posix/windows results
1 parent e1f6d10 commit c5f5e24

File tree

1 file changed

+30
-16
lines changed

1 file changed

+30
-16
lines changed

Lib/test/test_urllib.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,6 +1425,21 @@ def test_quoting(self):
14251425
"url2pathname() failed; %s != %s" %
14261426
(expect, result))
14271427

1428+
def test_pathname2url(self):
1429+
# Test cases common to Windows and POSIX.
1430+
fn = urllib.request.pathname2url
1431+
sep = os.path.sep
1432+
self.assertEqual(fn(''), '')
1433+
self.assertEqual(fn(f'{sep}'), '///')
1434+
self.assertEqual(fn(f'{sep}{sep}'), '////')
1435+
self.assertEqual(fn('a'), 'a')
1436+
self.assertEqual(fn(f'a{sep}b.c'), 'a/b.c')
1437+
self.assertEqual(fn(f'{sep}a{sep}b.c'), '///a/b.c')
1438+
self.assertEqual(fn(f'{sep}{sep}a{sep}b.c'), '////a/b.c')
1439+
self.assertEqual(fn(f'{sep}{sep}{sep}a{sep}b.c'), '/////a/b.c')
1440+
self.assertEqual(fn(f'{sep}{sep}{sep}{sep}a{sep}b.c'), '//////a/b.c')
1441+
self.assertEqual(fn(f'{sep}a{sep}b%#c'), '///a/b%25%23c')
1442+
14281443
@unittest.skipUnless(sys.platform == 'win32',
14291444
'test specific to Windows pathnames.')
14301445
def test_pathname2url_win(self):
@@ -1463,29 +1478,32 @@ def test_pathname2url_win(self):
14631478
for url in urls:
14641479
self.assertEqual(fn(urllib.request.url2pathname(url)), url)
14651480

1466-
@unittest.skipIf(sys.platform == 'win32',
1467-
'test specific to POSIX pathnames')
1468-
def test_pathname2url_posix(self):
1469-
fn = urllib.request.pathname2url
1470-
self.assertEqual(fn('/'), '///')
1471-
self.assertEqual(fn('/a/b.c'), '///a/b.c')
1472-
self.assertEqual(fn('//a/b.c'), '////a/b.c')
1473-
self.assertEqual(fn('///a/b.c'), '/////a/b.c')
1474-
self.assertEqual(fn('////a/b.c'), '//////a/b.c')
1475-
self.assertEqual(fn('/a/b%#c'), '///a/b%25%23c')
1476-
14771481
@unittest.skipUnless(os_helper.FS_NONASCII, 'need os_helper.FS_NONASCII')
14781482
def test_pathname2url_nonascii(self):
14791483
encoding = sys.getfilesystemencoding()
14801484
errors = sys.getfilesystemencodeerrors()
14811485
url = urllib.parse.quote(os_helper.FS_NONASCII, encoding=encoding, errors=errors)
14821486
self.assertEqual(urllib.request.pathname2url(os_helper.FS_NONASCII), url)
14831487

1488+
def test_url2pathname(self):
1489+
# Test cases common to Windows and POSIX.
1490+
fn = urllib.request.url2pathname
1491+
sep = os.path.sep
1492+
self.assertEqual(fn(''), '')
1493+
self.assertEqual(fn('/'), f'{sep}')
1494+
self.assertEqual(fn('///'), f'{sep}')
1495+
self.assertEqual(fn('////'), f'{sep}{sep}')
1496+
self.assertEqual(fn('foo'), 'foo')
1497+
self.assertEqual(fn('foo/bar'), f'foo{sep}bar')
1498+
self.assertEqual(fn('/foo/bar'), f'{sep}foo{sep}bar')
1499+
self.assertEqual(fn('//localhost/foo/bar'), f'{sep}foo{sep}bar')
1500+
self.assertEqual(fn('///foo/bar'), f'{sep}foo{sep}bar')
1501+
self.assertEqual(fn('////foo/bar'), f'{sep}{sep}foo{sep}bar')
1502+
14841503
@unittest.skipUnless(sys.platform == 'win32',
14851504
'test specific to Windows pathnames.')
14861505
def test_url2pathname_win(self):
14871506
fn = urllib.request.url2pathname
1488-
self.assertEqual(fn('/'), '\\')
14891507
self.assertEqual(fn('/C:/'), 'C:\\')
14901508
self.assertEqual(fn("///C|"), 'C:')
14911509
self.assertEqual(fn("///C:"), 'C:')
@@ -1531,15 +1549,11 @@ def test_url2pathname_win(self):
15311549
'test specific to POSIX pathnames')
15321550
def test_url2pathname_posix(self):
15331551
fn = urllib.request.url2pathname
1534-
self.assertEqual(fn('/foo/bar'), '/foo/bar')
15351552
self.assertRaises(urllib.error.URLError, fn, '//foo/bar')
15361553
self.assertRaises(urllib.error.URLError, fn, '//localhost:/foo/bar')
15371554
self.assertRaises(urllib.error.URLError, fn, '//:80/foo/bar')
15381555
self.assertRaises(urllib.error.URLError, fn, '//:/foo/bar')
15391556
self.assertRaises(urllib.error.URLError, fn, '//c:80/foo/bar')
1540-
self.assertEqual(fn('///foo/bar'), '/foo/bar')
1541-
self.assertEqual(fn('////foo/bar'), '//foo/bar')
1542-
self.assertEqual(fn('//localhost/foo/bar'), '/foo/bar')
15431557
self.assertEqual(fn('//127.0.0.1/foo/bar'), '/foo/bar')
15441558
self.assertEqual(fn(f'//{socket.gethostname()}/foo/bar'), '/foo/bar')
15451559

0 commit comments

Comments
 (0)