| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent ae0d6cc commit fd0970c
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,7 +1,9 @@ | |||
| 1 | + import os | ||
| 1 | 2 | import sys | |
| 2 | 3 | import unittest | |
| 3 | 4 | import urllib.parse | |
| 4 | 5 | ||
| 6 | + from test.support import os_helper | ||
| 5 | 7 | from test.support import warnings_helper | |
| 6 | 8 | ||
| 7 | 9 | ||
@@ -36,7 +38,6 @@ def test_pathname2url(self): | |||
| 36 | 38 | self.assertEqual(fn('C:\\a\\b.c\\'), '///C:/a/b.c/') | |
| 37 | 39 | self.assertEqual(fn('C:\\a\\\\b.c'), '///C:/a//b.c') | |
| 38 | 40 | self.assertEqual(fn('C:\\a\\b%#c'), '///C:/a/b%25%23c') | |
| 39 | - self.assertEqual(fn('C:\\a\\b\xe9'), '///C:/a/b%C3%A9') | ||
| 40 | 41 | self.assertEqual(fn('C:\\foo\\bar\\spam.foo'), "///C:/foo/bar/spam.foo") | |
| 41 | 42 | # NTFS alternate data streams | |
| 42 | 43 | self.assertEqual(fn('C:\\foo:bar'), '///C:/foo%3Abar') | |
@@ -47,7 +48,7 @@ def test_pathname2url(self): | |||
| 47 | 48 | self.assertEqual(fn("\\\\\\folder\\test\\"), '///folder/test/') | |
| 48 | 49 | self.assertEqual(fn('\\\\some\\share\\'), '//some/share/') | |
| 49 | 50 | self.assertEqual(fn('\\\\some\\share\\a\\b.c'), '//some/share/a/b.c') | |
| 50 | - self.assertEqual(fn('\\\\some\\share\\a\\b%#c\xe9'), '//some/share/a/b%25%23c%C3%A9') | ||
| 51 | + self.assertEqual(fn('\\\\some\\share\\a\\b%#c'), '//some/share/a/b%25%23c') | ||
| 51 | 52 | # Alternate path separator | |
| 52 | 53 | self.assertEqual(fn('C:/a/b.c'), '///C:/a/b.c') | |
| 53 | 54 | self.assertEqual(fn('//some/share/a/b.c'), '//some/share/a/b.c') | |
@@ -60,14 +61,28 @@ def test_pathname2url(self): | |||
| 60 | 61 | for url in urls: | |
| 61 | 62 | self.assertEqual(fn(nturl2path.url2pathname(url)), url) | |
| 62 | 63 | ||
| 64 | + @unittest.skipUnless(os_helper.FS_NONASCII, 'need os_helper.FS_NONASCII') | ||
| 65 | + def test_pathname2url_nonascii(self): | ||
| 66 | + encoding = sys.getfilesystemencoding() | ||
| 67 | + errors = sys.getfilesystemencodeerrors() | ||
| 68 | + char = os_helper.FS_NONASCII | ||
| 69 | + quoted = urllib.parse.quote(char, encoding=encoding, errors=errors) | ||
| 70 | + self.assertEqual(nturl2path.pathname2url(f'C:\\a\\b{char}'), | ||
| 71 | + '///C:/a/b' + quoted) | ||
| 72 | + self.assertEqual(nturl2path.pathname2url(f'\\\\some\\share\\a\\b{char}'), | ||
| 73 | + '//some/share/a/b' + quoted) | ||
| 74 | + | ||
| 75 | + @unittest.skipUnless(os_helper.TESTFN_UNDECODABLE, | ||
| 76 | + 'need os_helper.TESTFN_UNDECODABLE') | ||
| 63 | 77 | def test_pathname2url_surrogates(self): | |
| 64 | 78 | # gh-156713: the filesystem encoding and error handler are used, | |
| 65 | 79 | # so that paths containing surrogate characters can be converted. | |
| 66 | 80 | encoding = sys.getfilesystemencoding() | |
| 67 | 81 | errors = sys.getfilesystemencodeerrors() | |
| 68 | - tail = urllib.parse.quote('a\udcff', encoding=encoding, errors=errors) | ||
| 69 | - self.assertEqual(nturl2path.pathname2url('C:\\a\udcff'), | ||
| 70 | - '///C:/' + tail) | ||
| 82 | + path = os.fsdecode(os_helper.TESTFN_UNDECODABLE) | ||
| 83 | + url = urllib.parse.quote(path, encoding=encoding, errors=errors) | ||
| 84 | + self.assertEqual(nturl2path.pathname2url('C:\\' + path), | ||
| 85 | + '///C:/' + url) | ||
| 71 | 86 | ||
| 72 | 87 | def test_url2pathname(self): | |
| 73 | 88 | fn = nturl2path.url2pathname | |
@@ -114,14 +129,17 @@ def test_url2pathname(self): | |||
| 114 | 129 | self.assertEqual(fn(nturl2path.pathname2url(path)), path) | |
| 115 | 130 | ||
| 116 | 131 | ||
| 132 | + @unittest.skipUnless(os_helper.TESTFN_UNDECODABLE, | ||
| 133 | + 'need os_helper.TESTFN_UNDECODABLE') | ||
| 117 | 134 | def test_url2pathname_surrogates(self): | |
| 118 | 135 | # gh-156713: the filesystem encoding and error handler are used, so | |
| 119 | 136 | # that URLs containing percent-encoded surrogates can be converted. | |
| 120 | 137 | encoding = sys.getfilesystemencoding() | |
| 121 | 138 | errors = sys.getfilesystemencodeerrors() | |
| 122 | - url = urllib.parse.quote('a\udcff', encoding=encoding, errors=errors) | ||
| 139 | + path = os.fsdecode(os_helper.TESTFN_UNDECODABLE) | ||
| 140 | + url = urllib.parse.quote(path, encoding=encoding, errors=errors) | ||
| 123 | 141 | self.assertEqual(nturl2path.url2pathname('///C:/' + url), | |
| 124 | - 'C:\\a\udcff') | ||
| 142 | + 'C:\\' + path) | ||
| 125 | 143 | ||
| 126 | 144 | ||
| 127 | 145 | if __name__ == '__main__': | |
| Back | FazBrowse Home | New Git URL |
0 commit comments