@@ -1526,8 +1526,10 @@ def test_pathname2url_win(self):
15261526 self .assertEqual (fn ('\\ \\ ?\\ C:\\ dir' ), '///C:/dir' )
15271527 self .assertEqual (fn ('\\ \\ ?\\ unc\\ server\\ share\\ dir' ), '//server/share/dir' )
15281528 self .assertEqual (fn ("C:" ), '///C:' )
1529- self .assertEqual (fn ("C:\\ " ), '///C:' )
1529+ self .assertEqual (fn ("C:\\ " ), '///C:/ ' )
15301530 self .assertEqual (fn ('C:\\ a\\ b.c' ), '///C:/a/b.c' )
1531+ self .assertEqual (fn ('C:\\ a\\ b.c\\ ' ), '///C:/a/b.c/' )
1532+ self .assertEqual (fn ('C:\\ a\\ \\ b.c' ), '///C:/a//b.c' )
15311533 self .assertEqual (fn ('C:\\ a\\ b%#c' ), '///C:/a/b%25%23c' )
15321534 self .assertEqual (fn ('C:\\ a\\ b\xe9 ' ), '///C:/a/b%C3%A9' )
15331535 self .assertEqual (fn ('C:\\ foo\\ bar\\ spam.foo' ), "///C:/foo/bar/spam.foo" )
@@ -1563,13 +1565,15 @@ def test_url2pathname_win(self):
15631565 self .assertEqual (fn ("///C|" ), 'C:' )
15641566 self .assertEqual (fn ("///C:" ), 'C:' )
15651567 self .assertEqual (fn ('///C:/' ), 'C:\\ ' )
1566- self .assertEqual (fn ('/C|//' ), 'C:\\ ' )
1568+ self .assertEqual (fn ('/C|//' ), 'C:\\ \\ ' )
15671569 self .assertEqual (fn ('///C|/path' ), 'C:\\ path' )
15681570 # No DOS drive
15691571 self .assertEqual (fn ("///C/test/" ), '\\ \\ \\ C\\ test\\ ' )
15701572 self .assertEqual (fn ("////C/test/" ), '\\ \\ C\\ test\\ ' )
15711573 # DOS drive paths
15721574 self .assertEqual (fn ('C:/path/to/file' ), 'C:\\ path\\ to\\ file' )
1575+ self .assertEqual (fn ('C:/path/to/file/' ), 'C:\\ path\\ to\\ file\\ ' )
1576+ self .assertEqual (fn ('C:/path/to//file' ), 'C:\\ path\\ to\\ \\ file' )
15731577 self .assertEqual (fn ('C|/path/to/file' ), 'C:\\ path\\ to\\ file' )
15741578 self .assertEqual (fn ('/C|/path/to/file' ), 'C:\\ path\\ to\\ file' )
15751579 self .assertEqual (fn ('///C|/path/to/file' ), 'C:\\ path\\ to\\ file' )
@@ -1583,6 +1587,9 @@ def test_url2pathname_win(self):
15831587 # Localhost paths
15841588 self .assertEqual (fn ('//localhost/C:/path/to/file' ), 'C:\\ path\\ to\\ file' )
15851589 self .assertEqual (fn ('//localhost/C|/path/to/file' ), 'C:\\ path\\ to\\ file' )
1590+ # Percent-encoded forward slashes are preserved for backwards compatibility
1591+ self .assertEqual (fn ('C:/foo%2fbar' ), 'C:\\ foo/bar' )
1592+ self .assertEqual (fn ('//server/share/foo%2fbar' ), '\\ \\ server\\ share\\ foo/bar' )
15861593 # Round-tripping
15871594 paths = ['C:' ,
15881595 r'\\\C\test\\' ,
0 commit comments