Mercurial > hgrepos > Python > apps > py-cutils
comparison tests/test_walk.py @ 273:c02a57df2a29
treesum: - WalkDirEntry tests with a FIFO special file - WalkDirEntry.is_reg
Also all to be handled special files in the notes document.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 19 Feb 2025 09:12:30 +0100 |
| parents | b4137ebd8e79 |
| children | 224725fd9f2f |
comparison
equal
deleted
inserted
replaced
| 272:b4137ebd8e79 | 273:c02a57df2a29 |
|---|---|
| 4 """ | 4 """ |
| 5 | 5 |
| 6 from __future__ import absolute_import, print_function | 6 from __future__ import absolute_import, print_function |
| 7 | 7 |
| 8 import os | 8 import os |
| 9 import shutil | |
| 9 import sys | 10 import sys |
| 10 import unittest | 11 import unittest |
| 11 | 12 |
| 12 from _test_setup import DATADIR | 13 from _test_setup import (DATADIR, TMPDIR) |
| 13 | 14 |
| 14 from cutils.util import walk | 15 from cutils.util import walk |
| 15 | 16 |
| 16 | 17 |
| 17 class SurrogateEscapeTests(unittest.TestCase): | 18 class SurrogateEscapeTests(unittest.TestCase): |
| 204 | 205 |
| 205 def test_symlink_to_directory(self): | 206 def test_symlink_to_directory(self): |
| 206 entry = walk.WalkDirEntry.from_path_name( | 207 entry = walk.WalkDirEntry.from_path_name( |
| 207 DATADIR, "tree-1-s") | 208 DATADIR, "tree-1-s") |
| 208 self.assertTrue(entry.is_symlink) | 209 self.assertTrue(entry.is_symlink) |
| 210 self.assertFalse(entry.is_reg) | |
| 209 self.assertTrue(entry.is_dir) | 211 self.assertTrue(entry.is_dir) |
| 210 self.assertIsNotNone(entry.stat) | 212 self.assertIsNotNone(entry.stat) |
| 211 | 213 |
| 212 def test_broken_symlink_to_directory(self): | 214 def test_broken_symlink_to_directory(self): |
| 213 entry = walk.WalkDirEntry.from_path_name( | 215 entry = walk.WalkDirEntry.from_path_name( |
| 214 DATADIR, "tree-nn-s") | 216 DATADIR, "tree-nn-s") |
| 215 self.assertTrue(entry.is_symlink) | 217 self.assertTrue(entry.is_symlink) |
| 218 self.assertFalse(entry.is_reg) | |
| 216 self.assertFalse(entry.is_dir) | 219 self.assertFalse(entry.is_dir) |
| 217 self.assertIsNone(entry.stat) | 220 self.assertIsNone(entry.stat) |
| 218 | 221 |
| 219 def test_real_directory(self): | 222 def test_real_directory(self): |
| 220 entry = walk.WalkDirEntry.from_path_name( | 223 entry = walk.WalkDirEntry.from_path_name( |
| 221 DATADIR, "tree-1") | 224 DATADIR, "tree-1") |
| 222 self.assertFalse(entry.is_symlink) | 225 self.assertFalse(entry.is_symlink) |
| 226 self.assertFalse(entry.is_reg) | |
| 223 self.assertTrue(entry.is_dir) | 227 self.assertTrue(entry.is_dir) |
| 224 self.assertIsNotNone(entry.stat) | 228 self.assertIsNotNone(entry.stat) |
| 225 | 229 |
| 226 def test_symlink_to_file(self): | 230 def test_symlink_to_file(self): |
| 227 entry = walk.WalkDirEntry.from_path_name( | 231 entry = walk.WalkDirEntry.from_path_name( |
| 228 os.path.join(DATADIR, "tree-1"), "file-1-1-s.txt") | 232 os.path.join(DATADIR, "tree-1"), "file-1-1-s.txt") |
| 229 self.assertTrue(entry.is_symlink) | 233 self.assertTrue(entry.is_symlink) |
| 234 self.assertTrue(entry.is_reg) | |
| 230 self.assertFalse(entry.is_dir) | 235 self.assertFalse(entry.is_dir) |
| 231 self.assertIsNotNone(entry.stat) | 236 self.assertIsNotNone(entry.stat) |
| 232 | 237 |
| 233 def test_broken_symlink_to_file(self): | 238 def test_broken_symlink_to_file(self): |
| 234 entry = walk.WalkDirEntry.from_path_name( | 239 entry = walk.WalkDirEntry.from_path_name( |
| 235 os.path.join(DATADIR, "tree-1"), "file-1-nn-s.txt") | 240 os.path.join(DATADIR, "tree-1"), "file-1-nn-s.txt") |
| 236 self.assertTrue(entry.is_symlink) | 241 self.assertTrue(entry.is_symlink) |
| 242 self.assertFalse(entry.is_reg) | |
| 237 self.assertFalse(entry.is_dir) | 243 self.assertFalse(entry.is_dir) |
| 238 self.assertIsNone(entry.stat) | 244 self.assertIsNone(entry.stat) |
| 239 | 245 |
| 240 def test_real_file(self): | 246 def test_real_file(self): |
| 241 entry = walk.WalkDirEntry.from_path_name( | 247 entry = walk.WalkDirEntry.from_path_name( |
| 242 os.path.join(DATADIR, "tree-1"), "file-1-1.txt") | 248 os.path.join(DATADIR, "tree-1"), "file-1-1.txt") |
| 243 self.assertFalse(entry.is_symlink) | 249 self.assertFalse(entry.is_symlink) |
| 250 self.assertTrue(entry.is_reg) | |
| 244 self.assertFalse(entry.is_dir) | 251 self.assertFalse(entry.is_dir) |
| 245 self.assertIsNotNone(entry.stat) | 252 self.assertIsNotNone(entry.stat) |
| 246 | 253 |
| 247 def test_real_file_via_dir_symlink(self): | 254 def test_real_file_via_dir_symlink(self): |
| 248 entry = walk.WalkDirEntry.from_path_name( | 255 entry = walk.WalkDirEntry.from_path_name( |
| 249 os.path.join(DATADIR, "tree-1-s"), "file-1-1.txt") | 256 os.path.join(DATADIR, "tree-1-s"), "file-1-1.txt") |
| 250 self.assertFalse(entry.is_symlink) | 257 self.assertFalse(entry.is_symlink) |
| 251 self.assertFalse(entry.is_dir) | 258 self.assertTrue(entry.is_reg) |
| 252 self.assertIsNotNone(entry.stat) | 259 self.assertFalse(entry.is_dir) |
| 260 self.assertIsNotNone(entry.stat) | |
| 261 | |
| 262 | |
| 263 @unittest.skipIf(not hasattr(os, "mkfifo"), "Needs os.mkfifo()") | |
| 264 class FIFOTests(unittest.TestCase): | |
| 265 | |
| 266 def setUp(self): | |
| 267 if not os.path.isdir(TMPDIR): | |
| 268 os.mkdir(TMPDIR) | |
| 269 | |
| 270 def tearDown(self): | |
| 271 if os.path.isdir(TMPDIR): | |
| 272 shutil.rmtree(TMPDIR) | |
| 273 | |
| 274 def test_real_mkfifo(self): | |
| 275 fifopath = os.path.join(TMPDIR, "test.fifo") | |
| 276 os.mkfifo(fifopath) | |
| 277 entry = walk.WalkDirEntry.from_path_name(TMPDIR, "test.fifo") | |
| 278 self.assertFalse(entry.is_symlink) | |
| 279 self.assertFalse(entry.is_reg) | |
| 280 self.assertFalse(entry.is_dir) | |
| 281 self.assertIsNotNone(entry.stat) | |
| 282 | |
| 283 def test_symlink_to_mkfifo(self): | |
| 284 fifopath = os.path.join(TMPDIR, "test.fifo") | |
| 285 fifo_s_path = os.path.join(TMPDIR, "test-s.fifo") | |
| 286 os.mkfifo(fifopath) | |
| 287 os.symlink(fifopath, fifo_s_path) | |
| 288 entry = walk.WalkDirEntry.from_path_name(TMPDIR, "test-s.fifo") | |
| 289 self.assertTrue(entry.is_symlink) | |
| 290 self.assertFalse(entry.is_reg) | |
| 291 self.assertFalse(entry.is_dir) | |
| 292 self.assertIsNotNone(entry.stat) | |
| 293 | |
| 294 def test_broken_symlink_to_mkfifo(self): | |
| 295 fifopath = os.path.join(TMPDIR, "test.fifo") | |
| 296 fifo_s_path = os.path.join(TMPDIR, "test-s.fifo") | |
| 297 os.mkfifo(fifopath) | |
| 298 os.symlink(fifopath, fifo_s_path) | |
| 299 os.unlink(fifopath) | |
| 300 entry = walk.WalkDirEntry.from_path_name(TMPDIR, "test-s.fifo") | |
| 301 self.assertTrue(entry.is_symlink) | |
| 302 self.assertFalse(entry.is_reg) | |
| 303 self.assertFalse(entry.is_dir) | |
| 304 self.assertIsNone(entry.stat) | |
| 253 | 305 |
| 254 | 306 |
| 255 if __name__ == "__main__": | 307 if __name__ == "__main__": |
| 256 sys.exit(unittest.main()) | 308 sys.exit(unittest.main()) |
