Mercurial > hgrepos > Python > apps > py-cutils
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()) |
