• Home
  • Raw
  • Download

Lines Matching full:p

189         p = self.cls('a')
190 self.flavour = p._flavour
195 P = self.cls
196 p = P('a')
197 self.assertIsInstance(p, P)
198 P('a', 'b', 'c')
199 P('/a', 'b', 'c')
200 P('a/b/c')
201 P('/a/b/c')
202 P(FakePath("a/b/c"))
203 self.assertEqual(P(P('a')), P('a'))
204 self.assertEqual(P(P('a'), 'b'), P('a/b'))
205 self.assertEqual(P(P('a'), P('b')), P('a/b'))
206 self.assertEqual(P(P('a'), P('b'), P('c')), P(FakePath("a/b/c")))
214 P = self.cls
215 p = P(*(StrSubclass(x) for x in args))
216 self.assertEqual(p, P(*args))
217 for part in p.parts:
228 P = self.cls
229 p = P('a/b')
230 pp = p.joinpath('c')
231 self.assertEqual(pp, P('a/b/c'))
232 self.assertIs(type(pp), type(p))
233 pp = p.joinpath('c', 'd')
234 self.assertEqual(pp, P('a/b/c/d'))
235 pp = p.joinpath(P('c'))
236 self.assertEqual(pp, P('a/b/c'))
237 pp = p.joinpath('/c')
238 self.assertEqual(pp, P('/c'))
242 P = self.cls
243 p = P('a/b')
244 pp = p / 'c'
245 self.assertEqual(pp, P('a/b/c'))
246 self.assertIs(type(pp), type(p))
247 pp = p / 'c/d'
248 self.assertEqual(pp, P('a/b/c/d'))
249 pp = p / 'c' / 'd'
250 self.assertEqual(pp, P('a/b/c/d'))
251 pp = 'c' / p / 'd'
252 self.assertEqual(pp, P('c/a/b/d'))
253 pp = p / P('c')
254 self.assertEqual(pp, P('a/b/c'))
255 pp = p/ '/c'
256 self.assertEqual(pp, P('/c'))
259 p = self.cls(*args)
260 self.assertEqual(str(p), expected.replace('/', self.sep))
271 P = self.cls
273 self.assertEqual(P(pathstr).as_posix(), pathstr)
278 P = self.cls
279 self.assertEqual(bytes(P('a/b')), b'a' + sep + b'b')
282 P = self.cls
284 P('a').as_uri()
286 P().as_uri()
290 p = self.cls(pathstr)
291 clsname = p.__class__.__name__
292 r = repr(p)
297 self.assertEqual(eval(inner), p.as_posix())
300 self.assertIs(q.__class__, p.__class__)
301 self.assertEqual(q, p)
305 P = self.cls
306 self.assertEqual(P('a/b'), P('a/b'))
307 self.assertEqual(P('a/b'), P('a', 'b'))
308 self.assertNotEqual(P('a/b'), P('a'))
309 self.assertNotEqual(P('a/b'), P('/a/b'))
310 self.assertNotEqual(P('a/b'), P())
311 self.assertNotEqual(P('/a/b'), P('/'))
312 self.assertNotEqual(P(), P('/'))
313 self.assertNotEqual(P(), "")
314 self.assertNotEqual(P(), {})
315 self.assertNotEqual(P(), int)
318 P = self.cls
319 self.assertRaises(ValueError, P('a').match, '')
320 self.assertRaises(ValueError, P('a').match, '.')
322 self.assertTrue(P('b.py').match('b.py'))
323 self.assertTrue(P('a/b.py').match('b.py'))
324 self.assertTrue(P('/a/b.py').match('b.py'))
325 self.assertFalse(P('a.py').match('b.py'))
326 self.assertFalse(P('b/py').match('b.py'))
327 self.assertFalse(P('/a.py').match('b.py'))
328 self.assertFalse(P('b.py/c').match('b.py'))
330 self.assertTrue(P('b.py').match('*.py'))
331 self.assertTrue(P('a/b.py').match('*.py'))
332 self.assertTrue(P('/a/b.py').match('*.py'))
333 self.assertFalse(P('b.pyc').match('*.py'))
334 self.assertFalse(P('b./py').match('*.py'))
335 self.assertFalse(P('b.py/c').match('*.py'))
337 self.assertTrue(P('ab/c.py').match('a*/*.py'))
338 self.assertTrue(P('/d/ab/c.py').match('a*/*.py'))
339 self.assertFalse(P('a.py').match('a*/*.py'))
340 self.assertFalse(P('/dab/c.py').match('a*/*.py'))
341 self.assertFalse(P('ab/c.py/d').match('a*/*.py'))
343 self.assertTrue(P('/b.py').match('/*.py'))
344 self.assertFalse(P('b.py').match('/*.py'))
345 self.assertFalse(P('a/b.py').match('/*.py'))
346 self.assertFalse(P('/a/b.py').match('/*.py'))
348 self.assertTrue(P('/a/b.py').match('/a/*.py'))
349 self.assertFalse(P('/ab.py').match('/a/*.py'))
350 self.assertFalse(P('/a/b/c.py').match('/a/*.py'))
352 self.assertFalse(P('/a/b/c.py').match('/**/*.py'))
353 self.assertTrue(P('/a/b/c.py').match('/a/**/*.py'))
360 P = self.cls
361 a = P('a')
362 b = P('a/b')
363 c = P('abc')
364 d = P('b')
370 P = self.cls
371 a = P('/a')
372 b = P('/a/b')
373 c = P('/abc')
374 d = P('/b')
381 P() < {}
386 P = self.cls
387 p = P('a/b')
388 parts = p.parts
391 self.assertIs(parts, p.parts)
393 p = P('/a/b')
394 parts = p.parts
398 P = self.cls
399 p = P('a/b')
400 self._check_str(p.__fspath__(), ('a/b',))
401 self._check_str(os.fspath(p), ('a/b',))
415 p = self.cls(*t)
416 self.assertEqual(p, pcanon, "failed with args {}".format(t))
417 self.assertEqual(hash(p), hash(pcanon))
418 self.assertEqual(str(p), canon)
419 self.assertEqual(p.as_posix(), posix)
423 P = self.cls
424 p = P('a/b/c')
425 self.assertEqual(p.parent, P('a/b'))
426 self.assertEqual(p.parent.parent, P('a'))
427 self.assertEqual(p.parent.parent.parent, P())
428 self.assertEqual(p.parent.parent.parent.parent, P())
430 p = P('/a/b/c')
431 self.assertEqual(p.parent, P('/a/b'))
432 self.assertEqual(p.parent.parent, P('/a'))
433 self.assertEqual(p.parent.parent.parent, P('/'))
434 self.assertEqual(p.parent.parent.parent.parent, P('/'))
438 P = self.cls
439 p = P('a/b/c')
440 par = p.parents
442 self.assertEqual(par[0], P('a/b'))
443 self.assertEqual(par[1], P('a'))
444 self.assertEqual(par[2], P('.'))
445 self.assertEqual(par[-1], P('.'))
446 self.assertEqual(par[-2], P('a'))
447 self.assertEqual(par[-3], P('a/b'))
448 self.assertEqual(par[0:1], (P('a/b'),))
449 self.assertEqual(par[:2], (P('a/b'), P('a')))
450 self.assertEqual(par[:-1], (P('a/b'), P('a')))
451 self.assertEqual(par[1:], (P('a'), P('.')))
452 self.assertEqual(par[::2], (P('a/b'), P('.')))
453 self.assertEqual(par[::-1], (P('.'), P('a'), P('a/b')))
454 self.assertEqual(list(par), [P('a/b'), P('a'), P('.')])
460 par[0] = p
462 p = P('/a/b/c')
463 par = p.parents
465 self.assertEqual(par[0], P('/a/b'))
466 self.assertEqual(par[1], P('/a'))
467 self.assertEqual(par[2], P('/'))
468 self.assertEqual(par[-1], P('/'))
469 self.assertEqual(par[-2], P('/a'))
470 self.assertEqual(par[-3], P('/a/b'))
471 self.assertEqual(par[0:1], (P('/a/b'),))
472 self.assertEqual(par[:2], (P('/a/b'), P('/a')))
473 self.assertEqual(par[:-1], (P('/a/b'), P('/a')))
474 self.assertEqual(par[1:], (P('/a'), P('/')))
475 self.assertEqual(par[::2], (P('/a/b'), P('/')))
476 self.assertEqual(par[::-1], (P('/'), P('/a'), P('/a/b')))
477 self.assertEqual(list(par), [P('/a/b'), P('/a'), P('/')])
484 P = self.cls
485 self.assertEqual(P('a/b').drive, '')
486 self.assertEqual(P('/a/b').drive, '')
487 self.assertEqual(P('').drive, '')
490 P = self.cls
492 self.assertEqual(P('').root, '')
493 self.assertEqual(P('a/b').root, '')
494 self.assertEqual(P('/').root, sep)
495 self.assertEqual(P('/a/b').root, sep)
498 P = self.cls
500 self.assertEqual(P('').anchor, '')
501 self.assertEqual(P('a/b').anchor, '')
502 self.assertEqual(P('/').anchor, sep)
503 self.assertEqual(P('/a/b').anchor, sep)
506 P = self.cls
507 self.assertEqual(P('').name, '')
508 self.assertEqual(P('.').name, '')
509 self.assertEqual(P('/').name, '')
510 self.assertEqual(P('a/b').name, 'b')
511 self.assertEqual(P('/a/b').name, 'b')
512 self.assertEqual(P('/a/b/.').name, 'b')
513 self.assertEqual(P('a/b.py').name, 'b.py')
514 self.assertEqual(P('/a/b.py').name, 'b.py')
517 P = self.cls
518 self.assertEqual(P('').suffix, '')
519 self.assertEqual(P('.').suffix, '')
520 self.assertEqual(P('..').suffix, '')
521 self.assertEqual(P('/').suffix, '')
522 self.assertEqual(P('a/b').suffix, '')
523 self.assertEqual(P('/a/b').suffix, '')
524 self.assertEqual(P('/a/b/.').suffix, '')
525 self.assertEqual(P('a/b.py').suffix, '.py')
526 self.assertEqual(P('/a/b.py').suffix, '.py')
527 self.assertEqual(P('a/.hgrc').suffix, '')
528 self.assertEqual(P('/a/.hgrc').suffix, '')
529 self.assertEqual(P('a/.hg.rc').suffix, '.rc')
530 self.assertEqual(P('/a/.hg.rc').suffix, '.rc')
531 self.assertEqual(P('a/b.tar.gz').suffix, '.gz')
532 self.assertEqual(P('/a/b.tar.gz').suffix, '.gz')
533 self.assertEqual(P('a/Some name. Ending with a dot.').suffix, '')
534 self.assertEqual(P('/a/Some name. Ending with a dot.').suffix, '')
537 P = self.cls
538 self.assertEqual(P('').suffixes, [])
539 self.assertEqual(P('.').suffixes, [])
540 self.assertEqual(P('/').suffixes, [])
541 self.assertEqual(P('a/b').suffixes, [])
542 self.assertEqual(P('/a/b').suffixes, [])
543 self.assertEqual(P('/a/b/.').suffixes, [])
544 self.assertEqual(P('a/b.py').suffixes, ['.py'])
545 self.assertEqual(P('/a/b.py').suffixes, ['.py'])
546 self.assertEqual(P('a/.hgrc').suffixes, [])
547 self.assertEqual(P('/a/.hgrc').suffixes, [])
548 self.assertEqual(P('a/.hg.rc').suffixes, ['.rc'])
549 self.assertEqual(P('/a/.hg.rc').suffixes, ['.rc'])
550 self.assertEqual(P('a/b.tar.gz').suffixes, ['.tar', '.gz'])
551 self.assertEqual(P('/a/b.tar.gz').suffixes, ['.tar', '.gz'])
552 self.assertEqual(P('a/Some name. Ending with a dot.').suffixes, [])
553 self.assertEqual(P('/a/Some name. Ending with a dot.').suffixes, [])
556 P = self.cls
557 self.assertEqual(P('').stem, '')
558 self.assertEqual(P('.').stem, '')
559 self.assertEqual(P('..').stem, '..')
560 self.assertEqual(P('/').stem, '')
561 self.assertEqual(P('a/b').stem, 'b')
562 self.assertEqual(P('a/b.py').stem, 'b')
563 self.assertEqual(P('a/.hgrc').stem, '.hgrc')
564 self.assertEqual(P('a/.hg.rc').stem, '.hg')
565 self.assertEqual(P('a/b.tar.gz').stem, 'b.tar')
566 self.assertEqual(P('a/Some name. Ending with a dot.').stem,
570 P = self.cls
571 self.assertEqual(P('a/b').with_name('d.xml'), P('a/d.xml'))
572 self.assertEqual(P('/a/b').with_name('d.xml'), P('/a/d.xml'))
573 self.assertEqual(P('a/b.py').with_name('d.xml'), P('a/d.xml'))
574 self.assertEqual(P('/a/b.py').with_name('d.xml'), P('/a/d.xml'))
575 self.assertEqual(P('a/Dot ending.').with_name('d.xml'), P('a/d.xml'))
576 self.assertEqual(P('/a/Dot ending.').with_name('d.xml'), P('/a/d.xml'))
577 self.assertRaises(ValueError, P('').with_name, 'd.xml')
578 self.assertRaises(ValueError, P('.').with_name, 'd.xml')
579 self.assertRaises(ValueError, P('/').with_name, 'd.xml')
580 self.assertRaises(ValueError, P('a/b').with_name, '')
581 self.assertRaises(ValueError, P('a/b').with_name, '/c')
582 self.assertRaises(ValueError, P('a/b').with_name, 'c/')
583 self.assertRaises(ValueError, P('a/b').with_name, 'c/d')
586 P = self.cls
587 self.assertEqual(P('a/b').with_stem('d'), P('a/d'))
588 self.assertEqual(P('/a/b').with_stem('d'), P('/a/d'))
589 self.assertEqual(P('a/b.py').with_stem('d'), P('a/d.py'))
590 self.assertEqual(P('/a/b.py').with_stem('d'), P('/a/d.py'))
591 self.assertEqual(P('/a/b.tar.gz').with_stem('d'), P('/a/d.gz'))
592 self.assertEqual(P('a/Dot ending.').with_stem('d'), P('a/d'))
593 self.assertEqual(P('/a/Dot ending.').with_stem('d'), P('/a/d'))
594 self.assertRaises(ValueError, P('').with_stem, 'd')
595 self.assertRaises(ValueError, P('.').with_stem, 'd')
596 self.assertRaises(ValueError, P('/').with_stem, 'd')
597 self.assertRaises(ValueError, P('a/b').with_stem, '')
598 self.assertRaises(ValueError, P('a/b').with_stem, '/c')
599 self.assertRaises(ValueError, P('a/b').with_stem, 'c/')
600 self.assertRaises(ValueError, P('a/b').with_stem, 'c/d')
603 P = self.cls
604 self.assertEqual(P('a/b').with_suffix('.gz'), P('a/b.gz'))
605 self.assertEqual(P('/a/b').with_suffix('.gz'), P('/a/b.gz'))
606 self.assertEqual(P('a/b.py').with_suffix('.gz'), P('a/b.gz'))
607 self.assertEqual(P('/a/b.py').with_suffix('.gz'), P('/a/b.gz'))
609 self.assertEqual(P('a/b.py').with_suffix(''), P('a/b'))
610 self.assertEqual(P('/a/b').with_suffix(''), P('/a/b'))
612 self.assertRaises(ValueError, P('').with_suffix, '.gz')
613 self.assertRaises(ValueError, P('.').with_suffix, '.gz')
614 self.assertRaises(ValueError, P('/').with_suffix, '.gz')
616 self.assertRaises(ValueError, P('a/b').with_suffix, 'gz')
617 self.assertRaises(ValueError, P('a/b').with_suffix, '/')
618 self.assertRaises(ValueError, P('a/b').with_suffix, '.')
619 self.assertRaises(ValueError, P('a/b').with_suffix, '/.gz')
620 self.assertRaises(ValueError, P('a/b').with_suffix, 'c/d')
621 self.assertRaises(ValueError, P('a/b').with_suffix, '.c/.d')
622 self.assertRaises(ValueError, P('a/b').with_suffix, './.d')
623 self.assertRaises(ValueError, P('a/b').with_suffix, '.d/.')
624 self.assertRaises(ValueError, P('a/b').with_suffix,
628 P = self.cls
629 p = P('a/b')
630 self.assertRaises(TypeError, p.relative_to)
631 self.assertRaises(TypeError, p.relative_to, b'a')
632 self.assertEqual(p.relative_to(P()), P('a/b'))
633 self.assertEqual(p.relative_to(''), P('a/b'))
634 self.assertEqual(p.relative_to(P('a')), P('b'))
635 self.assertEqual(p.relative_to('a'), P('b'))
636 self.assertEqual(p.relative_to('a/'), P('b'))
637 self.assertEqual(p.relative_to(P('a/b')), P())
638 self.assertEqual(p.relative_to('a/b'), P())
640 self.assertEqual(p.relative_to('a', 'b'), P())
642 self.assertRaises(ValueError, p.relative_to, P('c'))
643 self.assertRaises(ValueError, p.relative_to, P('a/b/c'))
644 self.assertRaises(ValueError, p.relative_to, P('a/c'))
645 self.assertRaises(ValueError, p.relative_to, P('/a'))
646 p = P('/a/b')
647 self.assertEqual(p.relative_to(P('/')), P('a/b'))
648 self.assertEqual(p.relative_to('/'), P('a/b'))
649 self.assertEqual(p.relative_to(P('/a')), P('b'))
650 self.assertEqual(p.relative_to('/a'), P('b'))
651 self.assertEqual(p.relative_to('/a/'), P('b'))
652 self.assertEqual(p.relative_to(P('/a/b')), P())
653 self.assertEqual(p.relative_to('/a/b'), P())
655 self.assertRaises(ValueError, p.relative_to, P('/c'))
656 self.assertRaises(ValueError, p.relative_to, P('/a/b/c'))
657 self.assertRaises(ValueError, p.relative_to, P('/a/c'))
658 self.assertRaises(ValueError, p.relative_to, P())
659 self.assertRaises(ValueError, p.relative_to, '')
660 self.assertRaises(ValueError, p.relative_to, P('a'))
663 P = self.cls
664 p = P('a/b')
665 self.assertRaises(TypeError, p.is_relative_to)
666 self.assertRaises(TypeError, p.is_relative_to, b'a')
667 self.assertTrue(p.is_relative_to(P()))
668 self.assertTrue(p.is_relative_to(''))
669 self.assertTrue(p.is_relative_to(P('a')))
670 self.assertTrue(p.is_relative_to('a/'))
671 self.assertTrue(p.is_relative_to(P('a/b')))
672 self.assertTrue(p.is_relative_to('a/b'))
674 self.assertTrue(p.is_relative_to('a', 'b'))
676 self.assertFalse(p.is_relative_to(P('c')))
677 self.assertFalse(p.is_relative_to(P('a/b/c')))
678 self.assertFalse(p.is_relative_to(P('a/c')))
679 self.assertFalse(p.is_relative_to(P('/a')))
680 p = P('/a/b')
681 self.assertTrue(p.is_relative_to(P('/')))
682 self.assertTrue(p.is_relative_to('/'))
683 self.assertTrue(p.is_relative_to(P('/a')))
684 self.assertTrue(p.is_relative_to('/a'))
685 self.assertTrue(p.is_relative_to('/a/'))
686 self.assertTrue(p.is_relative_to(P('/a/b')))
687 self.assertTrue(p.is_relative_to('/a/b'))
689 self.assertFalse(p.is_relative_to(P('/c')))
690 self.assertFalse(p.is_relative_to(P('/a/b/c')))
691 self.assertFalse(p.is_relative_to(P('/a/c')))
692 self.assertFalse(p.is_relative_to(P()))
693 self.assertFalse(p.is_relative_to(''))
694 self.assertFalse(p.is_relative_to(P('a')))
697 P = self.cls
698 p = P('/a/b')
700 dumped = pickle.dumps(p, proto)
702 self.assertIs(pp.__class__, p.__class__)
703 self.assertEqual(pp, p)
704 self.assertEqual(hash(pp), hash(p))
705 self.assertEqual(str(pp), str(p))
712 P = self.cls
713 self.assertEqual(P('/a/b').root, '/')
714 self.assertEqual(P('///a/b').root, '/')
716 self.assertEqual(P('//a/b').root, '//')
719 P = self.cls
720 self.assertNotEqual(P('a/b'), P('A/b'))
721 self.assertEqual(P('/a'), P('///a'))
722 self.assertNotEqual(P('/a'), P('//a'))
725 P = self.cls
726 self.assertEqual(P('/').as_uri(), 'file:///')
727 self.assertEqual(P('/a/b.c').as_uri(), 'file:///a/b.c')
728 self.assertEqual(P('/a/b%#c').as_uri(), 'file:///a/b%25%23c')
732 P = self.cls
737 self.assertEqual(P('/a/b\xe9').as_uri(),
741 P = self.cls
742 self.assertFalse(P('A.py').match('a.PY'))
745 P = self.cls
746 self.assertFalse(P().is_absolute())
747 self.assertFalse(P('a').is_absolute())
748 self.assertFalse(P('a/b/').is_absolute())
749 self.assertTrue(P('/').is_absolute())
750 self.assertTrue(P('/a').is_absolute())
751 self.assertTrue(P('/a/b/').is_absolute())
752 self.assertTrue(P('//a').is_absolute())
753 self.assertTrue(P('//a/b').is_absolute())
756 P = self.cls
757 self.assertIs(False, P('').is_reserved())
758 self.assertIs(False, P('/').is_reserved())
759 self.assertIs(False, P('/foo/bar').is_reserved())
760 self.assertIs(False, P('/dev/con/PRN/NUL').is_reserved())
763 P = self.cls
764 p = P('//a')
765 pp = p.joinpath('b')
766 self.assertEqual(pp, P('//a/b'))
767 pp = P('/a').joinpath('//c')
768 self.assertEqual(pp, P('//c'))
769 pp = P('//a').joinpath('/c')
770 self.assertEqual(pp, P('/c'))
774 P = self.cls
775 p = P('//a')
776 pp = p / 'b'
777 self.assertEqual(pp, P('//a/b'))
778 pp = P('/a') / '//c'
779 self.assertEqual(pp, P('//c'))
780 pp = P('//a') / '/c'
781 self.assertEqual(pp, P('/c'))
801 p = self.cls('a/b/c')
802 self.assertEqual(str(p), 'a\\b\\c')
803 p = self.cls('c:/a/b/c')
804 self.assertEqual(str(p), 'c:\\a\\b\\c')
805 p = self.cls('//a/b')
806 self.assertEqual(str(p), '\\\\a\\b\\')
807 p = self.cls('//a/b/c')
808 self.assertEqual(str(p), '\\\\a\\b\\c')
809 p = self.cls('//a/b/c/d')
810 self.assertEqual(str(p), '\\\\a\\b\\c\\d')
824 P = self.cls
825 self.assertEqual(P('c:a/b'), P('c:a/b'))
826 self.assertEqual(P('c:a/b'), P('c:', 'a', 'b'))
827 self.assertNotEqual(P('c:a/b'), P('d:a/b'))
828 self.assertNotEqual(P('c:a/b'), P('c:/a/b'))
829 self.assertNotEqual(P('/a/b'), P('c:/a/b'))
831 self.assertEqual(P('a/B'), P('A/b'))
832 self.assertEqual(P('C:a/B'), P('c:A/b'))
833 self.assertEqual(P('//Some/SHARE/a/B'), P('//somE/share/A/b'))
836 P = self.cls
838 P('/a/b').as_uri()
840 P('c:a/b').as_uri()
841 self.assertEqual(P('c:/').as_uri(), 'file:///c:/')
842 self.assertEqual(P('c:/a/b.c').as_uri(), 'file:///c:/a/b.c')
843 self.assertEqual(P('c:/a/b%#c').as_uri(), 'file:///c:/a/b%25%23c')
844 self.assertEqual(P('c:/a/b\xe9').as_uri(), 'file:///c:/a/b%C3%A9')
845 self.assertEqual(P('//some/share/').as_uri(), 'file://some/share/')
846 self.assertEqual(P('//some/share/a/b.c').as_uri(),
848 self.assertEqual(P('//some/share/a/b%#c\xe9').as_uri(),
852 P = self.cls
854 self.assertTrue(P('c:/b.py').match('/*.py'))
855 self.assertTrue(P('c:/b.py').match('c:*.py'))
856 self.assertTrue(P('c:/b.py').match('c:/*.py'))
857 self.assertFalse(P('d:/b.py').match('c:/*.py')) # wrong drive
858 self.assertFalse(P('b.py').match('/*.py'))
859 self.assertFalse(P('b.py').match('c:*.py'))
860 self.assertFalse(P('b.py').match('c:/*.py'))
861 self.assertFalse(P('c:b.py').match('/*.py'))
862 self.assertFalse(P('c:b.py').match('c:/*.py'))
863 self.assertFalse(P('/b.py').match('c:*.py'))
864 self.assertFalse(P('/b.py').match('c:/*.py'))
866 self.assertTrue(P('//some/share/a.py').match('/*.py'))
867 self.assertTrue(P('//some/share/a.py').match('//some/share/*.py'))
868 self.assertFalse(P('//other/share/a.py').match('//some/share/*.py'))
869 self.assertFalse(P('//some/share/a/b.py').match('//some/share/*.py'))
871 self.assertTrue(P('B.py').match('b.PY'))
872 self.assertTrue(P('c:/a/B.Py').match('C:/A/*.pY'))
873 self.assertTrue(P('//Some/Share/B.Py').match('//somE/sharE/*.pY'))
880 P = self.cls
881 p = P('c:A/b')
882 q = P('C:a/B')
883 assertOrderedEqual(p, q)
884 self.assertFalse(p < q)
885 self.assertFalse(p > q)
886 p = P('//some/Share/A/b')
887 q = P('//Some/SHARE/a/B')
888 assertOrderedEqual(p, q)
889 self.assertFalse(p < q)
890 self.assertFalse(p > q)
893 P = self.cls
894 p = P('c:a/b')
895 parts = p.parts
897 p = P('c:/a/b')
898 parts = p.parts
900 p = P('//a/b/c/d')
901 parts = p.parts
906 P = self.cls
907 p = P('z:a/b/c')
908 self.assertEqual(p.parent, P('z:a/b'))
909 self.assertEqual(p.parent.parent, P('z:a'))
910 self.assertEqual(p.parent.parent.parent, P('z:'))
911 self.assertEqual(p.parent.parent.parent.parent, P('z:'))
912 p = P('z:/a/b/c')
913 self.assertEqual(p.parent, P('z:/a/b'))
914 self.assertEqual(p.parent.parent, P('z:/a'))
915 self.assertEqual(p.parent.parent.parent, P('z:/'))
916 self.assertEqual(p.parent.parent.parent.parent, P('z:/'))
917 p = P('//a/b/c/d')
918 self.assertEqual(p.parent, P('//a/b/c'))
919 self.assertEqual(p.parent.parent, P('//a/b'))
920 self.assertEqual(p.parent.parent.parent, P('//a/b'))
924 P = self.cls
925 p = P('z:a/b/')
926 par = p.parents
928 self.assertEqual(par[0], P('z:a'))
929 self.assertEqual(par[1], P('z:'))
930 self.assertEqual(par[0:1], (P('z:a'),))
931 self.assertEqual(par[:-1], (P('z:a'),))
932 self.assertEqual(par[:2], (P('z:a'), P('z:')))
933 self.assertEqual(par[1:], (P('z:'),))
934 self.assertEqual(par[::2], (P('z:a'),))
935 self.assertEqual(par[::-1], (P('z:'), P('z:a')))
936 self.assertEqual(list(par), [P('z:a'), P('z:')])
939 p = P('z:/a/b/')
940 par = p.parents
942 self.assertEqual(par[0], P('z:/a'))
943 self.assertEqual(par[1], P('z:/'))
944 self.assertEqual(par[0:1], (P('z:/a'),))
945 self.assertEqual(par[0:-1], (P('z:/a'),))
946 self.assertEqual(par[:2], (P('z:/a'), P('z:/')))
947 self.assertEqual(par[1:], (P('z:/'),))
948 self.assertEqual(par[::2], (P('z:/a'),))
949 self.assertEqual(par[::-1], (P('z:/'), P('z:/a'),))
950 self.assertEqual(list(par), [P('z:/a'), P('z:/')])
953 p = P('//a/b/c/d')
954 par = p.parents
956 self.assertEqual(par[0], P('//a/b/c'))
957 self.assertEqual(par[1], P('//a/b'))
958 self.assertEqual(par[0:1], (P('//a/b/c'),))
959 self.assertEqual(par[0:-1], (P('//a/b/c'),))
960 self.assertEqual(par[:2], (P('//a/b/c'), P('//a/b')))
961 self.assertEqual(par[1:], (P('//a/b'),))
962 self.assertEqual(par[::2], (P('//a/b/c'),))
963 self.assertEqual(par[::-1], (P('//a/b'), P('//a/b/c')))
964 self.assertEqual(list(par), [P('//a/b/c'), P('//a/b')])
969 P = self.cls
970 self.assertEqual(P('c:').drive, 'c:')
971 self.assertEqual(P('c:a/b').drive, 'c:')
972 self.assertEqual(P('c:/').drive, 'c:')
973 self.assertEqual(P('c:/a/b/').drive, 'c:')
974 self.assertEqual(P('//a/b').drive, '\\\\a\\b')
975 self.assertEqual(P('//a/b/').drive, '\\\\a\\b')
976 self.assertEqual(P('//a/b/c/d').drive, '\\\\a\\b')
979 P = self.cls
980 self.assertEqual(P('c:').root, '')
981 self.assertEqual(P('c:a/b').root, '')
982 self.assertEqual(P('c:/').root, '\\')
983 self.assertEqual(P('c:/a/b/').root, '\\')
984 self.assertEqual(P('//a/b').root, '\\')
985 self.assertEqual(P('//a/b/').root, '\\')
986 self.assertEqual(P('//a/b/c/d').root, '\\')
989 P = self.cls
990 self.assertEqual(P('c:').anchor, 'c:')
991 self.assertEqual(P('c:a/b').anchor, 'c:')
992 self.assertEqual(P('c:/').anchor, 'c:\\')
993 self.assertEqual(P('c:/a/b/').anchor, 'c:\\')
994 self.assertEqual(P('//a/b').anchor, '\\\\a\\b\\')
995 self.assertEqual(P('//a/b/').anchor, '\\\\a\\b\\')
996 self.assertEqual(P('//a/b/c/d').anchor, '\\\\a\\b\\')
999 P = self.cls
1000 self.assertEqual(P('c:').name, '')
1001 self.assertEqual(P('c:/').name, '')
1002 self.assertEqual(P('c:a/b').name, 'b')
1003 self.assertEqual(P('c:/a/b').name, 'b')
1004 self.assertEqual(P('c:a/b.py').name, 'b.py')
1005 self.assertEqual(P('c:/a/b.py').name, 'b.py')
1006 self.assertEqual(P('//My.py/Share.php').name, '')
1007 self.assertEqual(P('//My.py/Share.php/a/b').name, 'b')
1010 P = self.cls
1011 self.assertEqual(P('c:').suffix, '')
1012 self.assertEqual(P('c:/').suffix, '')
1013 self.assertEqual(P('c:a/b').suffix, '')
1014 self.assertEqual(P('c:/a/b').suffix, '')
1015 self.assertEqual(P('c:a/b.py').suffix, '.py')
1016 self.assertEqual(P('c:/a/b.py').suffix, '.py')
1017 self.assertEqual(P('c:a/.hgrc').suffix, '')
1018 self.assertEqual(P('c:/a/.hgrc').suffix, '')
1019 self.assertEqual(P('c:a/.hg.rc').suffix, '.rc')
1020 self.assertEqual(P('c:/a/.hg.rc').suffix, '.rc')
1021 self.assertEqual(P('c:a/b.tar.gz').suffix, '.gz')
1022 self.assertEqual(P('c:/a/b.tar.gz').suffix, '.gz')
1023 self.assertEqual(P('c:a/Some name. Ending with a dot.').suffix, '')
1024 self.assertEqual(P('c:/a/Some name. Ending with a dot.').suffix, '')
1025 self.assertEqual(P('//My.py/Share.php').suffix, '')
1026 self.assertEqual(P('//My.py/Share.php/a/b').suffix, '')
1029 P = self.cls
1030 self.assertEqual(P('c:').suffixes, [])
1031 self.assertEqual(P('c:/').suffixes, [])
1032 self.assertEqual(P('c:a/b').suffixes, [])
1033 self.assertEqual(P('c:/a/b').suffixes, [])
1034 self.assertEqual(P('c:a/b.py').suffixes, ['.py'])
1035 self.assertEqual(P('c:/a/b.py').suffixes, ['.py'])
1036 self.assertEqual(P('c:a/.hgrc').suffixes, [])
1037 self.assertEqual(P('c:/a/.hgrc').suffixes, [])
1038 self.assertEqual(P('c:a/.hg.rc').suffixes, ['.rc'])
1039 self.assertEqual(P('c:/a/.hg.rc').suffixes, ['.rc'])
1040 self.assertEqual(P('c:a/b.tar.gz').suffixes, ['.tar', '.gz'])
1041 self.assertEqual(P('c:/a/b.tar.gz').suffixes, ['.tar', '.gz'])
1042 self.assertEqual(P('//My.py/Share.php').suffixes, [])
1043 self.assertEqual(P('//My.py/Share.php/a/b').suffixes, [])
1044 self.assertEqual(P('c:a/Some name. Ending with a dot.').suffixes, [])
1045 self.assertEqual(P('c:/a/Some name. Ending with a dot.').suffixes, [])
1048 P = self.cls
1049 self.assertEqual(P('c:').stem, '')
1050 self.assertEqual(P('c:.').stem, '')
1051 self.assertEqual(P('c:..').stem, '..')
1052 self.assertEqual(P('c:/').stem, '')
1053 self.assertEqual(P('c:a/b').stem, 'b')
1054 self.assertEqual(P('c:a/b.py').stem, 'b')
1055 self.assertEqual(P('c:a/.hgrc').stem, '.hgrc')
1056 self.assertEqual(P('c:a/.hg.rc').stem, '.hg')
1057 self.assertEqual(P('c:a/b.tar.gz').stem, 'b.tar')
1058 self.assertEqual(P('c:a/Some name. Ending with a dot.').stem,
1062 P = self.cls
1063 self.assertEqual(P('c:a/b').with_name('d.xml'), P('c:a/d.xml'))
1064 self.assertEqual(P('c:/a/b').with_name('d.xml'), P('c:/a/d.xml'))
1065 self.assertEqual(P('c:a/Dot ending.').with_name('d.xml'), P('c:a/d.xml'))
1066 self.assertEqual(P('c:/a/Dot ending.').with_name('d.xml'), P('c:/a/d.xml'))
1067 self.assertRaises(ValueError, P('c:').with_name, 'd.xml')
1068 self.assertRaises(ValueError, P('c:/').with_name, 'd.xml')
1069 self.assertRaises(ValueError, P('//My/Share').with_name, 'd.xml')
1070 self.assertRaises(ValueError, P('c:a/b').with_name, 'd:')
1071 self.assertRaises(ValueError, P('c:a/b').with_name, 'd:e')
1072 self.assertRaises(ValueError, P('c:a/b').with_name, 'd:/e')
1073 self.assertRaises(ValueError, P('c:a/b').with_name, '//My/Share')
1076 P = self.cls
1077 self.assertEqual(P('c:a/b').with_stem('d'), P('c:a/d'))
1078 self.assertEqual(P('c:/a/b').with_stem('d'), P('c:/a/d'))
1079 self.assertEqual(P('c:a/Dot ending.').with_stem('d'), P('c:a/d'))
1080 self.assertEqual(P('c:/a/Dot ending.').with_stem('d'), P('c:/a/d'))
1081 self.assertRaises(ValueError, P('c:').with_stem, 'd')
1082 self.assertRaises(ValueError, P('c:/').with_stem, 'd')
1083 self.assertRaises(ValueError, P('//My/Share').with_stem, 'd')
1084 self.assertRaises(ValueError, P('c:a/b').with_stem, 'd:')
1085 self.assertRaises(ValueError, P('c:a/b').with_stem, 'd:e')
1086 self.assertRaises(ValueError, P('c:a/b').with_stem, 'd:/e')
1087 self.assertRaises(ValueError, P('c:a/b').with_stem, '//My/Share')
1090 P = self.cls
1091 self.assertEqual(P('c:a/b').with_suffix('.gz'), P('c:a/b.gz'))
1092 self.assertEqual(P('c:/a/b').with_suffix('.gz'), P('c:/a/b.gz'))
1093 self.assertEqual(P('c:a/b.py').with_suffix('.gz'), P('c:a/b.gz'))
1094 self.assertEqual(P('c:/a/b.py').with_suffix('.gz'), P('c:/a/b.gz'))
1096 self.assertRaises(ValueError, P('').with_suffix, '.gz')
1097 self.assertRaises(ValueError, P('.').with_suffix, '.gz')
1098 self.assertRaises(ValueError, P('/').with_suffix, '.gz')
1099 self.assertRaises(ValueError, P('//My/Share').with_suffix, '.gz')
1101 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'gz')
1102 self.assertRaises(ValueError, P('c:a/b').with_suffix, '/')
1103 self.assertRaises(ValueError, P('c:a/b').with_suffix, '\\')
1104 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'c:')
1105 self.assertRaises(ValueError, P('c:a/b').with_suffix, '/.gz')
1106 self.assertRaises(ValueError, P('c:a/b').with_suffix, '\\.gz')
1107 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'c:.gz')
1108 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'c/d')
1109 self.assertRaises(ValueError, P('c:a/b').with_suffix, 'c\\d')
1110 self.assertRaises(ValueError, P('c:a/b').with_suffix, '.c/d')
1111 self.assertRaises(ValueError, P('c:a/b').with_suffix, '.c\\d')
1114 P = self.cls
1115 p = P('C:Foo/Bar')
1116 self.assertEqual(p.relative_to(P('c:')), P('Foo/Bar'))
1117 self.assertEqual(p.relative_to('c:'), P('Foo/Bar'))
1118 self.assertEqual(p.relative_to(P('c:foO')), P('Bar'))
1119 self.assertEqual(p.relative_to('c:foO'), P('Bar'))
1120 self.assertEqual(p.relative_to('c:foO/'), P('Bar'))
1121 self.assertEqual(p.relative_to(P('c:foO/baR')), P())
1122 self.assertEqual(p.relative_to('c:foO/baR'), P())
1124 self.assertRaises(ValueError, p.relative_to, P())
1125 self.assertRaises(ValueError, p.relative_to, '')
1126 self.assertRaises(ValueError, p.relative_to, P('d:'))
1127 self.assertRaises(ValueError, p.relative_to, P('/'))
1128 self.assertRaises(ValueError, p.relative_to, P('Foo'))
1129 self.assertRaises(ValueError, p.relative_to, P('/Foo'))
1130 self.assertRaises(ValueError, p.relative_to, P('C:/Foo'))
1131 self.assertRaises(ValueError, p.relative_to, P('C:Foo/Bar/Baz'))
1132 self.assertRaises(ValueError, p.relative_to, P('C:Foo/Baz'))
1133 p = P('C:/Foo/Bar')
1134 self.assertEqual(p.relative_to(P('c:')), P('/Foo/Bar'))
1135 self.assertEqual(p.relative_to('c:'), P('/Foo/Bar'))
1136 self.assertEqual(str(p.relative_to(P('c:'))), '\\Foo\\Bar')
1137 self.assertEqual(str(p.relative_to('c:')), '\\Foo\\Bar')
1138 self.assertEqual(p.relative_to(P('c:/')), P('Foo/Bar'))
1139 self.assertEqual(p.relative_to('c:/'), P('Foo/Bar'))
1140 self.assertEqual(p.relative_to(P('c:/foO')), P('Bar'))
1141 self.assertEqual(p.relative_to('c:/foO'), P('Bar'))
1142 self.assertEqual(p.relative_to('c:/foO/'), P('Bar'))
1143 self.assertEqual(p.relative_to(P('c:/foO/baR')), P())
1144 self.assertEqual(p.relative_to('c:/foO/baR'), P())
1146 self.assertRaises(ValueError, p.relative_to, P('C:/Baz'))
1147 self.assertRaises(ValueError, p.relative_to, P('C:/Foo/Bar/Baz'))
1148 self.assertRaises(ValueError, p.relative_to, P('C:/Foo/Baz'))
1149 self.assertRaises(ValueError, p.relative_to, P('C:Foo'))
1150 self.assertRaises(ValueError, p.relative_to, P('d:'))
1151 self.assertRaises(ValueError, p.relative_to, P('d:/'))
1152 self.assertRaises(ValueError, p.relative_to, P('/'))
1153 self.assertRaises(ValueError, p.relative_to, P('/Foo'))
1154 self.assertRaises(ValueError, p.relative_to, P('//C/Foo'))
1156 p = P('//Server/Share/Foo/Bar')
1157 self.assertEqual(p.relative_to(P('//sErver/sHare')), P('Foo/Bar'))
1158 self.assertEqual(p.relative_to('//sErver/sHare'), P('Foo/Bar'))
1159 self.assertEqual(p.relative_to('//sErver/sHare/'), P('Foo/Bar'))
1160 self.assertEqual(p.relative_to(P('//sErver/sHare/Foo')), P('Bar'))
1161 self.assertEqual(p.relative_to('//sErver/sHare/Foo'), P('Bar'))
1162 self.assertEqual(p.relative_to('//sErver/sHare/Foo/'), P('Bar'))
1163 self.assertEqual(p.relative_to(P('//sErver/sHare/Foo/Bar')), P())
1164 self.assertEqual(p.relative_to('//sErver/sHare/Foo/Bar'), P())
1166 self.assertRaises(ValueError, p.relative_to, P('/Server/Share/Foo'))
1167 self.assertRaises(ValueError, p.relative_to, P('c:/Server/Share/Foo'))
1168 self.assertRaises(ValueError, p.relative_to, P('//z/Share/Foo'))
1169 self.assertRaises(ValueError, p.relative_to, P('//Server/z/Foo'))
1172 P = self.cls
1173 p = P('C:Foo/Bar')
1174 self.assertTrue(p.is_relative_to(P('c:')))
1175 self.assertTrue(p.is_relative_to('c:'))
1176 self.assertTrue(p.is_relative_to(P('c:foO')))
1177 self.assertTrue(p.is_relative_to('c:foO'))
1178 self.assertTrue(p.is_relative_to('c:foO/'))
1179 self.assertTrue(p.is_relative_to(P('c:foO/baR')))
1180 self.assertTrue(p.is_relative_to('c:foO/baR'))
1182 self.assertFalse(p.is_relative_to(P()))
1183 self.assertFalse(p.is_relative_to(''))
1184 self.assertFalse(p.is_relative_to(P('d:')))
1185 self.assertFalse(p.is_relative_to(P('/')))
1186 self.assertFalse(p.is_relative_to(P('Foo')))
1187 self.assertFalse(p.is_relative_to(P('/Foo')))
1188 self.assertFalse(p.is_relative_to(P('C:/Foo')))
1189 self.assertFalse(p.is_relative_to(P('C:Foo/Bar/Baz')))
1190 self.assertFalse(p.is_relative_to(P('C:Foo/Baz')))
1191 p = P('C:/Foo/Bar')
1192 self.assertTrue(p.is_relative_to('c:'))
1193 self.assertTrue(p.is_relative_to(P('c:/')))
1194 self.assertTrue(p.is_relative_to(P('c:/foO')))
1195 self.assertTrue(p.is_relative_to('c:/foO/'))
1196 self.assertTrue(p.is_relative_to(P('c:/foO/baR')))
1197 self.assertTrue(p.is_relative_to('c:/foO/baR'))
1199 self.assertFalse(p.is_relative_to(P('C:/Baz')))
1200 self.assertFalse(p.is_relative_to(P('C:/Foo/Bar/Baz')))
1201 self.assertFalse(p.is_relative_to(P('C:/Foo/Baz')))
1202 self.assertFalse(p.is_relative_to(P('C:Foo')))
1203 self.assertFalse(p.is_relative_to(P('d:')))
1204 self.assertFalse(p.is_relative_to(P('d:/')))
1205 self.assertFalse(p.is_relative_to(P('/')))
1206 self.assertFalse(p.is_relative_to(P('/Foo')))
1207 self.assertFalse(p.is_relative_to(P('//C/Foo')))
1209 p = P('//Server/Share/Foo/Bar')
1210 self.assertTrue(p.is_relative_to(P('//sErver/sHare')))
1211 self.assertTrue(p.is_relative_to('//sErver/sHare'))
1212 self.assertTrue(p.is_relative_to('//sErver/sHare/'))
1213 self.assertTrue(p.is_relative_to(P('//sErver/sHare/Foo')))
1214 self.assertTrue(p.is_relative_to('//sErver/sHare/Foo'))
1215 self.assertTrue(p.is_relative_to('//sErver/sHare/Foo/'))
1216 self.assertTrue(p.is_relative_to(P('//sErver/sHare/Foo/Bar')))
1217 self.assertTrue(p.is_relative_to('//sErver/sHare/Foo/Bar'))
1219 self.assertFalse(p.is_relative_to(P('/Server/Share/Foo')))
1220 self.assertFalse(p.is_relative_to(P('c:/Server/Share/Foo')))
1221 self.assertFalse(p.is_relative_to(P('//z/Share/Foo')))
1222 self.assertFalse(p.is_relative_to(P('//Server/z/Foo')))
1225 P = self.cls
1227 self.assertFalse(P().is_absolute())
1228 self.assertFalse(P('a').is_absolute())
1229 self.assertFalse(P('a/b/').is_absolute())
1230 self.assertFalse(P('/').is_absolute())
1231 self.assertFalse(P('/a').is_absolute())
1232 self.assertFalse(P('/a/b/').is_absolute())
1233 self.assertFalse(P('c:').is_absolute())
1234 self.assertFalse(P('c:a').is_absolute())
1235 self.assertFalse(P('c:a/b/').is_absolute())
1236 self.assertTrue(P('c:/').is_absolute())
1237 self.assertTrue(P('c:/a').is_absolute())
1238 self.assertTrue(P('c:/a/b/').is_absolute())
1240 self.assertTrue(P('//a/b').is_absolute())
1241 self.assertTrue(P('//a/b/').is_absolute())
1242 self.assertTrue(P('//a/b/c').is_absolute())
1243 self.assertTrue(P('//a/b/c/d').is_absolute())
1246 P = self.cls
1247 p = P('C:/a/b')
1248 pp = p.joinpath('x/y')
1249 self.assertEqual(pp, P('C:/a/b/x/y'))
1250 pp = p.joinpath('/x/y')
1251 self.assertEqual(pp, P('C:/x/y'))
1254 pp = p.joinpath('D:x/y')
1255 self.assertEqual(pp, P('D:x/y'))
1256 pp = p.joinpath('D:/x/y')
1257 self.assertEqual(pp, P('D:/x/y'))
1258 pp = p.joinpath('//host/share/x/y')
1259 self.assertEqual(pp, P('//host/share/x/y'))
1262 pp = p.joinpath('c:x/y')
1263 self.assertEqual(pp, P('C:/a/b/x/y'))
1264 pp = p.joinpath('c:/x/y')
1265 self.assertEqual(pp, P('C:/x/y'))
1269 P = self.cls
1270 p = P('C:/a/b')
1271 self.assertEqual(p / 'x/y', P('C:/a/b/x/y'))
1272 self.assertEqual(p / 'x' / 'y', P('C:/a/b/x/y'))
1273 self.assertEqual(p / '/x/y', P('C:/x/y'))
1274 self.assertEqual(p / '/x' / 'y', P('C:/x/y'))
1277 self.assertEqual(p / 'D:x/y', P('D:x/y'))
1278 self.assertEqual(p / 'D:' / 'x/y', P('D:x/y'))
1279 self.assertEqual(p / 'D:/x/y', P('D:/x/y'))
1280 self.assertEqual(p / 'D:' / '/x/y', P('D:/x/y'))
1281 self.assertEqual(p / '//host/share/x/y', P('//host/share/x/y'))
1284 self.assertEqual(p / 'c:x/y', P('C:/a/b/x/y'))
1285 self.assertEqual(p / 'c:/x/y', P('C:/x/y'))
1288 P = self.cls
1289 self.assertIs(False, P('').is_reserved())
1290 self.assertIs(False, P('/').is_reserved())
1291 self.assertIs(False, P('/foo/bar').is_reserved())
1293 self.assertIs(False, P('//my/share/nul/con/aux').is_reserved())
1295 self.assertIs(True, P('nul').is_reserved())
1296 self.assertIs(True, P('aux').is_reserved())
1297 self.assertIs(True, P('prn').is_reserved())
1298 self.assertIs(True, P('con').is_reserved())
1299 self.assertIs(True, P('conin$').is_reserved())
1300 self.assertIs(True, P('conout$').is_reserved())
1302 self.assertIs(True, P('COM1').is_reserved())
1303 self.assertIs(True, P('LPT9').is_reserved())
1304 self.assertIs(True, P('com\xb9').is_reserved())
1305 self.assertIs(True, P('com\xb2').is_reserved())
1306 self.assertIs(True, P('lpt\xb3').is_reserved())
1309 self.assertIs(True, P('NUL.txt').is_reserved())
1310 self.assertIs(True, P('PRN ').is_reserved())
1311 self.assertIs(True, P('AUX .txt').is_reserved())
1312 self.assertIs(True, P('COM1:bar').is_reserved())
1313 self.assertIs(True, P('LPT9 :bar').is_reserved())
1316 self.assertIs(False, P('bar.com9').is_reserved())
1317 self.assertIs(False, P('bar.lpt9').is_reserved())
1319 self.assertIs(True, P('c:/baz/con/NUL').is_reserved())
1320 self.assertIs(False, P('c:/NUL/con/baz').is_reserved())
1326 p = self.cls('a')
1327 self.assertIs(type(p),
1331 p = pathlib.PurePosixPath('a')
1333 self.assertNotEqual(p, q)
1336 p = pathlib.PurePosixPath('a')
1339 p < q
1341 p <= q
1343 p > q
1345 p >= q
1371 P = self.cls
1373 P('c:/').owner()
1376 P = self.cls
1378 P('c:/').group()
1458 def _test_cwd(self, p): argument
1460 self.assertEqual(p, q)
1461 self.assertEqualNormCase(str(p), str(q))
1462 self.assertIs(type(p), type(q))
1463 self.assertTrue(p.is_absolute())
1466 p = self.cls.cwd()
1467 self._test_cwd(p)
1470 P = self.cls
1476 self.assertEqual(str(P().absolute()), BASE)
1477 self.assertEqual(str(P('.').absolute()), BASE)
1478 self.assertEqual(str(P('a').absolute()), os.path.join(BASE, 'a'))
1479 self.assertEqual(str(P('a', 'b', 'c').absolute()), os.path.join(BASE, 'a', 'b', 'c'))
1482 … self.assertEqual(str(P('linkB', 'fileB').absolute()), os.path.join(BASE, 'linkB', 'fileB'))
1483 self.assertEqual(str(P('brokenLink').absolute()), os.path.join(BASE, 'brokenLink'))
1484 … self.assertEqual(str(P('brokenLinkLoop').absolute()), os.path.join(BASE, 'brokenLinkLoop'))
1487 self.assertEqual(str(P('..').absolute()), os.path.join(BASE, '..'))
1488 self.assertEqual(str(P('a', '..').absolute()), os.path.join(BASE, 'a', '..'))
1489 self.assertEqual(str(P('..', 'b').absolute()), os.path.join(BASE, '..', 'b'))
1491 def _test_home(self, p): argument
1493 self.assertEqual(p, q)
1494 self.assertEqualNormCase(str(p), str(q))
1495 self.assertIs(type(p), type(q))
1496 self.assertTrue(p.is_absolute())
1516 p = self.cls(fileA_path)
1519 self.assertTrue(p.samefile(fileA_path))
1520 self.assertTrue(p.samefile(pp))
1521 self.assertFalse(p.samefile(fileB_path))
1522 self.assertFalse(p.samefile(q))
1526 self.assertRaises(FileNotFoundError, p.samefile, r)
1527 self.assertRaises(FileNotFoundError, p.samefile, non_existent)
1528 self.assertRaises(FileNotFoundError, r.samefile, p)
1535 p = self.cls('')
1536 self.assertEqual(p.stat(), os.stat('.'))
1540 P = self.cls
1541 p = P('~')
1542 self.assertEqual(p.expanduser(), P(os.path.expanduser('~')))
1543 p = P('foo')
1544 self.assertEqual(p.expanduser(), p)
1545 p = P('/~')
1546 self.assertEqual(p.expanduser(), p)
1547 p = P('../~')
1548 self.assertEqual(p.expanduser(), p)
1549 p = P(P('').absolute().anchor) / '~'
1550 self.assertEqual(p.expanduser(), p)
1553 P = self.cls
1554 p = P(BASE)
1555 self.assertIs(True, p.exists())
1556 self.assertIs(True, (p / 'dirA').exists())
1557 self.assertIs(True, (p / 'fileA').exists())
1558 self.assertIs(False, (p / 'fileA' / 'bah').exists())
1560 self.assertIs(True, (p / 'linkA').exists())
1561 self.assertIs(True, (p / 'linkB').exists())
1562 self.assertIs(True, (p / 'linkB' / 'fileB').exists())
1563 self.assertIs(False, (p / 'linkA' / 'bah').exists())
1564 self.assertIs(False, (p / 'foo').exists())
1565 self.assertIs(False, P('/xyzzy').exists())
1566 self.assertIs(False, P(BASE + '\udfff').exists())
1567 self.assertIs(False, P(BASE + '\x00').exists())
1570 p = self.cls(BASE)
1571 with (p / 'fileA').open('r') as f:
1574 with (p / 'fileA').open('rb') as f:
1577 with (p / 'fileA').open('rb', buffering=0) as f:
1582 p = self.cls(BASE)
1583 (p / 'fileA').write_bytes(b'abcdefg')
1584 self.assertEqual((p / 'fileA').read_bytes(), b'abcdefg')
1586 self.assertRaises(TypeError, (p / 'fileA').write_bytes, 'somestr')
1587 self.assertEqual((p / 'fileA').read_bytes(), b'abcdefg')
1590 p = self.cls(BASE)
1591 (p / 'fileA').write_text('äbcdefg', encoding='latin-1')
1592 self.assertEqual((p / 'fileA').read_text(
1595 self.assertRaises(TypeError, (p / 'fileA').write_text, b'somebytes')
1596 self.assertEqual((p / 'fileA').read_text(encoding='latin-1'), 'äbcdefg')
1599 p = self.cls(BASE)
1601 (p / 'fileA').write_text('abcde\r\nfghlk\n\rmnopq', newline='\n')
1602 self.assertEqual((p / 'fileA').read_bytes(),
1605 (p / 'fileA').write_text('abcde\r\nfghlk\n\rmnopq', newline='\r')
1606 self.assertEqual((p / 'fileA').read_bytes(),
1609 (p / 'fileA').write_text('abcde\r\nfghlk\n\rmnopq', newline='\r\n')
1610 self.assertEqual((p / 'fileA').read_bytes(),
1614 (p / 'fileA').write_text('abcde\nfghlk\n\rmnopq')
1615 self.assertEqual((p / 'fileA').read_bytes(),
1619 P = self.cls
1620 p = P(BASE)
1621 it = p.iterdir()
1626 self.assertEqual(paths, { P(BASE, q) for q in expected })
1631 P = self.cls
1632 p = P(BASE, 'linkB')
1633 paths = set(p.iterdir())
1634 expected = { P(BASE, 'linkB', q) for q in ['fileB', 'linkD'] }
1639 p = self.cls(BASE, 'fileA')
1641 next(p.iterdir())
1649 self.assertEqual(set(glob), { P(BASE, q) for q in expected })
1650 P = self.cls
1651 p = P(BASE)
1652 it = p.glob("fileA")
1655 _check(p.glob("fileB"), [])
1656 _check(p.glob("dir*/file*"), ["dirB/fileB", "dirC/fileC"])
1658 _check(p.glob("*A"), ['dirA', 'fileA'])
1660 _check(p.glob("*A"), ['dirA', 'fileA', 'linkA'])
1662 _check(p.glob("*B/*"), ['dirB/fileB'])
1664 _check(p.glob("*B/*"), ['dirB/fileB', 'dirB/linkD',
1667 _check(p.glob("*/fileB"), ['dirB/fileB'])
1669 _check(p.glob("*/fileB"), ['dirB/fileB', 'linkB/fileB'])
1672 _check(p.glob("*/"), ["dirA", "dirB", "dirC", "dirE"])
1674 _check(p.glob("*/"), ["dirA", "dirB", "dirC", "dirE", "linkB"])
1678 self.assertEqual(set(glob), { P(BASE, q) for q in expected })
1679 P = self.cls
1680 p = P(BASE)
1681 it = p.rglob("fileA")
1684 _check(p.rglob("fileB"), ["dirB/fileB"])
1685 _check(p.rglob("*/fileA"), [])
1687 _check(p.rglob("*/fileB"), ["dirB/fileB"])
1689 _check(p.rglob("*/fileB"), ["dirB/fileB", "dirB/linkD/fileB",
1691 _check(p.rglob("file*"), ["fileA", "dirB/fileB",
1694 _check(p.rglob("*/"), [
1698 _check(p.rglob("*/"), [
1702 _check(p.rglob(""), ["", "dirA", "dirB", "dirC", "dirE", "dirC/dirD"])
1704 p = P(BASE, "dirC")
1705 _check(p.rglob("*"), ["dirC/fileC", "dirC/novel.txt",
1707 _check(p.rglob("file*"), ["dirC/fileC", "dirC/dirD/fileD"])
1708 _check(p.rglob("*/*"), ["dirC/dirD/fileD"])
1709 _check(p.rglob("*/"), ["dirC/dirD"])
1710 _check(p.rglob(""), ["dirC", "dirC/dirD"])
1712 _check(p.rglob("*.txt"), ["dirC/novel.txt"])
1713 _check(p.rglob("*.*"), ["dirC/novel.txt"])
1718 P = self.cls
1719 p = P(BASE)
1720 given = set(p.rglob('*'))
1732 self.assertEqual(given, {p / x for x in expect})
1736 P = self.cls
1737 base = P(BASE) / 'deep'
1738 p = P(base, *(['d']*depth))
1739 p.mkdir(parents=True)
1743 self.assertEqual(next(it), p)
1745 p = base
1747 p = p / 'd'
1749 self.assertEqual(next(it), p)
1753 P = self.cls
1754 p = P(BASE)
1755 self.assertEqual(set(p.glob("..")), { P(BASE, "..") })
1756 self.assertEqual(set(p.glob("dirA/../file*")), { P(BASE, "dirA/../fileA") })
1757 self.assertEqual(set(p.glob("../xyzzy")), set())
1762 P = self.cls
1763 base = P(BASE) / 'permissions'
1802 def _check_resolve(self, p, expected, strict=True): argument
1803 q = p.resolve(strict)
1811 P = self.cls
1812 p = P(BASE, 'foo')
1814 p.resolve(strict=True)
1817 self.assertEqualNormCase(str(p.resolve(strict=False)),
1819 p = P(BASE, 'foo', 'in', 'spam')
1820 self.assertEqualNormCase(str(p.resolve(strict=False)),
1822 p = P(BASE, '..', 'foo', 'in', 'spam')
1823 self.assertEqualNormCase(str(p.resolve(strict=False)),
1826 p = P(BASE, 'dirB', 'fileB')
1827 self._check_resolve_relative(p, p)
1828 p = P(BASE, 'linkA')
1829 self._check_resolve_relative(p, P(BASE, 'fileA'))
1830 p = P(BASE, 'dirA', 'linkC', 'fileB')
1831 self._check_resolve_relative(p, P(BASE, 'dirB', 'fileB'))
1832 p = P(BASE, 'dirB', 'linkD', 'fileB')
1833 self._check_resolve_relative(p, P(BASE, 'dirB', 'fileB'))
1835 p = P(BASE, 'dirA', 'linkC', 'fileB', 'foo', 'in', 'spam')
1836 self._check_resolve_relative(p, P(BASE, 'dirB', 'fileB', 'foo', 'in',
1838 p = P(BASE, 'dirA', 'linkC', '..', 'foo', 'in', 'spam')
1842 self._check_resolve_relative(p, P(BASE, 'dirA', 'foo', 'in',
1847 self._check_resolve_relative(p, P(BASE, 'foo', 'in', 'spam'), False)
1854 p = P(BASE, 'dirA', 'linkX', 'linkY', 'fileB')
1855 self._check_resolve_absolute(p, P(BASE, 'dirB', 'fileB'))
1857 p = P(BASE, 'dirA', 'linkX', 'linkY', 'foo', 'in', 'spam')
1858 self._check_resolve_relative(p, P(BASE, 'dirB', 'foo', 'in', 'spam'),
1860 p = P(BASE, 'dirA', 'linkX', 'linkY', '..', 'foo', 'in', 'spam')
1864 self._check_resolve_relative(p, P(d, 'foo', 'in', 'spam'), False)
1868 self._check_resolve_relative(p, P(BASE, 'foo', 'in', 'spam'), False)
1873 p = self.cls(BASE)
1877 q = p / '2'
1878 self.assertEqual(q.resolve(strict=True), p)
1882 self.assertEqual(r.resolve(strict=False), p / '3' / '4')
1885 p = self.cls('non', 'exist')
1890 self.assertEqual(p.resolve(), self.cls(BASE, p))
1895 p = self.cls(BASE)
1896 it = p.iterdir()
1897 it2 = p.iterdir()
1901 with p:
1907 p.exists()
1908 p.resolve()
1909 p.absolute()
1911 with p:
1916 p = self.cls(BASE) / 'fileA'
1917 mode = p.stat().st_mode
1920 p.chmod(new_mode)
1921 self.assertEqual(p.stat().st_mode, new_mode)
1924 p.chmod(new_mode)
1925 self.assertEqual(p.stat().st_mode, new_mode)
1931 p = self.cls(BASE) / 'linkA'
1932 q = p.resolve()
1936 p.chmod(new_mode, follow_symlinks=True)
1940 p.chmod(new_mode, follow_symlinks=True)
1947 p = self.cls(BASE) / 'fileA'
1948 st = p.stat()
1949 self.assertEqual(p.stat(), st)
1951 p.chmod(st.st_mode ^ 0o222)
1952 self.addCleanup(p.chmod, st.st_mode)
1953 self.assertNotEqual(p.stat(), st)
1957 p = self.cls(BASE) / 'linkA'
1958 st = p.stat()
1959 self.assertNotEqual(st, p.stat(follow_symlinks=False))
1962 p = self.cls(BASE) / 'fileA'
1963 st = p.stat()
1964 self.assertEqual(st, p.stat(follow_symlinks=False))
1968 p = self.cls(BASE)/ 'linkA'
1969 st = p.stat()
1970 self.assertNotEqual(st, p.lstat())
1973 p = self.cls(BASE) / 'fileA'
1974 st = p.stat()
1975 self.assertEqual(st, p.lstat())
1979 p = self.cls(BASE) / 'fileA'
1980 uid = p.stat().st_uid
1986 self.assertEqual(name, p.owner())
1990 p = self.cls(BASE) / 'fileA'
1991 gid = p.stat().st_gid
1997 self.assertEqual(name, p.group())
2000 p = self.cls(BASE) / 'fileA'
2001 p.unlink()
2002 self.assertFileNotFound(p.stat)
2003 self.assertFileNotFound(p.unlink)
2006 p = self.cls(BASE) / 'fileAAA'
2007 self.assertFileNotFound(p.unlink)
2008 p.unlink(missing_ok=True)
2011 p = self.cls(BASE) / 'dirA'
2012 for q in p.iterdir():
2014 p.rmdir()
2015 self.assertFileNotFound(p.stat)
2016 self.assertFileNotFound(p.unlink)
2020 P = self.cls(BASE)
2021 p = P / 'fileA'
2022 size = p.stat().st_size
2024 q = P / 'dirA' / 'fileAA'
2027 p.link_to(q)
2031 self.assertEqual(os.path.samefile(p, q), True)
2032 self.assertTrue(p.stat)
2042 P = self.cls(BASE)
2043 target = P / 'fileA'
2046 link = P / 'dirA' / 'fileAA'
2052 link2 = P / 'dirA' / 'fileAAA'
2060 P = self.cls(BASE)
2061 p = P / 'fileA'
2063 q = P / 'dirA' / 'fileAA'
2065 p.link_to(q)
2068 P = self.cls(BASE)
2069 p = P / 'fileA'
2070 size = p.stat().st_size
2072 q = P / 'dirA' / 'fileAA'
2073 renamed_p = p.rename(q)
2076 self.assertFileNotFound(p.stat)
2085 P = self.cls(BASE)
2086 p = P / 'fileA'
2087 size = p.stat().st_size
2089 q = P / 'dirA' / 'fileAA'
2090 replaced_p = p.replace(q)
2093 self.assertFileNotFound(p.stat)
2103 P = self.cls(BASE)
2104 self.assertEqual((P / 'linkA').readlink(), self.cls('fileA'))
2105 self.assertEqual((P / 'brokenLink').readlink(),
2107 self.assertEqual((P / 'linkB').readlink(), self.cls('dirB'))
2109 (P / 'fileA').readlink()
2112 P = self.cls(BASE)
2113 p = P / 'newfileA'
2114 self.assertFalse(p.exists())
2115 p.touch()
2116 self.assertTrue(p.exists())
2117 st = p.stat()
2122 os.utime(str(p), (old_mtime - 10, old_mtime - 10))
2124 p.touch()
2125 st = p.stat()
2129 p = P / 'newfileB'
2130 self.assertFalse(p.exists())
2131 p.touch(mode=0o700, exist_ok=False)
2132 self.assertTrue(p.exists())
2133 self.assertRaises(OSError, p.touch, exist_ok=False)
2136 P = self.cls(BASE)
2137 p = P / 'fileA'
2138 p.touch()
2139 with p.open('rb') as f:
2143 P = self.cls(BASE)
2144 p = P / 'newdirA'
2145 self.assertFalse(p.exists())
2146 p.mkdir()
2147 self.assertTrue(p.exists())
2148 self.assertTrue(p.is_dir())
2150 p.mkdir()
2155 p = self.cls(BASE, 'newdirB', 'newdirC')
2156 self.assertFalse(p.exists())
2158 p.mkdir()
2160 p.mkdir(parents=True)
2161 self.assertTrue(p.exists())
2162 self.assertTrue(p.is_dir())
2164 p.mkdir(parents=True)
2167 mode = stat.S_IMODE(p.stat().st_mode) # Default mode.
2168 p = self.cls(BASE, 'newdirD', 'newdirE')
2169 p.mkdir(0o555, parents=True)
2170 self.assertTrue(p.exists())
2171 self.assertTrue(p.is_dir())
2174 self.assertEqual(stat.S_IMODE(p.stat().st_mode), 0o7555 & mode)
2176 self.assertEqual(stat.S_IMODE(p.parent.stat().st_mode), mode)
2179 p = self.cls(BASE, 'dirB')
2180 st_ctime_first = p.stat().st_ctime
2181 self.assertTrue(p.exists())
2182 self.assertTrue(p.is_dir())
2184 p.mkdir()
2186 p.mkdir(exist_ok=True)
2187 self.assertTrue(p.exists())
2188 self.assertEqual(p.stat().st_ctime, st_ctime_first)
2191 p = self.cls(BASE, 'dirC')
2192 self.assertTrue(p.exists())
2194 p.mkdir()
2196 p = p / 'newdirC'
2197 p.mkdir(parents=True)
2198 st_ctime_first = p.stat().st_ctime
2199 self.assertTrue(p.exists())
2201 p.mkdir(parents=True)
2203 p.mkdir(parents=True, exist_ok=True)
2204 self.assertTrue(p.exists())
2205 self.assertEqual(p.stat().st_ctime, st_ctime_first)
2216 p = self.cls(d + ':\\')
2217 if not p.is_dir():
2222 (p / 'child' / 'path').mkdir(parents=True)
2225 p = self.cls(BASE, 'dirB', 'fileB')
2226 self.assertTrue(p.exists())
2230 p.mkdir(parents=True)
2233 p.mkdir(parents=True, exist_ok=True)
2237 p = self.cls(BASE, 'fileA')
2238 self.assertTrue(p.exists())
2242 p.mkdir()
2245 p.mkdir(exist_ok=True)
2250 p = self.cls(BASE, 'dirCPC%d' % pattern_num)
2251 self.assertFalse(p.exists())
2268 p12 = p / 'dir1' / 'dir2'
2276 self.assertTrue(p.exists())
2280 P = self.cls(BASE)
2281 target = P / 'fileA'
2283 link = P / 'dirA' / 'linkAA'
2288 link = P / 'dirA' / 'linkAAA'
2294 target = P / 'dirB'
2295 link = P / 'dirA' / 'linkAAAA'
2303 P = self.cls(BASE)
2304 self.assertTrue((P / 'dirA').is_dir())
2305 self.assertFalse((P / 'fileA').is_dir())
2306 self.assertFalse((P / 'non-existing').is_dir())
2307 self.assertFalse((P / 'fileA' / 'bah').is_dir())
2309 self.assertFalse((P / 'linkA').is_dir())
2310 self.assertTrue((P / 'linkB').is_dir())
2311 self.assertFalse((P/ 'brokenLink').is_dir(), False)
2312 self.assertIs((P / 'dirA\udfff').is_dir(), False)
2313 self.assertIs((P / 'dirA\x00').is_dir(), False)
2316 P = self.cls(BASE)
2317 self.assertTrue((P / 'fileA').is_file())
2318 self.assertFalse((P / 'dirA').is_file())
2319 self.assertFalse((P / 'non-existing').is_file())
2320 self.assertFalse((P / 'fileA' / 'bah').is_file())
2322 self.assertTrue((P / 'linkA').is_file())
2323 self.assertFalse((P / 'linkB').is_file())
2324 self.assertFalse((P/ 'brokenLink').is_file())
2325 self.assertIs((P / 'fileA\udfff').is_file(), False)
2326 self.assertIs((P / 'fileA\x00').is_file(), False)
2330 P = self.cls(BASE)
2332 self.assertFalse((P / 'fileA').is_mount())
2333 self.assertFalse((P / 'dirA').is_mount())
2334 self.assertFalse((P / 'non-existing').is_mount())
2335 self.assertFalse((P / 'fileA' / 'bah').is_mount())
2338 self.assertFalse((P / 'linkA').is_mount())
2343 P = self.cls(BASE)
2344 self.assertFalse((P / 'fileA').is_symlink())
2345 self.assertFalse((P / 'dirA').is_symlink())
2346 self.assertFalse((P / 'non-existing').is_symlink())
2347 self.assertFalse((P / 'fileA' / 'bah').is_symlink())
2349 self.assertTrue((P / 'linkA').is_symlink())
2350 self.assertTrue((P / 'linkB').is_symlink())
2351 self.assertTrue((P/ 'brokenLink').is_symlink())
2352 self.assertIs((P / 'fileA\udfff').is_file(), False)
2353 self.assertIs((P / 'fileA\x00').is_file(), False)
2355 self.assertIs((P / 'linkA\udfff').is_file(), False)
2356 self.assertIs((P / 'linkA\x00').is_file(), False)
2359 P = self.cls(BASE)
2360 self.assertFalse((P / 'fileA').is_fifo())
2361 self.assertFalse((P / 'dirA').is_fifo())
2362 self.assertFalse((P / 'non-existing').is_fifo())
2363 self.assertFalse((P / 'fileA' / 'bah').is_fifo())
2364 self.assertIs((P / 'fileA\udfff').is_fifo(), False)
2365 self.assertIs((P / 'fileA\x00').is_fifo(), False)
2371 P = self.cls(BASE, 'myfifo')
2373 os.mkfifo(str(P))
2376 self.assertTrue(P.is_fifo())
2377 self.assertFalse(P.is_socket())
2378 self.assertFalse(P.is_file())
2383 P = self.cls(BASE)
2384 self.assertFalse((P / 'fileA').is_socket())
2385 self.assertFalse((P / 'dirA').is_socket())
2386 self.assertFalse((P / 'non-existing').is_socket())
2387 self.assertFalse((P / 'fileA' / 'bah').is_socket())
2388 self.assertIs((P / 'fileA\udfff').is_socket(), False)
2389 self.assertIs((P / 'fileA\x00').is_socket(), False)
2399 P = self.cls(BASE, 'mysock')
2403 sock.bind(str(P))
2408 self.assertTrue(P.is_socket())
2409 self.assertFalse(P.is_fifo())
2410 self.assertFalse(P.is_file())
2415 P = self.cls(BASE)
2416 self.assertFalse((P / 'fileA').is_block_device())
2417 self.assertFalse((P / 'dirA').is_block_device())
2418 self.assertFalse((P / 'non-existing').is_block_device())
2419 self.assertFalse((P / 'fileA' / 'bah').is_block_device())
2420 self.assertIs((P / 'fileA\udfff').is_block_device(), False)
2421 self.assertIs((P / 'fileA\x00').is_block_device(), False)
2424 P = self.cls(BASE)
2425 self.assertFalse((P / 'fileA').is_char_device())
2426 self.assertFalse((P / 'dirA').is_char_device())
2427 self.assertFalse((P / 'non-existing').is_char_device())
2428 self.assertFalse((P / 'fileA' / 'bah').is_char_device())
2429 self.assertIs((P / 'fileA\udfff').is_char_device(), False)
2430 self.assertIs((P / 'fileA\x00').is_char_device(), False)
2434 P = self.cls('/dev/null')
2435 if not P.exists():
2437 self.assertTrue(P.is_char_device())
2438 self.assertFalse(P.is_block_device())
2439 self.assertFalse(P.is_file())
2444 p = self.cls(BASE, 'fileA')
2446 dumped = pickle.dumps(p, proto)
2448 self.assertEqual(pp.stat(), p.stat())
2451 P = self.cls
2452 p = P('/usr/bin/foo')
2453 q = P('/usr/local/bin')
2455 self.assertIs(p.parts[1], q.parts[1])
2457 self.assertIs(p.parts[2], q.parts[3])
2461 P = self.cls(BASE)
2468 p = (P / 'link0').resolve()
2469 self.assertEqual(p, P)
2470 self.assertEqualNormCase(str(p), BASE)
2471 p = (P / 'link1').resolve()
2472 self.assertEqual(p, P)
2473 self.assertEqualNormCase(str(p), BASE)
2474 p = (P / 'link2').resolve()
2475 self.assertEqual(p, P)
2476 self.assertEqualNormCase(str(p), BASE)
2477 p = (P / 'link3').resolve()
2478 self.assertEqual(p, P)
2479 self.assertEqualNormCase(str(p), BASE)
2485 p = self.cls('link0').resolve()
2486 self.assertEqual(p, P)
2487 self.assertEqualNormCase(str(p), BASE)
2488 p = self.cls('link1').resolve()
2489 self.assertEqual(p, P)
2490 self.assertEqualNormCase(str(p), BASE)
2491 p = self.cls('link2').resolve()
2492 self.assertEqual(p, P)
2493 self.assertEqualNormCase(str(p), BASE)
2494 p = self.cls('link3').resolve()
2495 self.assertEqual(p, P)
2496 self.assertEqualNormCase(str(p), BASE)
2517 p = self.cls('a')
2518 self.assertIs(type(p),
2528 p = self.cls()
2530 list(p.glob(''))
2538 P = self.cls
2539 self.assertEqual(str(P('/').absolute()), '/')
2540 self.assertEqual(str(P('/a').absolute()), '/a')
2541 self.assertEqual(str(P('/a/b').absolute()), '/a/b')
2544 self.assertEqual(str(P('//').absolute()), '//')
2545 self.assertEqual(str(P('//a').absolute()), '//a')
2546 self.assertEqual(str(P('//a/b').absolute()), '//a/b')
2560 p = self.cls(BASE)
2561 with (p / 'new_file').open('wb'):
2566 with (p / 'other_new_file').open('wb'):
2575 p = self.cls('spam')
2576 self.assertEqual(str(p.resolve()), '/spam')
2587 p = self.cls(BASE)
2588 (p / 'new_file').touch()
2592 (p / 'other_new_file').touch()
2595 (p / 'masked_new_file').touch(mode=0o750)
2621 P = self.cls
2622 p = P(BASE)
2623 given = set(p.glob("FILEa"))
2626 self.assertEqual(set(p.glob("FILEa*")), set())
2629 P = self.cls
2630 p = P(BASE, "dirC")
2631 given = set(p.rglob("FILEd"))
2634 self.assertEqual(set(p.rglob("FILEd*")), set())
2641 P = self.cls
2665 p1 = P('~/Documents')
2666 p2 = P(f'~{username}/Documents')
2667 p3 = P(f'~{othername}/Documents')
2668 p4 = P(f'../~{username}/Documents')
2669 p5 = P(f'/~{username}/Documents')
2670 p6 = P('')
2671 p7 = P(f'~{fakename}/Documents')
2676 self.assertEqual(p1.expanduser(), P(userhome) / 'Documents')
2677 self.assertEqual(p2.expanduser(), P(userhome) / 'Documents')
2678 self.assertEqual(p3.expanduser(), P(otherhome) / 'Documents')
2685 self.assertEqual(p1.expanduser(), P('/tmp/Documents'))
2686 self.assertEqual(p2.expanduser(), P(userhome) / 'Documents')
2687 self.assertEqual(p3.expanduser(), P(otherhome) / 'Documents')
2722 P = self.cls
2725 self.assertEqual(str(P('c:\\').absolute()), 'c:\\')
2726 self.assertEqual(str(P('c:\\a').absolute()), 'c:\\a')
2727 self.assertEqual(str(P('c:\\a\\b').absolute()), 'c:\\a\\b')
2731 self.assertEqual(str(P(share).absolute()), share)
2732 self.assertEqual(str(P(share + 'a').absolute()), share + 'a')
2733 self.assertEqual(str(P(share + 'a\\b').absolute()), share + 'a\\b')
2739 self.assertEqual(str(P().absolute()), share)
2740 self.assertEqual(str(P('.').absolute()), share)
2741 self.assertEqual(str(P('a').absolute()), os.path.join(share, 'a'))
2742 self.assertEqual(str(P('a', 'b', 'c').absolute()),
2747 P = self.cls
2748 p = P(BASE)
2749 self.assertEqual(set(p.glob("FILEa")), { P(BASE, "fileA") })
2750 self.assertEqual(set(p.glob("*a\\")), { P(BASE, "dirA") })
2751 self.assertEqual(set(p.glob("F*a")), { P(BASE, "fileA") })
2752 self.assertEqual(set(map(str, p.glob("FILEa"))), {f"{p}\\FILEa"})
2753 self.assertEqual(set(map(str, p.glob("F*a"))), {f"{p}\\fileA"})
2756 P = self.cls
2757 p = P(BASE, "dirC")
2758 self.assertEqual(set(p.rglob("FILEd")), { P(BASE, "dirC/dirD/fileD") })
2759 self.assertEqual(set(p.rglob("*\\")), { P(BASE, "dirC/dirD") })
2760 self.assertEqual(set(map(str, p.rglob("FILEd"))), {f"{p}\\dirD\\FILEd"})
2763 P = self.cls
2772 p1 = P('~/My Documents')
2773 p2 = P('~alice/My Documents')
2774 p3 = P('~bob/My Documents')
2775 p4 = P('/~/My Documents')
2776 p5 = P('d:~/My Documents')
2777 p6 = P('')
2788 P('C:/Users/alice/My Documents'))
2792 P('C:/Users/alice/My Documents'))
2794 P('C:/Users/bob/My Documents'))