Lines Matching refs:P
192 P = self.cls
193 p = P('a')
194 self.assertIsInstance(p, P)
195 P('a', 'b', 'c')
196 P('/a', 'b', 'c')
197 P('a/b/c')
198 P('/a/b/c')
199 P(FakePath("a/b/c"))
200 self.assertEqual(P(P('a')), P('a'))
201 self.assertEqual(P(P('a'), 'b'), P('a/b'))
202 self.assertEqual(P(P('a'), P('b')), P('a/b'))
203 self.assertEqual(P(P('a'), P('b'), P('c')), P(FakePath("a/b/c")))
211 P = self.cls
212 p = P(*(StrSubclass(x) for x in args))
213 self.assertEqual(p, P(*args))
225 P = self.cls
226 p = P('a/b')
228 self.assertEqual(pp, P('a/b/c'))
231 self.assertEqual(pp, P('a/b/c/d'))
232 pp = p.joinpath(P('c'))
233 self.assertEqual(pp, P('a/b/c'))
235 self.assertEqual(pp, P('/c'))
239 P = self.cls
240 p = P('a/b')
242 self.assertEqual(pp, P('a/b/c'))
245 self.assertEqual(pp, P('a/b/c/d'))
247 self.assertEqual(pp, P('a/b/c/d'))
249 self.assertEqual(pp, P('c/a/b/d'))
250 pp = p / P('c')
251 self.assertEqual(pp, P('a/b/c'))
253 self.assertEqual(pp, P('/c'))
268 P = self.cls
270 self.assertEqual(P(pathstr).as_posix(), pathstr)
275 P = self.cls
276 self.assertEqual(bytes(P('a/b')), b'a' + sep + b'b')
279 P = self.cls
281 P('a').as_uri()
283 P().as_uri()
302 P = self.cls
303 self.assertEqual(P('a/b'), P('a/b'))
304 self.assertEqual(P('a/b'), P('a', 'b'))
305 self.assertNotEqual(P('a/b'), P('a'))
306 self.assertNotEqual(P('a/b'), P('/a/b'))
307 self.assertNotEqual(P('a/b'), P())
308 self.assertNotEqual(P('/a/b'), P('/'))
309 self.assertNotEqual(P(), P('/'))
310 self.assertNotEqual(P(), "")
311 self.assertNotEqual(P(), {})
312 self.assertNotEqual(P(), int)
315 P = self.cls
316 self.assertRaises(ValueError, P('a').match, '')
317 self.assertRaises(ValueError, P('a').match, '.')
319 self.assertTrue(P('b.py').match('b.py'))
320 self.assertTrue(P('a/b.py').match('b.py'))
321 self.assertTrue(P('/a/b.py').match('b.py'))
322 self.assertFalse(P('a.py').match('b.py'))
323 self.assertFalse(P('b/py').match('b.py'))
324 self.assertFalse(P('/a.py').match('b.py'))
325 self.assertFalse(P('b.py/c').match('b.py'))
327 self.assertTrue(P('b.py').match('*.py'))
328 self.assertTrue(P('a/b.py').match('*.py'))
329 self.assertTrue(P('/a/b.py').match('*.py'))
330 self.assertFalse(P('b.pyc').match('*.py'))
331 self.assertFalse(P('b./py').match('*.py'))
332 self.assertFalse(P('b.py/c').match('*.py'))
334 self.assertTrue(P('ab/c.py').match('a*/*.py'))
335 self.assertTrue(P('/d/ab/c.py').match('a*/*.py'))
336 self.assertFalse(P('a.py').match('a*/*.py'))
337 self.assertFalse(P('/dab/c.py').match('a*/*.py'))
338 self.assertFalse(P('ab/c.py/d').match('a*/*.py'))
340 self.assertTrue(P('/b.py').match('/*.py'))
341 self.assertFalse(P('b.py').match('/*.py'))
342 self.assertFalse(P('a/b.py').match('/*.py'))
343 self.assertFalse(P('/a/b.py').match('/*.py'))
345 self.assertTrue(P('/a/b.py').match('/a/*.py'))
346 self.assertFalse(P('/ab.py').match('/a/*.py'))
347 self.assertFalse(P('/a/b/c.py').match('/a/*.py'))
349 self.assertFalse(P('/a/b/c.py').match('/**/*.py'))
350 self.assertTrue(P('/a/b/c.py').match('/a/**/*.py'))
357 P = self.cls
358 a = P('a')
359 b = P('a/b')
360 c = P('abc')
361 d = P('b')
367 P = self.cls
368 a = P('/a')
369 b = P('/a/b')
370 c = P('/abc')
371 d = P('/b')
378 P() < {}
383 P = self.cls
384 p = P('a/b')
390 p = P('/a/b')
395 P = self.cls
396 p = P('a/b')
420 P = self.cls
421 p = P('a/b/c')
422 self.assertEqual(p.parent, P('a/b'))
423 self.assertEqual(p.parent.parent, P('a'))
424 self.assertEqual(p.parent.parent.parent, P())
425 self.assertEqual(p.parent.parent.parent.parent, P())
427 p = P('/a/b/c')
428 self.assertEqual(p.parent, P('/a/b'))
429 self.assertEqual(p.parent.parent, P('/a'))
430 self.assertEqual(p.parent.parent.parent, P('/'))
431 self.assertEqual(p.parent.parent.parent.parent, P('/'))
435 P = self.cls
436 p = P('a/b/c')
439 self.assertEqual(par[0], P('a/b'))
440 self.assertEqual(par[1], P('a'))
441 self.assertEqual(par[2], P('.'))
442 self.assertEqual(list(par), [P('a/b'), P('a'), P('.')])
450 p = P('/a/b/c')
453 self.assertEqual(par[0], P('/a/b'))
454 self.assertEqual(par[1], P('/a'))
455 self.assertEqual(par[2], P('/'))
456 self.assertEqual(list(par), [P('/a/b'), P('/a'), P('/')])
461 P = self.cls
462 self.assertEqual(P('a/b').drive, '')
463 self.assertEqual(P('/a/b').drive, '')
464 self.assertEqual(P('').drive, '')
467 P = self.cls
469 self.assertEqual(P('').root, '')
470 self.assertEqual(P('a/b').root, '')
471 self.assertEqual(P('/').root, sep)
472 self.assertEqual(P('/a/b').root, sep)
475 P = self.cls
477 self.assertEqual(P('').anchor, '')
478 self.assertEqual(P('a/b').anchor, '')
479 self.assertEqual(P('/').anchor, sep)
480 self.assertEqual(P('/a/b').anchor, sep)
483 P = self.cls
484 self.assertEqual(P('').name, '')
485 self.assertEqual(P('.').name, '')
486 self.assertEqual(P('/').name, '')
487 self.assertEqual(P('a/b').name, 'b')
488 self.assertEqual(P('/a/b').name, 'b')
489 self.assertEqual(P('/a/b/.').name, 'b')
490 self.assertEqual(P('a/b.py').name, 'b.py')
491 self.assertEqual(P('/a/b.py').name, 'b.py')
494 P = self.cls
495 self.assertEqual(P('').suffix, '')
496 self.assertEqual(P('.').suffix, '')
497 self.assertEqual(P('..').suffix, '')
498 self.assertEqual(P('/').suffix, '')
499 self.assertEqual(P('a/b').suffix, '')
500 self.assertEqual(P('/a/b').suffix, '')
501 self.assertEqual(P('/a/b/.').suffix, '')
502 self.assertEqual(P('a/b.py').suffix, '.py')
503 self.assertEqual(P('/a/b.py').suffix, '.py')
504 self.assertEqual(P('a/.hgrc').suffix, '')
505 self.assertEqual(P('/a/.hgrc').suffix, '')
506 self.assertEqual(P('a/.hg.rc').suffix, '.rc')
507 self.assertEqual(P('/a/.hg.rc').suffix, '.rc')
508 self.assertEqual(P('a/b.tar.gz').suffix, '.gz')
509 self.assertEqual(P('/a/b.tar.gz').suffix, '.gz')
510 self.assertEqual(P('a/Some name. Ending with a dot.').suffix, '')
511 self.assertEqual(P('/a/Some name. Ending with a dot.').suffix, '')
514 P = self.cls
515 self.assertEqual(P('').suffixes, [])
516 self.assertEqual(P('.').suffixes, [])
517 self.assertEqual(P('/').suffixes, [])
518 self.assertEqual(P('a/b').suffixes, [])
519 self.assertEqual(P('/a/b').suffixes, [])
520 self.assertEqual(P('/a/b/.').suffixes, [])
521 self.assertEqual(P('a/b.py').suffixes, ['.py'])
522 self.assertEqual(P('/a/b.py').suffixes, ['.py'])
523 self.assertEqual(P('a/.hgrc').suffixes, [])
524 self.assertEqual(P('/a/.hgrc').suffixes, [])
525 self.assertEqual(P('a/.hg.rc').suffixes, ['.rc'])
526 self.assertEqual(P('/a/.hg.rc').suffixes, ['.rc'])
527 self.assertEqual(P('a/b.tar.gz').suffixes, ['.tar', '.gz'])
528 self.assertEqual(P('/a/b.tar.gz').suffixes, ['.tar', '.gz'])
529 self.assertEqual(P('a/Some name. Ending with a dot.').suffixes, [])
530 self.assertEqual(P('/a/Some name. Ending with a dot.').suffixes, [])
533 P = self.cls
534 self.assertEqual(P('').stem, '')
535 self.assertEqual(P('.').stem, '')
536 self.assertEqual(P('..').stem, '..')
537 self.assertEqual(P('/').stem, '')
538 self.assertEqual(P('a/b').stem, 'b')
539 self.assertEqual(P('a/b.py').stem, 'b')
540 self.assertEqual(P('a/.hgrc').stem, '.hgrc')
541 self.assertEqual(P('a/.hg.rc').stem, '.hg')
542 self.assertEqual(P('a/b.tar.gz').stem, 'b.tar')
543 self.assertEqual(P('a/Some name. Ending with a dot.').stem,
547 P = self.cls
548 self.assertEqual(P('a/b').with_name('d.xml'), P('a/d.xml'))
549 self.assertEqual(P('/a/b').with_name('d.xml'), P('/a/d.xml'))
550 self.assertEqual(P('a/b.py').with_name('d.xml'), P('a/d.xml'))
551 self.assertEqual(P('/a/b.py').with_name('d.xml'), P('/a/d.xml'))
552 self.assertEqual(P('a/Dot ending.').with_name('d.xml'), P('a/d.xml'))
553 self.assertEqual(P('/a/Dot ending.').with_name('d.xml'), P('/a/d.xml'))
554 self.assertRaises(ValueError, P('').with_name, 'd.xml')
555 self.assertRaises(ValueError, P('.').with_name, 'd.xml')
556 self.assertRaises(ValueError, P('/').with_name, 'd.xml')
557 self.assertRaises(ValueError, P('a/b').with_name, '')
558 self.assertRaises(ValueError, P('a/b').with_name, '/c')
559 self.assertRaises(ValueError, P('a/b').with_name, 'c/')
560 self.assertRaises(ValueError, P('a/b').with_name, 'c/d')
563 P = self.cls
564 self.assertEqual(P('a/b').with_suffix('.gz'), P('a/b.gz'))
565 self.assertEqual(P('/a/b').with_suffix('.gz'), P('/a/b.gz'))
566 self.assertEqual(P('a/b.py').with_suffix('.gz'), P('a/b.gz'))
567 self.assertEqual(P('/a/b.py').with_suffix('.gz'), P('/a/b.gz'))
569 self.assertEqual(P('a/b.py').with_suffix(''), P('a/b'))
570 self.assertEqual(P('/a/b').with_suffix(''), P('/a/b'))
572 self.assertRaises(ValueError, P('').with_suffix, '.gz')
573 self.assertRaises(ValueError, P('.').with_suffix, '.gz')
574 self.assertRaises(ValueError, P('/').with_suffix, '.gz')
576 self.assertRaises(ValueError, P('a/b').with_suffix, 'gz')
577 self.assertRaises(ValueError, P('a/b').with_suffix, '/')
578 self.assertRaises(ValueError, P('a/b').with_suffix, '.')
579 self.assertRaises(ValueError, P('a/b').with_suffix, '/.gz')
580 self.assertRaises(ValueError, P('a/b').with_suffix, 'c/d')
581 self.assertRaises(ValueError, P('a/b').with_suffix, '.c/.d')
582 self.assertRaises(ValueError, P('a/b').with_suffix, './.d')
583 self.assertRaises(ValueError, P('a/b').with_suffix, '.d/.')
584 self.assertRaises(ValueError, P('a/b').with_suffix,
588 P = self.cls
589 p = P('a/b')
592 self.assertEqual(p.relative_to(P()), P('a/b'))
593 self.assertEqual(p.relative_to(''), P('a/b'))
594 self.assertEqual(p.relative_to(P('a')), P('b'))
595 self.assertEqual(p.relative_to('a'), P('b'))
596 self.assertEqual(p.relative_to('a/'), P('b'))
597 self.assertEqual(p.relative_to(P('a/b')), P())
598 self.assertEqual(p.relative_to('a/b'), P())
600 self.assertEqual(p.relative_to('a', 'b'), P())
602 self.assertRaises(ValueError, p.relative_to, P('c'))
603 self.assertRaises(ValueError, p.relative_to, P('a/b/c'))
604 self.assertRaises(ValueError, p.relative_to, P('a/c'))
605 self.assertRaises(ValueError, p.relative_to, P('/a'))
606 p = P('/a/b')
607 self.assertEqual(p.relative_to(P('/')), P('a/b'))
608 self.assertEqual(p.relative_to('/'), P('a/b'))
609 self.assertEqual(p.relative_to(P('/a')), P('b'))
610 self.assertEqual(p.relative_to('/a'), P('b'))
611 self.assertEqual(p.relative_to('/a/'), P('b'))
612 self.assertEqual(p.relative_to(P('/a/b')), P())
613 self.assertEqual(p.relative_to('/a/b'), P())
615 self.assertRaises(ValueError, p.relative_to, P('/c'))
616 self.assertRaises(ValueError, p.relative_to, P('/a/b/c'))
617 self.assertRaises(ValueError, p.relative_to, P('/a/c'))
618 self.assertRaises(ValueError, p.relative_to, P())
620 self.assertRaises(ValueError, p.relative_to, P('a'))
623 P = self.cls
624 p = P('/a/b')
638 P = self.cls
639 self.assertEqual(P('/a/b').root, '/')
640 self.assertEqual(P('///a/b').root, '/')
642 self.assertEqual(P('//a/b').root, '//')
645 P = self.cls
646 self.assertNotEqual(P('a/b'), P('A/b'))
647 self.assertEqual(P('/a'), P('///a'))
648 self.assertNotEqual(P('/a'), P('//a'))
651 P = self.cls
652 self.assertEqual(P('/').as_uri(), 'file:///')
653 self.assertEqual(P('/a/b.c').as_uri(), 'file:///a/b.c')
654 self.assertEqual(P('/a/b%#c').as_uri(), 'file:///a/b%25%23c')
658 P = self.cls
663 self.assertEqual(P('/a/b\xe9').as_uri(),
667 P = self.cls
668 self.assertFalse(P('A.py').match('a.PY'))
671 P = self.cls
672 self.assertFalse(P().is_absolute())
673 self.assertFalse(P('a').is_absolute())
674 self.assertFalse(P('a/b/').is_absolute())
675 self.assertTrue(P('/').is_absolute())
676 self.assertTrue(P('/a').is_absolute())
677 self.assertTrue(P('/a/b/').is_absolute())
678 self.assertTrue(P('//a').is_absolute())
679 self.assertTrue(P('//a/b').is_absolute())
682 P = self.cls
683 self.assertIs(False, P('').is_reserved())
684 self.assertIs(False, P('/').is_reserved())
685 self.assertIs(False, P('/foo/bar').is_reserved())
686 self.assertIs(False, P('/dev/con/PRN/NUL').is_reserved())
689 P = self.cls
690 p = P('//a')
692 self.assertEqual(pp, P('//a/b'))
693 pp = P('/a').joinpath('//c')
694 self.assertEqual(pp, P('//c'))
695 pp = P('//a').joinpath('/c')
696 self.assertEqual(pp, P('/c'))
700 P = self.cls
701 p = P('//a')
703 self.assertEqual(pp, P('//a/b'))
704 pp = P('/a') / '//c'
705 self.assertEqual(pp, P('//c'))
706 pp = P('//a') / '/c'
707 self.assertEqual(pp, P('/c'))
750 P = self.cls
751 self.assertEqual(P('c:a/b'), P('c:a/b'))
752 self.assertEqual(P('c:a/b'), P('c:', 'a', 'b'))
753 self.assertNotEqual(P('c:a/b'), P('d:a/b'))
754 self.assertNotEqual(P('c:a/b'), P('c:/a/b'))
755 self.assertNotEqual(P('/a/b'), P('c:/a/b'))
757 self.assertEqual(P('a/B'), P('A/b'))
758 self.assertEqual(P('C:a/B'), P('c:A/b'))
759 self.assertEqual(P('//Some/SHARE/a/B'), P('//somE/share/A/b'))
762 P = self.cls
764 P('/a/b').as_uri()
766 P('c:a/b').as_uri()
767 self.assertEqual(P('c:/').as_uri(), 'file:///c:/')
768 self.assertEqual(P('c:/a/b.c').as_uri(), 'file:///c:/a/b.c')
769 self.assertEqual(P('c:/a/b%#c').as_uri(), 'file:///c:/a/b%25%23c')
770 self.assertEqual(P('c:/a/b\xe9').as_uri(), 'file:///c:/a/b%C3%A9')
771 self.assertEqual(P('//some/share/').as_uri(), 'file://some/share/')
772 self.assertEqual(P('//some/share/a/b.c').as_uri(),
774 self.assertEqual(P('//some/share/a/b%#c\xe9').as_uri(),
778 P = self.cls
780 self.assertTrue(P('c:/b.py').match('/*.py'))
781 self.assertTrue(P('c:/b.py').match('c:*.py'))
782 self.assertTrue(P('c:/b.py').match('c:/*.py'))
783 self.assertFalse(P('d:/b.py').match('c:/*.py')) # wrong drive
784 self.assertFalse(P('b.py').match('/*.py'))
785 self.assertFalse(P('b.py').match('c:*.py'))
786 self.assertFalse(P('b.py').match('c:/*.py'))
787 self.assertFalse(P('c:b.py').match('/*.py'))
788 self.assertFalse(P('c:b.py').match('c:/*.py'))
789 self.assertFalse(P('/b.py').match('c:*.py'))
790 self.assertFalse(P('/b.py').match('c:/*.py'))
792 self.assertTrue(P('//some/share/a.py').match('/*.py'))
793 self.assertTrue(P('//some/share/a.py').match('//some/share/*.py'))
794 self.assertFalse(P('//other/share/a.py').match('//some/share/*.py'))
795 self.assertFalse(P('//some/share/a/b.py').match('//some/share/*.py'))
797 self.assertTrue(P('B.py').match('b.PY'))
798 self.assertTrue(P('c:/a/B.Py').match('C:/A/*.pY'))
799 self.assertTrue(P('//Some/Share/B.Py').match('//somE/sharE/*.pY'))
806 P = self.cls
807 p = P('c:A/b')
808 q = P('C:a/B')
812 p = P('//some/Share/A/b')
813 q = P('//Some/SHARE/a/B')
819 P = self.cls
820 p = P('c:a/b')
823 p = P('c:/a/b')
826 p = P('//a/b/c/d')
832 P = self.cls
833 p = P('z:a/b/c')
834 self.assertEqual(p.parent, P('z:a/b'))
835 self.assertEqual(p.parent.parent, P('z:a'))
836 self.assertEqual(p.parent.parent.parent, P('z:'))
837 self.assertEqual(p.parent.parent.parent.parent, P('z:'))
838 p = P('z:/a/b/c')
839 self.assertEqual(p.parent, P('z:/a/b'))
840 self.assertEqual(p.parent.parent, P('z:/a'))
841 self.assertEqual(p.parent.parent.parent, P('z:/'))
842 self.assertEqual(p.parent.parent.parent.parent, P('z:/'))
843 p = P('//a/b/c/d')
844 self.assertEqual(p.parent, P('//a/b/c'))
845 self.assertEqual(p.parent.parent, P('//a/b'))
846 self.assertEqual(p.parent.parent.parent, P('//a/b'))
850 P = self.cls
851 p = P('z:a/b/')
854 self.assertEqual(par[0], P('z:a'))
855 self.assertEqual(par[1], P('z:'))
856 self.assertEqual(list(par), [P('z:a'), P('z:')])
859 p = P('z:/a/b/')
862 self.assertEqual(par[0], P('z:/a'))
863 self.assertEqual(par[1], P('z:/'))
864 self.assertEqual(list(par), [P('z:/a'), P('z:/')])
867 p = P('//a/b/c/d')
870 self.assertEqual(par[0], P('//a/b/c'))
871 self.assertEqual(par[1], P('//a/b'))
872 self.assertEqual(list(par), [P('//a/b/c'), P('//a/b')])
877 P = self.cls
878 self.assertEqual(P('c:').drive, 'c:')
879 self.assertEqual(P('c:a/b').drive, 'c:')
880 self.assertEqual(P('c:/').drive, 'c:')
881 self.assertEqual(P('c:/a/b/').drive, 'c:')
882 self.assertEqual(P('//a/b').drive, '\\\\a\\b')
883 self.assertEqual(P('//a/b/').drive, '\\\\a\\b')
884 self.assertEqual(P('//a/b/c/d').drive, '\\\\a\\b')
887 P = self.cls
888 self.assertEqual(P('c:').root, '')
889 self.assertEqual(P('c:a/b').root, '')
890 self.assertEqual(P('c:/').root, '\\')
891 self.assertEqual(P('c:/a/b/').root, '\\')
892 self.assertEqual(P('//a/b').root, '\\')
893 self.assertEqual(P('//a/b/').root, '\\')
894 self.assertEqual(P('//a/b/c/d').root, '\\')
897 P = self.cls
898 self.assertEqual(P('c:').anchor, 'c:')
899 self.assertEqual(P('c:a/b').anchor, 'c:')
900 self.assertEqual(P('c:/').anchor, 'c:\\')
901 self.assertEqual(P('c:/a/b/').anchor, 'c:\\')
902 self.assertEqual(P('//a/b').anchor, '\\\\a\\b\\')
903 self.assertEqual(P('//a/b/').anchor, '\\\\a\\b\\')
904 self.assertEqual(P('//a/b/c/d').anchor, '\\\\a\\b\\')
907 P = self.cls
908 self.assertEqual(P('c:').name, '')
909 self.assertEqual(P('c:/').name, '')
910 self.assertEqual(P('c:a/b').name, 'b')
911 self.assertEqual(P('c:/a/b').name, 'b')
912 self.assertEqual(P('c:a/b.py').name, 'b.py')
913 self.assertEqual(P('c:/a/b.py').name, 'b.py')
914 self.assertEqual(P('//My.py/Share.php').name, '')
915 self.assertEqual(P('//My.py/Share.php/a/b').name, 'b')
918 P = self.cls
919 self.assertEqual(P('c:').suffix, '')
920 self.assertEqual(P('c:/').suffix, '')
921 self.assertEqual(P('c:a/b').suffix, '')
922 self.assertEqual(P('c:/a/b').suffix, '')
923 self.assertEqual(P('c:a/b.py').suffix, '.py')
924 self.assertEqual(P('c:/a/b.py').suffix, '.py')
925 self.assertEqual(P('c:a/.hgrc').suffix, '')
926 self.assertEqual(P('c:/a/.hgrc').suffix, '')
927 self.assertEqual(P('c:a/.hg.rc').suffix, '.rc')
928 self.assertEqual(P('c:/a/.hg.rc').suffix, '.rc')
929 self.assertEqual(P('c:a/b.tar.gz').suffix, '.gz')
930 self.assertEqual(P('c:/a/b.tar.gz').suffix, '.gz')
931 self.assertEqual(P('c:a/Some name. Ending with a dot.').suffix, '')
932 self.assertEqual(P('c:/a/Some name. Ending with a dot.').suffix, '')
933 self.assertEqual(P('//My.py/Share.php').suffix, '')
934 self.assertEqual(P('//My.py/Share.php/a/b').suffix, '')
937 P = self.cls
938 self.assertEqual(P('c:').suffixes, [])
939 self.assertEqual(P('c:/').suffixes, [])
940 self.assertEqual(P('c:a/b').suffixes, [])
941 self.assertEqual(P('c:/a/b').suffixes, [])
942 self.assertEqual(P('c:a/b.py').suffixes, ['.py'])
943 self.assertEqual(P('c:/a/b.py').suffixes, ['.py'])
944 self.assertEqual(P('c:a/.hgrc').suffixes, [])
945 self.assertEqual(P('c:/a/.hgrc').suffixes, [])
946 self.assertEqual(P('c:a/.hg.rc').suffixes, ['.rc'])
947 self.assertEqual(P('c:/a/.hg.rc').suffixes, ['.rc'])
948 self.assertEqual(P('c:a/b.tar.gz').suffixes, ['.tar', '.gz'])
949 self.assertEqual(P('c:/a/b.tar.gz').suffixes, ['.tar', '.gz'])
950 self.assertEqual(P('//My.py/Share.php').suffixes, [])
951 self.assertEqual(P('//My.py/Share.php/a/b').suffixes, [])
952 self.assertEqual(P('c:a/Some name. Ending with a dot.').suffixes, [])
953 self.assertEqual(P('c:/a/Some name. Ending with a dot.').suffixes, [])
956 P = self.cls
957 self.assertEqual(P('c:').stem, '')
958 self.assertEqual(P('c:.').stem, '')
959 self.assertEqual(P('c:..').stem, '..')
960 self.assertEqual(P('c:/').stem, '')
961 self.assertEqual(P('c:a/b').stem, 'b')
962 self.assertEqual(P('c:a/b.py').stem, 'b')
963 self.assertEqual(P('c:a/.hgrc').stem, '.hgrc')
964 self.assertEqual(P('c:a/.hg.rc').stem, '.hg')
965 self.assertEqual(P('c:a/b.tar.gz').stem, 'b.tar')
966 self.assertEqual(P('c:a/Some name. Ending with a dot.').stem,
970 P = self.cls
971 self.assertEqual(P('c:a/b').with_name('d.xml'), P('c:a/d.xml'))
972 self.assertEqual(P('c:/a/b').with_name('d.xml'), P('c:/a/d.xml'))
973 self.assertEqual(P('c:a/Dot ending.').with_name('d.xml'), P('c:a/d.xml'))
974 self.assertEqual(P('c:/a/Dot ending.').with_name('d.xml'), P('c:/a/d.xml'))
975 self.assertRaises(ValueError, P('c:').with_name, 'd.xml')
976 self.assertRaises(ValueError, P('c:/').with_name, 'd.xml')
977 self.assertRaises(ValueError, P('//My/Share').with_name, 'd.xml')
978 self.assertRaises(ValueError, P('c:a/b').with_name, 'd:')
979 self.assertRaises(ValueError, P('c:a/b').with_name, 'd:e')
980 self.assertRaises(ValueError, P('c:a/b').with_name, 'd:/e')
981 self.assertRaises(ValueError, P('c:a/b').with_name, '//My/Share')
984 P = self.cls
985 self.assertEqual(P('c:a/b').with_suffix('.gz'), P('c:a/b.gz'))
986 self.assertEqual(P('c:/a/b').with_suffix('.gz'), P('c:/a/b.gz'))
987 self.assertEqual(P('c:a/b.py').with_suffix('.gz'), P('c:a/b.gz'))
988 self.assertEqual(P('c:/a/b.py').with_suffix('.gz'), P('c:/a/b.gz'))
990 self.assertRaises(ValueError, P('').with_suffix, '.gz')
991 self.assertRaises(ValueError, P('.').with_suffix, '.gz')
992 self.assertRaises(ValueError, P('/').with_suffix, '.gz')
993 self.assertRaises(ValueError, P('//My/Share').with_suffix, '.gz')
995 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'gz')
996 self.assertRaises(ValueError, P('c:a/b').with_suffix, '/')
997 self.assertRaises(ValueError, P('c:a/b').with_suffix, '\\')
998 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'c:')
999 self.assertRaises(ValueError, P('c:a/b').with_suffix, '/.gz')
1000 self.assertRaises(ValueError, P('c:a/b').with_suffix, '\\.gz')
1001 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'c:.gz')
1002 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'c/d')
1003 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'c\\d')
1004 self.assertRaises(ValueError, P('c:a/b').with_suffix, '.c/d')
1005 self.assertRaises(ValueError, P('c:a/b').with_suffix, '.c\\d')
1008 P = self.cls
1009 p = P('C:Foo/Bar')
1010 self.assertEqual(p.relative_to(P('c:')), P('Foo/Bar'))
1011 self.assertEqual(p.relative_to('c:'), P('Foo/Bar'))
1012 self.assertEqual(p.relative_to(P('c:foO')), P('Bar'))
1013 self.assertEqual(p.relative_to('c:foO'), P('Bar'))
1014 self.assertEqual(p.relative_to('c:foO/'), P('Bar'))
1015 self.assertEqual(p.relative_to(P('c:foO/baR')), P())
1016 self.assertEqual(p.relative_to('c:foO/baR'), P())
1018 self.assertRaises(ValueError, p.relative_to, P())
1020 self.assertRaises(ValueError, p.relative_to, P('d:'))
1021 self.assertRaises(ValueError, p.relative_to, P('/'))
1022 self.assertRaises(ValueError, p.relative_to, P('Foo'))
1023 self.assertRaises(ValueError, p.relative_to, P('/Foo'))
1024 self.assertRaises(ValueError, p.relative_to, P('C:/Foo'))
1025 self.assertRaises(ValueError, p.relative_to, P('C:Foo/Bar/Baz'))
1026 self.assertRaises(ValueError, p.relative_to, P('C:Foo/Baz'))
1027 p = P('C:/Foo/Bar')
1028 self.assertEqual(p.relative_to(P('c:')), P('/Foo/Bar'))
1029 self.assertEqual(p.relative_to('c:'), P('/Foo/Bar'))
1030 self.assertEqual(str(p.relative_to(P('c:'))), '\\Foo\\Bar')
1032 self.assertEqual(p.relative_to(P('c:/')), P('Foo/Bar'))
1033 self.assertEqual(p.relative_to('c:/'), P('Foo/Bar'))
1034 self.assertEqual(p.relative_to(P('c:/foO')), P('Bar'))
1035 self.assertEqual(p.relative_to('c:/foO'), P('Bar'))
1036 self.assertEqual(p.relative_to('c:/foO/'), P('Bar'))
1037 self.assertEqual(p.relative_to(P('c:/foO/baR')), P())
1038 self.assertEqual(p.relative_to('c:/foO/baR'), P())
1040 self.assertRaises(ValueError, p.relative_to, P('C:/Baz'))
1041 self.assertRaises(ValueError, p.relative_to, P('C:/Foo/Bar/Baz'))
1042 self.assertRaises(ValueError, p.relative_to, P('C:/Foo/Baz'))
1043 self.assertRaises(ValueError, p.relative_to, P('C:Foo'))
1044 self.assertRaises(ValueError, p.relative_to, P('d:'))
1045 self.assertRaises(ValueError, p.relative_to, P('d:/'))
1046 self.assertRaises(ValueError, p.relative_to, P('/'))
1047 self.assertRaises(ValueError, p.relative_to, P('/Foo'))
1048 self.assertRaises(ValueError, p.relative_to, P('//C/Foo'))
1050 p = P('//Server/Share/Foo/Bar')
1051 self.assertEqual(p.relative_to(P('//sErver/sHare')), P('Foo/Bar'))
1052 self.assertEqual(p.relative_to('//sErver/sHare'), P('Foo/Bar'))
1053 self.assertEqual(p.relative_to('//sErver/sHare/'), P('Foo/Bar'))
1054 self.assertEqual(p.relative_to(P('//sErver/sHare/Foo')), P('Bar'))
1055 self.assertEqual(p.relative_to('//sErver/sHare/Foo'), P('Bar'))
1056 self.assertEqual(p.relative_to('//sErver/sHare/Foo/'), P('Bar'))
1057 self.assertEqual(p.relative_to(P('//sErver/sHare/Foo/Bar')), P())
1058 self.assertEqual(p.relative_to('//sErver/sHare/Foo/Bar'), P())
1060 self.assertRaises(ValueError, p.relative_to, P('/Server/Share/Foo'))
1061 self.assertRaises(ValueError, p.relative_to, P('c:/Server/Share/Foo'))
1062 self.assertRaises(ValueError, p.relative_to, P('//z/Share/Foo'))
1063 self.assertRaises(ValueError, p.relative_to, P('//Server/z/Foo'))
1066 P = self.cls
1068 self.assertFalse(P().is_absolute())
1069 self.assertFalse(P('a').is_absolute())
1070 self.assertFalse(P('a/b/').is_absolute())
1071 self.assertFalse(P('/').is_absolute())
1072 self.assertFalse(P('/a').is_absolute())
1073 self.assertFalse(P('/a/b/').is_absolute())
1074 self.assertFalse(P('c:').is_absolute())
1075 self.assertFalse(P('c:a').is_absolute())
1076 self.assertFalse(P('c:a/b/').is_absolute())
1077 self.assertTrue(P('c:/').is_absolute())
1078 self.assertTrue(P('c:/a').is_absolute())
1079 self.assertTrue(P('c:/a/b/').is_absolute())
1081 self.assertTrue(P('//a/b').is_absolute())
1082 self.assertTrue(P('//a/b/').is_absolute())
1083 self.assertTrue(P('//a/b/c').is_absolute())
1084 self.assertTrue(P('//a/b/c/d').is_absolute())
1087 P = self.cls
1088 p = P('C:/a/b')
1090 self.assertEqual(pp, P('C:/a/b/x/y'))
1092 self.assertEqual(pp, P('C:/x/y'))
1096 self.assertEqual(pp, P('D:x/y'))
1098 self.assertEqual(pp, P('D:/x/y'))
1100 self.assertEqual(pp, P('//host/share/x/y'))
1104 self.assertEqual(pp, P('C:/a/b/x/y'))
1106 self.assertEqual(pp, P('C:/x/y'))
1110 P = self.cls
1111 p = P('C:/a/b')
1112 self.assertEqual(p / 'x/y', P('C:/a/b/x/y'))
1113 self.assertEqual(p / 'x' / 'y', P('C:/a/b/x/y'))
1114 self.assertEqual(p / '/x/y', P('C:/x/y'))
1115 self.assertEqual(p / '/x' / 'y', P('C:/x/y'))
1118 self.assertEqual(p / 'D:x/y', P('D:x/y'))
1119 self.assertEqual(p / 'D:' / 'x/y', P('D:x/y'))
1120 self.assertEqual(p / 'D:/x/y', P('D:/x/y'))
1121 self.assertEqual(p / 'D:' / '/x/y', P('D:/x/y'))
1122 self.assertEqual(p / '//host/share/x/y', P('//host/share/x/y'))
1125 self.assertEqual(p / 'c:x/y', P('C:/a/b/x/y'))
1126 self.assertEqual(p / 'c:/x/y', P('C:/x/y'))
1129 P = self.cls
1130 self.assertIs(False, P('').is_reserved())
1131 self.assertIs(False, P('/').is_reserved())
1132 self.assertIs(False, P('/foo/bar').is_reserved())
1133 self.assertIs(True, P('con').is_reserved())
1134 self.assertIs(True, P('NUL').is_reserved())
1135 self.assertIs(True, P('NUL.txt').is_reserved())
1136 self.assertIs(True, P('com1').is_reserved())
1137 self.assertIs(True, P('com9.bar').is_reserved())
1138 self.assertIs(False, P('bar.com9').is_reserved())
1139 self.assertIs(True, P('lpt1').is_reserved())
1140 self.assertIs(True, P('lpt9.bar').is_reserved())
1141 self.assertIs(False, P('bar.lpt9').is_reserved())
1143 self.assertIs(False, P('c:/NUL/con/baz').is_reserved())
1145 self.assertIs(False, P('//my/share/nul/con/aux').is_reserved())
1196 P = self.cls
1198 P('c:/').owner()
1201 P = self.cls
1203 P('c:/').group()
1328 P = self.cls
1329 p = P('~')
1330 self.assertEqual(p.expanduser(), P(os.path.expanduser('~')))
1331 p = P('foo')
1333 p = P('/~')
1335 p = P('../~')
1337 p = P(P('').absolute().anchor) / '~'
1341 P = self.cls
1342 p = P(BASE)
1353 self.assertIs(False, P('/xyzzy').exists())
1354 self.assertIs(False, P(BASE + '\udfff').exists())
1355 self.assertIs(False, P(BASE + '\x00').exists())
1387 P = self.cls
1388 p = P(BASE)
1394 self.assertEqual(paths, { P(BASE, q) for q in expected })
1399 P = self.cls
1400 p = P(BASE, 'linkB')
1402 expected = { P(BASE, 'linkB', q) for q in ['fileB', 'linkD'] }
1417 self.assertEqual(set(glob), { P(BASE, q) for q in expected })
1418 P = self.cls
1419 p = P(BASE)
1441 self.assertEqual(set(glob), { P(BASE, q) for q in expected })
1442 P = self.cls
1443 p = P(BASE)
1456 p = P(BASE, "dirC")
1463 P = self.cls
1464 p = P(BASE)
1480 P = self.cls
1481 base = P(BASE) / 'deep'
1482 p = P(base, *(['d']*depth))
1497 P = self.cls
1498 p = P(BASE)
1499 self.assertEqual(set(p.glob("..")), { P(BASE, "..") })
1500 self.assertEqual(set(p.glob("dirA/../file*")), { P(BASE, "dirA/../fileA") })
1513 P = self.cls
1514 p = P(BASE, 'foo')
1521 p = P(BASE, 'foo', 'in', 'spam')
1524 p = P(BASE, '..', 'foo', 'in', 'spam')
1528 p = P(BASE, 'dirB', 'fileB')
1530 p = P(BASE, 'linkA')
1531 self._check_resolve_relative(p, P(BASE, 'fileA'))
1532 p = P(BASE, 'dirA', 'linkC', 'fileB')
1533 self._check_resolve_relative(p, P(BASE, 'dirB', 'fileB'))
1534 p = P(BASE, 'dirB', 'linkD', 'fileB')
1535 self._check_resolve_relative(p, P(BASE, 'dirB', 'fileB'))
1537 p = P(BASE, 'dirA', 'linkC', 'fileB', 'foo', 'in', 'spam')
1538 self._check_resolve_relative(p, P(BASE, 'dirB', 'fileB', 'foo', 'in',
1540 p = P(BASE, 'dirA', 'linkC', '..', 'foo', 'in', 'spam')
1544 self._check_resolve_relative(p, P(BASE, 'dirA', 'foo', 'in',
1549 self._check_resolve_relative(p, P(BASE, 'foo', 'in', 'spam'), False)
1555 p = P(BASE, 'dirA', 'linkX', 'linkY', 'fileB')
1556 self._check_resolve_absolute(p, P(BASE, 'dirB', 'fileB'))
1558 p = P(BASE, 'dirA', 'linkX', 'linkY', 'foo', 'in', 'spam')
1559 self._check_resolve_relative(p, P(BASE, 'dirB', 'foo', 'in', 'spam'),
1561 p = P(BASE, 'dirA', 'linkX', 'linkY', '..', 'foo', 'in', 'spam')
1565 self._check_resolve_relative(p, P(d, 'foo', 'in', 'spam'), False)
1569 self._check_resolve_relative(p, P(BASE, 'foo', 'in', 'spam'), False)
1677 P = self.cls(BASE)
1678 p = P / 'fileA'
1681 q = P / 'dirA' / 'fileAA'
1697 P = self.cls(BASE)
1698 p = P / 'fileA'
1700 q = P / 'dirA' / 'fileAA'
1705 P = self.cls(BASE)
1706 p = P / 'fileA'
1709 q = P / 'dirA' / 'fileAA'
1722 P = self.cls(BASE)
1723 p = P / 'fileA'
1726 q = P / 'dirA' / 'fileAA'
1739 P = self.cls(BASE)
1740 p = P / 'newfileA'
1756 p = P / 'newfileB'
1763 P = self.cls(BASE)
1764 p = P / 'fileA'
1770 P = self.cls(BASE)
1771 p = P / 'newdirA'
1905 P = self.cls(BASE)
1906 target = P / 'fileA'
1908 link = P / 'dirA' / 'linkAA'
1913 link = P / 'dirA' / 'linkAAA'
1919 target = P / 'dirB'
1920 link = P / 'dirA' / 'linkAAAA'
1928 P = self.cls(BASE)
1929 self.assertTrue((P / 'dirA').is_dir())
1930 self.assertFalse((P / 'fileA').is_dir())
1931 self.assertFalse((P / 'non-existing').is_dir())
1932 self.assertFalse((P / 'fileA' / 'bah').is_dir())
1934 self.assertFalse((P / 'linkA').is_dir())
1935 self.assertTrue((P / 'linkB').is_dir())
1936 self.assertFalse((P/ 'brokenLink').is_dir(), False)
1937 self.assertIs((P / 'dirA\udfff').is_dir(), False)
1938 self.assertIs((P / 'dirA\x00').is_dir(), False)
1941 P = self.cls(BASE)
1942 self.assertTrue((P / 'fileA').is_file())
1943 self.assertFalse((P / 'dirA').is_file())
1944 self.assertFalse((P / 'non-existing').is_file())
1945 self.assertFalse((P / 'fileA' / 'bah').is_file())
1947 self.assertTrue((P / 'linkA').is_file())
1948 self.assertFalse((P / 'linkB').is_file())
1949 self.assertFalse((P/ 'brokenLink').is_file())
1950 self.assertIs((P / 'fileA\udfff').is_file(), False)
1951 self.assertIs((P / 'fileA\x00').is_file(), False)
1955 P = self.cls(BASE)
1957 self.assertFalse((P / 'fileA').is_mount())
1958 self.assertFalse((P / 'dirA').is_mount())
1959 self.assertFalse((P / 'non-existing').is_mount())
1960 self.assertFalse((P / 'fileA' / 'bah').is_mount())
1963 self.assertFalse((P / 'linkA').is_mount())
1968 P = self.cls(BASE)
1969 self.assertFalse((P / 'fileA').is_symlink())
1970 self.assertFalse((P / 'dirA').is_symlink())
1971 self.assertFalse((P / 'non-existing').is_symlink())
1972 self.assertFalse((P / 'fileA' / 'bah').is_symlink())
1974 self.assertTrue((P / 'linkA').is_symlink())
1975 self.assertTrue((P / 'linkB').is_symlink())
1976 self.assertTrue((P/ 'brokenLink').is_symlink())
1977 self.assertIs((P / 'fileA\udfff').is_file(), False)
1978 self.assertIs((P / 'fileA\x00').is_file(), False)
1980 self.assertIs((P / 'linkA\udfff').is_file(), False)
1981 self.assertIs((P / 'linkA\x00').is_file(), False)
1984 P = self.cls(BASE)
1985 self.assertFalse((P / 'fileA').is_fifo())
1986 self.assertFalse((P / 'dirA').is_fifo())
1987 self.assertFalse((P / 'non-existing').is_fifo())
1988 self.assertFalse((P / 'fileA' / 'bah').is_fifo())
1989 self.assertIs((P / 'fileA\udfff').is_fifo(), False)
1990 self.assertIs((P / 'fileA\x00').is_fifo(), False)
1994 P = self.cls(BASE, 'myfifo')
1996 os.mkfifo(str(P))
1999 self.assertTrue(P.is_fifo())
2000 self.assertFalse(P.is_socket())
2001 self.assertFalse(P.is_file())
2006 P = self.cls(BASE)
2007 self.assertFalse((P / 'fileA').is_socket())
2008 self.assertFalse((P / 'dirA').is_socket())
2009 self.assertFalse((P / 'non-existing').is_socket())
2010 self.assertFalse((P / 'fileA' / 'bah').is_socket())
2011 self.assertIs((P / 'fileA\udfff').is_socket(), False)
2012 self.assertIs((P / 'fileA\x00').is_socket(), False)
2016 P = self.cls(BASE, 'mysock')
2020 sock.bind(str(P))
2025 self.assertTrue(P.is_socket())
2026 self.assertFalse(P.is_fifo())
2027 self.assertFalse(P.is_file())
2032 P = self.cls(BASE)
2033 self.assertFalse((P / 'fileA').is_block_device())
2034 self.assertFalse((P / 'dirA').is_block_device())
2035 self.assertFalse((P / 'non-existing').is_block_device())
2036 self.assertFalse((P / 'fileA' / 'bah').is_block_device())
2037 self.assertIs((P / 'fileA\udfff').is_block_device(), False)
2038 self.assertIs((P / 'fileA\x00').is_block_device(), False)
2041 P = self.cls(BASE)
2042 self.assertFalse((P / 'fileA').is_char_device())
2043 self.assertFalse((P / 'dirA').is_char_device())
2044 self.assertFalse((P / 'non-existing').is_char_device())
2045 self.assertFalse((P / 'fileA' / 'bah').is_char_device())
2046 self.assertIs((P / 'fileA\udfff').is_char_device(), False)
2047 self.assertIs((P / 'fileA\x00').is_char_device(), False)
2051 P = self.cls('/dev/null')
2052 if not P.exists():
2054 self.assertTrue(P.is_char_device())
2055 self.assertFalse(P.is_block_device())
2056 self.assertFalse(P.is_file())
2068 P = self.cls
2069 p = P('/usr/bin/foo')
2070 q = P('/usr/local/bin')
2078 P = self.cls(BASE)
2085 p = (P / 'link0').resolve()
2086 self.assertEqual(p, P)
2088 p = (P / 'link1').resolve()
2089 self.assertEqual(p, P)
2091 p = (P / 'link2').resolve()
2092 self.assertEqual(p, P)
2094 p = (P / 'link3').resolve()
2095 self.assertEqual(p, P)
2103 self.assertEqual(p, P)
2106 self.assertEqual(p, P)
2109 self.assertEqual(p, P)
2112 self.assertEqual(p, P)
2210 P = self.cls
2211 p = P(BASE)
2218 P = self.cls
2219 p = P(BASE, "dirC")
2228 P = self.cls
2244 p1 = P('~/Documents')
2245 p2 = P('~' + username + '/Documents')
2246 p3 = P('~' + othername + '/Documents')
2247 p4 = P('../~' + username + '/Documents')
2248 p5 = P('/~' + username + '/Documents')
2249 p6 = P('')
2250 p7 = P('~fakeuser/Documents')
2255 self.assertEqual(p1.expanduser(), P(userhome) / 'Documents')
2256 self.assertEqual(p2.expanduser(), P(userhome) / 'Documents')
2257 self.assertEqual(p3.expanduser(), P(otherhome) / 'Documents')
2264 self.assertEqual(p1.expanduser(), P('/tmp/Documents'))
2265 self.assertEqual(p2.expanduser(), P(userhome) / 'Documents')
2266 self.assertEqual(p3.expanduser(), P(otherhome) / 'Documents')
2301 P = self.cls
2302 p = P(BASE)
2303 self.assertEqual(set(p.glob("FILEa")), { P(BASE, "fileA") })
2304 self.assertEqual(set(p.glob("F*a")), { P(BASE, "fileA") })
2309 P = self.cls
2310 p = P(BASE, "dirC")
2311 self.assertEqual(set(p.rglob("FILEd")), { P(BASE, "dirC/dirD/fileD") })
2315 P = self.cls
2324 p1 = P('~/My Documents')
2325 p2 = P('~alice/My Documents')
2326 p3 = P('~bob/My Documents')
2327 p4 = P('/~/My Documents')
2328 p5 = P('d:~/My Documents')
2329 p6 = P('')
2340 P('C:/Users/alice/My Documents'))
2344 P('C:/Users/alice/My Documents'))
2346 P('C:/Users/bob/My Documents'))