comparison tests/test_walk.py @ 274:224725fd9f2f

WalkDirEntry: add support for special files (character and block special, FIFO, socket, door, whiteout, event port, ...)
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 19 Feb 2025 16:42:44 +0100
parents c02a57df2a29
children 99b78fa04bc1
comparison
equal deleted inserted replaced
273:c02a57df2a29 274:224725fd9f2f
208 DATADIR, "tree-1-s") 208 DATADIR, "tree-1-s")
209 self.assertTrue(entry.is_symlink) 209 self.assertTrue(entry.is_symlink)
210 self.assertFalse(entry.is_reg) 210 self.assertFalse(entry.is_reg)
211 self.assertTrue(entry.is_dir) 211 self.assertTrue(entry.is_dir)
212 self.assertIsNotNone(entry.stat) 212 self.assertIsNotNone(entry.stat)
213 self.assertFalse(entry.is_special)
213 214
214 def test_broken_symlink_to_directory(self): 215 def test_broken_symlink_to_directory(self):
215 entry = walk.WalkDirEntry.from_path_name( 216 entry = walk.WalkDirEntry.from_path_name(
216 DATADIR, "tree-nn-s") 217 DATADIR, "tree-nn-s")
217 self.assertTrue(entry.is_symlink) 218 self.assertTrue(entry.is_symlink)
218 self.assertFalse(entry.is_reg) 219 self.assertFalse(entry.is_reg)
219 self.assertFalse(entry.is_dir) 220 self.assertFalse(entry.is_dir)
220 self.assertIsNone(entry.stat) 221 self.assertIsNone(entry.stat)
222 self.assertFalse(entry.is_special)
221 223
222 def test_real_directory(self): 224 def test_real_directory(self):
223 entry = walk.WalkDirEntry.from_path_name( 225 entry = walk.WalkDirEntry.from_path_name(
224 DATADIR, "tree-1") 226 DATADIR, "tree-1")
225 self.assertFalse(entry.is_symlink) 227 self.assertFalse(entry.is_symlink)
226 self.assertFalse(entry.is_reg) 228 self.assertFalse(entry.is_reg)
227 self.assertTrue(entry.is_dir) 229 self.assertTrue(entry.is_dir)
228 self.assertIsNotNone(entry.stat) 230 self.assertIsNotNone(entry.stat)
231 self.assertFalse(entry.is_special)
229 232
230 def test_symlink_to_file(self): 233 def test_symlink_to_file(self):
231 entry = walk.WalkDirEntry.from_path_name( 234 entry = walk.WalkDirEntry.from_path_name(
232 os.path.join(DATADIR, "tree-1"), "file-1-1-s.txt") 235 os.path.join(DATADIR, "tree-1"), "file-1-1-s.txt")
233 self.assertTrue(entry.is_symlink) 236 self.assertTrue(entry.is_symlink)
234 self.assertTrue(entry.is_reg) 237 self.assertTrue(entry.is_reg)
235 self.assertFalse(entry.is_dir) 238 self.assertFalse(entry.is_dir)
236 self.assertIsNotNone(entry.stat) 239 self.assertIsNotNone(entry.stat)
240 self.assertFalse(entry.is_special)
237 241
238 def test_broken_symlink_to_file(self): 242 def test_broken_symlink_to_file(self):
239 entry = walk.WalkDirEntry.from_path_name( 243 entry = walk.WalkDirEntry.from_path_name(
240 os.path.join(DATADIR, "tree-1"), "file-1-nn-s.txt") 244 os.path.join(DATADIR, "tree-1"), "file-1-nn-s.txt")
241 self.assertTrue(entry.is_symlink) 245 self.assertTrue(entry.is_symlink)
242 self.assertFalse(entry.is_reg) 246 self.assertFalse(entry.is_reg)
243 self.assertFalse(entry.is_dir) 247 self.assertFalse(entry.is_dir)
244 self.assertIsNone(entry.stat) 248 self.assertIsNone(entry.stat)
249 self.assertFalse(entry.is_special)
245 250
246 def test_real_file(self): 251 def test_real_file(self):
247 entry = walk.WalkDirEntry.from_path_name( 252 entry = walk.WalkDirEntry.from_path_name(
248 os.path.join(DATADIR, "tree-1"), "file-1-1.txt") 253 os.path.join(DATADIR, "tree-1"), "file-1-1.txt")
249 self.assertFalse(entry.is_symlink) 254 self.assertFalse(entry.is_symlink)
250 self.assertTrue(entry.is_reg) 255 self.assertTrue(entry.is_reg)
251 self.assertFalse(entry.is_dir) 256 self.assertFalse(entry.is_dir)
252 self.assertIsNotNone(entry.stat) 257 self.assertIsNotNone(entry.stat)
258 self.assertFalse(entry.is_special)
253 259
254 def test_real_file_via_dir_symlink(self): 260 def test_real_file_via_dir_symlink(self):
255 entry = walk.WalkDirEntry.from_path_name( 261 entry = walk.WalkDirEntry.from_path_name(
256 os.path.join(DATADIR, "tree-1-s"), "file-1-1.txt") 262 os.path.join(DATADIR, "tree-1-s"), "file-1-1.txt")
257 self.assertFalse(entry.is_symlink) 263 self.assertFalse(entry.is_symlink)
258 self.assertTrue(entry.is_reg) 264 self.assertTrue(entry.is_reg)
259 self.assertFalse(entry.is_dir) 265 self.assertFalse(entry.is_dir)
260 self.assertIsNotNone(entry.stat) 266 self.assertIsNotNone(entry.stat)
267 self.assertFalse(entry.is_special)
261 268
262 269
263 @unittest.skipIf(not hasattr(os, "mkfifo"), "Needs os.mkfifo()") 270 @unittest.skipIf(not hasattr(os, "mkfifo"), "Needs os.mkfifo()")
264 class FIFOTests(unittest.TestCase): 271 class FIFOTests(unittest.TestCase):
265 272
277 entry = walk.WalkDirEntry.from_path_name(TMPDIR, "test.fifo") 284 entry = walk.WalkDirEntry.from_path_name(TMPDIR, "test.fifo")
278 self.assertFalse(entry.is_symlink) 285 self.assertFalse(entry.is_symlink)
279 self.assertFalse(entry.is_reg) 286 self.assertFalse(entry.is_reg)
280 self.assertFalse(entry.is_dir) 287 self.assertFalse(entry.is_dir)
281 self.assertIsNotNone(entry.stat) 288 self.assertIsNotNone(entry.stat)
289 self.assertTrue(entry.is_fifo)
290 self.assertTrue(entry.is_special)
282 291
283 def test_symlink_to_mkfifo(self): 292 def test_symlink_to_mkfifo(self):
284 fifopath = os.path.join(TMPDIR, "test.fifo") 293 fifopath = os.path.join(TMPDIR, "test.fifo")
285 fifo_s_path = os.path.join(TMPDIR, "test-s.fifo") 294 fifo_s_path = os.path.join(TMPDIR, "test-s.fifo")
286 os.mkfifo(fifopath) 295 os.mkfifo(fifopath)
288 entry = walk.WalkDirEntry.from_path_name(TMPDIR, "test-s.fifo") 297 entry = walk.WalkDirEntry.from_path_name(TMPDIR, "test-s.fifo")
289 self.assertTrue(entry.is_symlink) 298 self.assertTrue(entry.is_symlink)
290 self.assertFalse(entry.is_reg) 299 self.assertFalse(entry.is_reg)
291 self.assertFalse(entry.is_dir) 300 self.assertFalse(entry.is_dir)
292 self.assertIsNotNone(entry.stat) 301 self.assertIsNotNone(entry.stat)
302 self.assertTrue(entry.is_fifo)
303 self.assertTrue(entry.is_special)
293 304
294 def test_broken_symlink_to_mkfifo(self): 305 def test_broken_symlink_to_mkfifo(self):
295 fifopath = os.path.join(TMPDIR, "test.fifo") 306 fifopath = os.path.join(TMPDIR, "test.fifo")
296 fifo_s_path = os.path.join(TMPDIR, "test-s.fifo") 307 fifo_s_path = os.path.join(TMPDIR, "test-s.fifo")
297 os.mkfifo(fifopath) 308 os.mkfifo(fifopath)
300 entry = walk.WalkDirEntry.from_path_name(TMPDIR, "test-s.fifo") 311 entry = walk.WalkDirEntry.from_path_name(TMPDIR, "test-s.fifo")
301 self.assertTrue(entry.is_symlink) 312 self.assertTrue(entry.is_symlink)
302 self.assertFalse(entry.is_reg) 313 self.assertFalse(entry.is_reg)
303 self.assertFalse(entry.is_dir) 314 self.assertFalse(entry.is_dir)
304 self.assertIsNone(entry.stat) 315 self.assertIsNone(entry.stat)
316 self.assertFalse(entry.is_fifo)
317 self.assertFalse(entry.is_special)
305 318
306 319
307 if __name__ == "__main__": 320 if __name__ == "__main__":
308 sys.exit(unittest.main()) 321 sys.exit(unittest.main())