Mercurial > hgrepos > Python > apps > py-cutils
comparison tests/test_walk.py @ 373:9cba56c87946
All walk tests with .npath and friends also
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sun, 13 Apr 2025 14:24:53 +0200 |
| parents | a766264ff5bb |
| children |
comparison
equal
deleted
inserted
replaced
| 372:bfe1160fbfd3 | 373:9cba56c87946 |
|---|---|
| 74 | 74 |
| 75 def test_ascii(self): | 75 def test_ascii(self): |
| 76 entry = walk.WalkDirEntry.from_path_name("tests", "_test_setup.py") | 76 entry = walk.WalkDirEntry.from_path_name("tests", "_test_setup.py") |
| 77 self.assertEqual("_test_setup.py", entry.name) | 77 self.assertEqual("_test_setup.py", entry.name) |
| 78 self.assertEqual("tests/_test_setup.py", entry.path) | 78 self.assertEqual("tests/_test_setup.py", entry.path) |
| 79 self.assertEqual("tests/_test_setup.py", entry.npath) | |
| 79 self.assertEqual(u"_test_setup.py", entry.uname) | 80 self.assertEqual(u"_test_setup.py", entry.uname) |
| 80 self.assertEqual(u"tests/_test_setup.py", entry.upath) | 81 self.assertEqual(u"tests/_test_setup.py", entry.upath) |
| 82 self.assertEqual(u"tests/_test_setup.py", entry.unpath) | |
| 81 self.assertEqual(b"_test_setup.py", entry.u8name) | 83 self.assertEqual(b"_test_setup.py", entry.u8name) |
| 82 self.assertEqual(b"tests/_test_setup.py", entry.u8path) | 84 self.assertEqual(b"tests/_test_setup.py", entry.u8path) |
| 85 self.assertEqual(b"tests/_test_setup.py", entry.u8npath) | |
| 83 self.assertEqual(b"_test_setup.py", entry.alt_u8name) | 86 self.assertEqual(b"_test_setup.py", entry.alt_u8name) |
| 84 self.assertEqual(b"tests/_test_setup.py", entry.alt_u8path) | 87 self.assertEqual(b"tests/_test_setup.py", entry.alt_u8path) |
| 88 self.assertEqual(b"tests/_test_setup.py", entry.alt_u8npath) | |
| 85 self.assertEqual(b"_test_setup.py", entry.alt_fsname) | 89 self.assertEqual(b"_test_setup.py", entry.alt_fsname) |
| 86 self.assertEqual(b"tests/_test_setup.py", entry.alt_fspath) | 90 self.assertEqual(b"tests/_test_setup.py", entry.alt_fspath) |
| 91 self.assertEqual(b"tests/_test_setup.py", entry.alt_fsnpath) | |
| 87 | 92 |
| 88 @unittest.skipIf(sys.version_info[0] < 3, "Skip on Python2") | 93 @unittest.skipIf(sys.version_info[0] < 3, "Skip on Python2") |
| 89 def test_with_surrogate_escaped_name(self): | 94 def test_with_surrogate_escaped_name(self): |
| 90 # instantiate with a surrogate escaped path from PEP 383 | 95 # instantiate with a surrogate escaped path from PEP 383 |
| 91 entry = walk.WalkDirEntry.from_path_name( | 96 entry = walk.WalkDirEntry.from_path_name( |
| 92 "tests", "test-\udcc4", _do_stat=False) | 97 "tests", "test-\udcc4", _do_stat=False) |
| 93 self.assertEqual("test-\udcc4", entry.name) | 98 self.assertEqual("test-\udcc4", entry.name) |
| 94 self.assertEqual("tests/test-\udcc4", entry.path) | 99 self.assertEqual("tests/test-\udcc4", entry.path) |
| 100 self.assertEqual("tests/test-\udcc4", entry.npath) | |
| 95 self.assertEqual(b"test-\xc4", entry.fsname) | 101 self.assertEqual(b"test-\xc4", entry.fsname) |
| 96 self.assertEqual(b"tests/test-\xc4", entry.fspath) | 102 self.assertEqual(b"tests/test-\xc4", entry.fspath) |
| 103 self.assertEqual(b"tests/test-\xc4", entry.fsnpath) | |
| 97 self.assertEqual(b"test-\xc4", entry.alt_fsname) | 104 self.assertEqual(b"test-\xc4", entry.alt_fsname) |
| 98 self.assertEqual(b"tests/test-\xc4", entry.alt_fspath) | 105 self.assertEqual(b"tests/test-\xc4", entry.alt_fspath) |
| 106 self.assertEqual(b"tests/test-\xc4", entry.alt_fsnpath) | |
| 99 | 107 |
| 100 self.assertIsNone(entry.uname) | 108 self.assertIsNone(entry.uname) |
| 101 self.assertIsNone(entry.upath) | 109 self.assertIsNone(entry.upath) |
| 110 self.assertIsNone(entry.unpath) | |
| 102 self.assertIsNone(entry.u8name) | 111 self.assertIsNone(entry.u8name) |
| 103 self.assertIsNone(entry.u8path) | 112 self.assertIsNone(entry.u8path) |
| 113 self.assertIsNone(entry.u8npath) | |
| 104 | 114 |
| 105 self.assertEqual(b"test-\\udcc4", entry.alt_u8name) | 115 self.assertEqual(b"test-\\udcc4", entry.alt_u8name) |
| 106 self.assertEqual(b"tests/test-\\udcc4", entry.alt_u8path) | 116 self.assertEqual(b"tests/test-\\udcc4", entry.alt_u8path) |
| 117 self.assertEqual(b"tests/test-\\udcc4", entry.alt_u8npath) | |
| 107 | 118 |
| 108 @unittest.skipIf(sys.version_info[0] < 3, "Skip on Python2") | 119 @unittest.skipIf(sys.version_info[0] < 3, "Skip on Python2") |
| 109 def test_with_surrogate_escaped_path(self): | 120 def test_with_surrogate_escaped_path(self): |
| 110 # instantiate with a surrogate escaped path from PEP 383 | 121 # instantiate with a surrogate escaped path from PEP 383 |
| 111 entry = walk.WalkDirEntry.from_path_name( | 122 entry = walk.WalkDirEntry.from_path_name( |
| 112 "tests\udcc5", "test", _do_stat=False) | 123 "tests\udcc5", "test", _do_stat=False) |
| 113 self.assertEqual("test", entry.name) | 124 self.assertEqual("test", entry.name) |
| 114 self.assertEqual("tests\udcc5/test", entry.path) | 125 self.assertEqual("tests\udcc5/test", entry.path) |
| 126 self.assertEqual("tests\udcc5/test", entry.npath) | |
| 115 self.assertEqual(b"test", entry.fsname) | 127 self.assertEqual(b"test", entry.fsname) |
| 116 self.assertEqual(b"tests\xc5/test", entry.fspath) | 128 self.assertEqual(b"tests\xc5/test", entry.fspath) |
| 129 self.assertEqual(b"tests\xc5/test", entry.fsnpath) | |
| 117 self.assertEqual(b"test", entry.alt_fsname) | 130 self.assertEqual(b"test", entry.alt_fsname) |
| 118 self.assertEqual(b"tests\xc5/test", entry.alt_fspath) | 131 self.assertEqual(b"tests\xc5/test", entry.alt_fspath) |
| 132 self.assertEqual(b"tests\xc5/test", entry.alt_fsnpath) | |
| 119 | 133 |
| 120 self.assertEqual("test", entry.uname) | 134 self.assertEqual("test", entry.uname) |
| 121 self.assertIsNone(entry.upath) | 135 self.assertIsNone(entry.upath) |
| 136 self.assertIsNone(entry.unpath) | |
| 122 self.assertEqual(b"test", entry.u8name) | 137 self.assertEqual(b"test", entry.u8name) |
| 123 self.assertIsNone(entry.u8path) | 138 self.assertIsNone(entry.u8path) |
| 139 self.assertIsNone(entry.u8npath) | |
| 124 | 140 |
| 125 self.assertEqual(b"test", entry.alt_u8name) | 141 self.assertEqual(b"test", entry.alt_u8name) |
| 126 self.assertEqual(b"tests\\udcc5/test", entry.alt_u8path) | 142 self.assertEqual(b"tests\\udcc5/test", entry.alt_u8path) |
| 143 self.assertEqual(b"tests\\udcc5/test", entry.alt_u8npath) | |
| 127 | 144 |
| 128 @unittest.skipIf(sys.version_info[0] > 2, "Skip on Python3") | 145 @unittest.skipIf(sys.version_info[0] > 2, "Skip on Python3") |
| 129 def test_py2_with_non_fsdecodable_name(self): | 146 def test_py2_with_non_fsdecodable_name(self): |
| 130 entry = walk.WalkDirEntry.from_path_name( | 147 entry = walk.WalkDirEntry.from_path_name( |
| 131 b"tests", b"test-\xc4", _do_stat=False) | 148 b"tests", b"test-\xc4", _do_stat=False) |
| 132 self.assertEqual(b"test-\xc4", entry.name) | 149 self.assertEqual(b"test-\xc4", entry.name) |
| 133 self.assertEqual(b"tests/test-\xc4", entry.path) | 150 self.assertEqual(b"tests/test-\xc4", entry.path) |
| 151 self.assertEqual(b"tests/test-\xc4", entry.npath) | |
| 134 self.assertIsNone(entry.fsname) | 152 self.assertIsNone(entry.fsname) |
| 135 self.assertIsNone(entry.fspath) | 153 self.assertIsNone(entry.fspath) |
| 154 self.assertIsNone(entry.fsnpath) | |
| 136 self.assertEqual(b"test-\xc4", entry.alt_fsname) | 155 self.assertEqual(b"test-\xc4", entry.alt_fsname) |
| 137 self.assertEqual(b"tests/test-\xc4", entry.alt_fspath) | 156 self.assertEqual(b"tests/test-\xc4", entry.alt_fspath) |
| 157 self.assertEqual(b"tests/test-\xc4", entry.alt_fsnpath) | |
| 138 | 158 |
| 139 self.assertIsNone(entry.uname) | 159 self.assertIsNone(entry.uname) |
| 140 self.assertIsNone(entry.upath) | 160 self.assertIsNone(entry.upath) |
| 161 self.assertIsNone(entry.unpath) | |
| 141 self.assertIsNone(entry.u8name) | 162 self.assertIsNone(entry.u8name) |
| 142 self.assertIsNone(entry.u8path) | 163 self.assertIsNone(entry.u8path) |
| 164 self.assertIsNone(entry.u8npath) | |
| 143 | 165 |
| 144 self.assertEqual(b"test-\\udcc4", entry.alt_u8name) | 166 self.assertEqual(b"test-\\udcc4", entry.alt_u8name) |
| 145 self.assertEqual(b"tests/test-\\udcc4", entry.alt_u8path) | 167 self.assertEqual(b"tests/test-\\udcc4", entry.alt_u8path) |
| 168 self.assertEqual(b"tests/test-\\udcc4", entry.alt_u8npath) | |
| 146 | 169 |
| 147 @unittest.skipIf(sys.version_info[0] > 2, "Skip on Python3") | 170 @unittest.skipIf(sys.version_info[0] > 2, "Skip on Python3") |
| 148 def test_py2_with_non_fsdecodable_path(self): | 171 def test_py2_with_non_fsdecodable_path(self): |
| 149 entry = walk.WalkDirEntry.from_path_name( | 172 entry = walk.WalkDirEntry.from_path_name( |
| 150 b"tests\xc5", b"test", _do_stat=False) | 173 b"tests\xc5", b"test", _do_stat=False) |
| 151 self.assertEqual(b"test", entry.name) | 174 self.assertEqual(b"test", entry.name) |
| 152 self.assertEqual(b"tests\xc5/test", entry.path) | 175 self.assertEqual(b"tests\xc5/test", entry.path) |
| 176 self.assertEqual(b"tests\xc5/test", entry.npath) | |
| 153 self.assertEqual(b"test", entry.fsname) | 177 self.assertEqual(b"test", entry.fsname) |
| 154 self.assertIsNone(entry.fspath) | 178 self.assertIsNone(entry.fspath) |
| 179 self.assertIsNone(entry.fsnpath) | |
| 155 self.assertEqual(b"test", entry.alt_fsname) | 180 self.assertEqual(b"test", entry.alt_fsname) |
| 156 self.assertEqual(b"tests\xc5/test", entry.alt_fspath) | 181 self.assertEqual(b"tests\xc5/test", entry.alt_fspath) |
| 182 self.assertEqual(b"tests\xc5/test", entry.alt_fsnpath) | |
| 157 | 183 |
| 158 self.assertEqual(b"test", entry.uname) | 184 self.assertEqual(b"test", entry.uname) |
| 159 self.assertIsNone(entry.upath) | 185 self.assertIsNone(entry.upath) |
| 186 self.assertIsNone(entry.unpath) | |
| 160 self.assertEqual(b"test", entry.u8name) | 187 self.assertEqual(b"test", entry.u8name) |
| 161 self.assertIsNone(entry.u8path) | 188 self.assertIsNone(entry.u8path) |
| 189 self.assertIsNone(entry.u8npath) | |
| 162 | 190 |
| 163 self.assertEqual(b"test", entry.alt_u8name) | 191 self.assertEqual(b"test", entry.alt_u8name) |
| 164 self.assertEqual(b"tests\\udcc5/test", entry.alt_u8path) | 192 self.assertEqual(b"tests\\udcc5/test", entry.alt_u8path) |
| 165 | 193 |
| 166 @unittest.skipIf(sys.version_info[0] > 2, "Skip on Python3") | 194 @unittest.skipIf(sys.version_info[0] > 2, "Skip on Python3") |
| 167 def test_py2_with_non_fsencodable_unicode_name(self): | 195 def test_py2_with_non_fsencodable_unicode_name(self): |
| 168 entry = walk.WalkDirEntry.from_path_name( | 196 entry = walk.WalkDirEntry.from_path_name( |
| 169 u"tests", u"test-\xc4", _do_stat=False) | 197 u"tests", u"test-\xc4", _do_stat=False) |
| 170 self.assertEqual(u"test-\xc4", entry.name) | 198 self.assertEqual(u"test-\xc4", entry.name) |
| 171 self.assertEqual(u"tests/test-\xc4", entry.path) | 199 self.assertEqual(u"tests/test-\xc4", entry.path) |
| 200 self.assertEqual(u"tests/test-\xc4", entry.npath) | |
| 172 self.assertIsNone(entry.fsname) | 201 self.assertIsNone(entry.fsname) |
| 173 self.assertIsNone(entry.fspath) | 202 self.assertIsNone(entry.fspath) |
| 203 self.assertIsNone(entry.fsnpath) | |
| 174 self.assertEqual(b"test-\\xc4", entry.alt_fsname) | 204 self.assertEqual(b"test-\\xc4", entry.alt_fsname) |
| 175 self.assertEqual(b"tests/test-\\xc4", entry.alt_fspath) | 205 self.assertEqual(b"tests/test-\\xc4", entry.alt_fspath) |
| 206 self.assertEqual(b"tests/test-\\xc4", entry.alt_fsnpath) | |
| 176 | 207 |
| 177 self.assertEqual(u"test-\xc4", entry.uname) | 208 self.assertEqual(u"test-\xc4", entry.uname) |
| 178 self.assertEqual(u"tests/test-\xc4", entry.upath) | 209 self.assertEqual(u"tests/test-\xc4", entry.upath) |
| 210 self.assertEqual(u"tests/test-\xc4", entry.unpath) | |
| 179 self.assertEqual(b"test-\xc3\x84", entry.u8name) | 211 self.assertEqual(b"test-\xc3\x84", entry.u8name) |
| 180 self.assertEqual(b"tests/test-\xc3\x84", entry.u8path) | 212 self.assertEqual(b"tests/test-\xc3\x84", entry.u8path) |
| 213 self.assertEqual(b"tests/test-\xc3\x84", entry.u8npath) | |
| 181 | 214 |
| 182 self.assertEqual(b"test-\\xc4", entry.alt_u8name) | 215 self.assertEqual(b"test-\\xc4", entry.alt_u8name) |
| 183 self.assertEqual(b"tests/test-\\xc4", entry.alt_u8path) | 216 self.assertEqual(b"tests/test-\\xc4", entry.alt_u8path) |
| 217 self.assertEqual(b"tests/test-\\xc4", entry.alt_u8npath) | |
| 184 | 218 |
| 185 @unittest.skipIf(sys.version_info[0] > 2, "Skip on Python3") | 219 @unittest.skipIf(sys.version_info[0] > 2, "Skip on Python3") |
| 186 def test_py2_with_non_fsencodable_unicode_path(self): | 220 def test_py2_with_non_fsencodable_unicode_path(self): |
| 187 entry = walk.WalkDirEntry.from_path_name( | 221 entry = walk.WalkDirEntry.from_path_name( |
| 188 u"tests\xc5", u"test", _do_stat=False) | 222 u"tests\xc5", u"test", _do_stat=False) |
| 189 self.assertEqual(u"test", entry.name) | 223 self.assertEqual(u"test", entry.name) |
| 190 self.assertEqual(u"tests\xc5/test", entry.path) | 224 self.assertEqual(u"tests\xc5/test", entry.path) |
| 225 self.assertEqual(u"tests\xc5/test", entry.npath) | |
| 191 self.assertEqual(b"test", entry.fsname) | 226 self.assertEqual(b"test", entry.fsname) |
| 192 self.assertIsNone(entry.fspath) | 227 self.assertIsNone(entry.fspath) |
| 228 self.assertIsNone(entry.fsnpath) | |
| 193 self.assertEqual(b"test", entry.alt_fsname) | 229 self.assertEqual(b"test", entry.alt_fsname) |
| 194 self.assertEqual(b"tests\\xc5/test", entry.alt_fspath) | 230 self.assertEqual(b"tests\\xc5/test", entry.alt_fspath) |
| 231 self.assertEqual(b"tests\\xc5/test", entry.alt_fsnpath) | |
| 195 | 232 |
| 196 self.assertEqual(u"test", entry.uname) | 233 self.assertEqual(u"test", entry.uname) |
| 197 self.assertEqual(u"tests\xc5/test", entry.upath) | 234 self.assertEqual(u"tests\xc5/test", entry.upath) |
| 198 self.assertEqual(b"test", entry.u8name) | 235 self.assertEqual(b"test", entry.u8name) |
| 199 self.assertEqual(b"tests\xc3\x85/test", entry.u8path) | 236 self.assertEqual(b"tests\xc3\x85/test", entry.u8path) |
| 212 | 249 |
| 213 def test_special_chars_path(self): | 250 def test_special_chars_path(self): |
| 214 entry = walk.WalkDirEntry.from_path_name( | 251 entry = walk.WalkDirEntry.from_path_name( |
| 215 "testdir-\r-\n-rest", "testfile", _do_stat=False) | 252 "testdir-\r-\n-rest", "testfile", _do_stat=False) |
| 216 self.assertEqual(u"testdir-\r-\n-rest/testfile", entry.upath) | 253 self.assertEqual(u"testdir-\r-\n-rest/testfile", entry.upath) |
| 217 self.assertIsNone(entry.fspath) | 254 self.assertEqual(u"testdir-\r-\n-rest/testfile", entry.unpath) |
| 218 self.assertIsNone(entry.u8path) | 255 self.assertIsNone(entry.fspath) |
| 256 self.assertIsNone(entry.fsnpath) | |
| 257 self.assertIsNone(entry.u8path) | |
| 258 self.assertIsNone(entry.u8npath) | |
| 219 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/testfile", | 259 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/testfile", |
| 220 entry.alt_fspath) | 260 entry.alt_fspath) |
| 221 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/testfile", | 261 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/testfile", |
| 262 entry.alt_fsnpath) | |
| 263 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/testfile", | |
| 222 entry.alt_u8path) | 264 entry.alt_u8path) |
| 265 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/testfile", | |
| 266 entry.alt_u8npath) | |
| 223 | 267 |
| 224 def test_special_chars_fullpath(self): | 268 def test_special_chars_fullpath(self): |
| 225 entry = walk.WalkDirEntry.from_path_name( | 269 entry = walk.WalkDirEntry.from_path_name( |
| 226 "testdir-\r-\n-rest", "test-\n-\r-file", _do_stat=False) | 270 "testdir-\r-\n-rest", "test-\n-\r-file", _do_stat=False) |
| 227 self.assertEqual(u"testdir-\r-\n-rest/test-\n-\r-file", entry.upath) | 271 self.assertEqual(u"testdir-\r-\n-rest/test-\n-\r-file", entry.upath) |
| 228 self.assertIsNone(entry.fspath) | 272 self.assertEqual(u"testdir-\r-\n-rest/test-\n-\r-file", entry.unpath) |
| 229 self.assertIsNone(entry.u8path) | 273 self.assertIsNone(entry.fspath) |
| 274 self.assertIsNone(entry.fsnpath) | |
| 275 self.assertIsNone(entry.u8path) | |
| 276 self.assertIsNone(entry.u8npath) | |
| 230 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/test-\\x0a-\\x0d-file", | 277 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/test-\\x0a-\\x0d-file", |
| 231 entry.alt_fspath) | 278 entry.alt_fspath) |
| 232 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/test-\\x0a-\\x0d-file", | 279 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/test-\\x0a-\\x0d-file", |
| 280 entry.alt_fsnpath) | |
| 281 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/test-\\x0a-\\x0d-file", | |
| 233 entry.alt_u8path) | 282 entry.alt_u8path) |
| 283 self.assertEqual(b"testdir-\\x0d-\\x0a-rest/test-\\x0a-\\x0d-file", | |
| 284 entry.alt_u8npath) | |
| 234 | 285 |
| 235 | 286 |
| 236 # https://stackoverflow.com/questions/1854/how-to-identify-which-os-python-is-running-on/58071295#58071295 | 287 # https://stackoverflow.com/questions/1854/how-to-identify-which-os-python-is-running-on/58071295#58071295 |
| 237 @unittest.skipIf( | 288 @unittest.skipIf( |
| 238 os.name != "posix", "Only supported on POSIX (needs real symlinks)") | 289 os.name != "posix", "Only supported on POSIX (needs real symlinks)") |
