@@ -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 }  ), 'a/b.c' )
1437+         self .assertEqual (fn (f'{ sep } { sep }  ), '///a/b.c' )
1438+         self .assertEqual (fn (f'{ sep } { sep } { sep }  ), '////a/b.c' )
1439+         self .assertEqual (fn (f'{ sep } { sep } { sep } { sep }  ), '/////a/b.c' )
1440+         self .assertEqual (fn (f'{ sep } { sep } { sep } { sep } { sep }  ), '//////a/b.c' )
1441+         self .assertEqual (fn (f'{ sep } { sep }  ), '///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 }  )
1498+         self .assertEqual (fn ('/foo/bar' ), f'{ sep } { sep }  )
1499+         self .assertEqual (fn ('//localhost/foo/bar' ), f'{ sep } { sep }  )
1500+         self .assertEqual (fn ('///foo/bar' ), f'{ sep } { sep }  )
1501+         self .assertEqual (fn ('////foo/bar' ), f'{ sep } { sep } { sep }  )
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' )
15451559
0 commit comments