@@ -1526,8 +1526,10 @@ def test_pathname2url_win(self):
1526
1526
self .assertEqual (fn ('\\ \\ ?\\ C:\\ dir' ), '///C:/dir' )
1527
1527
self .assertEqual (fn ('\\ \\ ?\\ unc\\ server\\ share\\ dir' ), '//server/share/dir' )
1528
1528
self .assertEqual (fn ("C:" ), '///C:' )
1529
- self .assertEqual (fn ("C:\\ " ), '///C:' )
1529
+ self .assertEqual (fn ("C:\\ " ), '///C:/ ' )
1530
1530
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' )
1531
1533
self .assertEqual (fn ('C:\\ a\\ b%#c' ), '///C:/a/b%25%23c' )
1532
1534
self .assertEqual (fn ('C:\\ a\\ b\xe9 ' ), '///C:/a/b%C3%A9' )
1533
1535
self .assertEqual (fn ('C:\\ foo\\ bar\\ spam.foo' ), "///C:/foo/bar/spam.foo" )
@@ -1563,13 +1565,15 @@ def test_url2pathname_win(self):
1563
1565
self .assertEqual (fn ("///C|" ), 'C:' )
1564
1566
self .assertEqual (fn ("///C:" ), 'C:' )
1565
1567
self .assertEqual (fn ('///C:/' ), 'C:\\ ' )
1566
- self .assertEqual (fn ('/C|//' ), 'C:\\ ' )
1568
+ self .assertEqual (fn ('/C|//' ), 'C:\\ \\ ' )
1567
1569
self .assertEqual (fn ('///C|/path' ), 'C:\\ path' )
1568
1570
# No DOS drive
1569
1571
self .assertEqual (fn ("///C/test/" ), '\\ \\ \\ C\\ test\\ ' )
1570
1572
self .assertEqual (fn ("////C/test/" ), '\\ \\ C\\ test\\ ' )
1571
1573
# DOS drive paths
1572
1574
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' )
1573
1577
self .assertEqual (fn ('C|/path/to/file' ), 'C:\\ path\\ to\\ file' )
1574
1578
self .assertEqual (fn ('/C|/path/to/file' ), 'C:\\ path\\ to\\ file' )
1575
1579
self .assertEqual (fn ('///C|/path/to/file' ), 'C:\\ path\\ to\\ file' )
@@ -1583,6 +1587,9 @@ def test_url2pathname_win(self):
1583
1587
# Localhost paths
1584
1588
self .assertEqual (fn ('//localhost/C:/path/to/file' ), 'C:\\ path\\ to\\ file' )
1585
1589
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' )
1586
1593
# Round-tripping
1587
1594
paths = ['C:' ,
1588
1595
r'\\\C\test\\' ,
0 commit comments