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)")