~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/bzrdir_implementations/test_bzrdir.py

  • Committer: Andrew Bennetts
  • Date: 2006-08-18 10:58:33 UTC
  • mfrom: (1910.6.1 test-tweaks)
  • mto: This revision was merged to the branch mainline in revision 1946.
  • Revision ID: andrew.bennetts@canonical.com-20060818105833-da59983a1a593aa9
Merge from bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
127
127
            raise TestSkipped("cannot make working tree with transport %r"
128
128
                              % a_bzrdir.transport)
129
129
 
 
130
    def sproutOrSkip(self, from_bzrdir, to_url, revision_id=None, basis=None,
 
131
                     force_new_repo=False):
 
132
        """Sprout from_bzrdir into to_url, or raise TestSkipped.
 
133
        
 
134
        A simple wrapper for from_bzrdir.sprout that translates NotLocalUrl into
 
135
        TestSkipped.  Returns the newly sprouted bzrdir.
 
136
        """
 
137
        try:
 
138
            target = from_bzrdir.sprout(to_url, revision_id=revision_id,
 
139
                                        basis=basis,
 
140
                                        force_new_repo=force_new_repo)
 
141
        except errors.NotLocalUrl:
 
142
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
143
        return target
 
144
 
130
145
    def test_clone_bzrdir_empty(self):
131
146
        dir = self.make_bzrdir('source')
132
147
        target = dir.clone(self.get_url('target'))
450
465
 
451
466
    def test_sprout_bzrdir_empty(self):
452
467
        dir = self.make_bzrdir('source')
453
 
        try:
454
 
            target = dir.sprout(self.get_url('target'))
455
 
        except errors.NotLocalUrl:
456
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
468
        target = self.sproutOrSkip(dir, self.get_url('target'))
457
469
        self.assertNotEqual(dir.transport.base, target.transport.base)
458
470
        # creates a new repository branch and tree
459
471
        target.open_repository()
467
479
            self.make_repository('target', shared=True)
468
480
        except errors.IncompatibleFormat:
469
481
            return
470
 
        try:
471
 
            target = dir.sprout(self.get_url('target/child'))
472
 
        except errors.NotLocalUrl:
473
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
482
        target = self.sproutOrSkip(dir, self.get_url('target/child'))
474
483
        self.assertRaises(errors.NoRepositoryPresent, target.open_repository)
475
484
        target.open_branch()
476
485
        target.open_workingtree()
483
492
            self.make_repository('target', shared=True)
484
493
        except errors.IncompatibleFormat:
485
494
            return
486
 
        try:
487
 
            target = dir.sprout(self.get_url('target/child'),
488
 
                                force_new_repo=True)
489
 
        except errors.NotLocalUrl:
490
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
495
        target = self.sproutOrSkip(dir, self.get_url('target/child'),
 
496
                                   force_new_repo=True)
491
497
        target.open_repository()
492
498
        target.open_branch()
493
499
        target.open_workingtree()
501
507
        repo = dir.create_repository()
502
508
        repo.fetch(tree.branch.repository)
503
509
        self.assertTrue(repo.has_revision('1'))
504
 
        try:
505
 
            target = dir.sprout(self.get_url('target'))
506
 
        except errors.NotLocalUrl:
507
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
510
        target = self.sproutOrSkip(dir, self.get_url('target'))
508
511
        self.assertNotEqual(dir.transport.base, target.transport.base)
509
512
        self.assertDirectoriesEqual(dir.root_transport, target.root_transport,
510
513
                                    ['./.bzr/repository/inventory.knit',
525
528
            shared_repo = self.make_repository('target', shared=True)
526
529
        except errors.IncompatibleFormat:
527
530
            return
528
 
        try:
529
 
            target = dir.sprout(self.get_url('target/child'))
530
 
        except errors.NotLocalUrl:
531
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
531
        target = self.sproutOrSkip(dir, self.get_url('target/child'))
532
532
        self.assertNotEqual(dir.transport.base, target.transport.base)
533
533
        self.assertTrue(shared_repo.has_revision('1'))
534
534
 
547
547
        tree.bzrdir.open_repository().copy_content_into(shared_repo)
548
548
        dir = self.make_bzrdir('shared/source')
549
549
        dir.create_branch()
550
 
        try:
551
 
            target = dir.sprout(self.get_url('shared/target'))
552
 
        except errors.NotLocalUrl:
553
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
550
        target = self.sproutOrSkip(dir, self.get_url('shared/target'))
554
551
        self.assertNotEqual(dir.transport.base, target.transport.base)
555
552
        self.assertNotEqual(dir.transport.base, shared_repo.bzrdir.transport.base)
556
553
        self.assertTrue(shared_repo.has_revision('1'))
573
570
        self.assertTrue(shared_repo.has_revision('1'))
574
571
        dir = self.make_bzrdir('shared/source')
575
572
        dir.create_branch()
576
 
        try:
577
 
            target = dir.sprout(self.get_url('target'))
578
 
        except errors.NotLocalUrl:
579
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
573
        target = self.sproutOrSkip(dir, self.get_url('target'))
580
574
        self.assertNotEqual(dir.transport.base, target.transport.base)
581
575
        self.assertNotEqual(dir.transport.base, shared_repo.bzrdir.transport.base)
582
576
        branch = target.open_branch()
599
593
            shared_repo = self.make_repository('target', shared=True)
600
594
        except errors.IncompatibleFormat:
601
595
            return
602
 
        try:
603
 
            target = dir.sprout(self.get_url('target/child'),
604
 
                                force_new_repo=True)
605
 
        except errors.NotLocalUrl:
606
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
596
        target = self.sproutOrSkip(dir, self.get_url('target/child'),
 
597
                                   force_new_repo=True)
607
598
        self.assertNotEqual(dir.transport.base, target.transport.base)
608
599
        self.assertFalse(shared_repo.has_revision('1'))
609
600
 
622
613
        source = self.make_repository('source')
623
614
        tree.bzrdir.open_repository().copy_content_into(source)
624
615
        dir = source.bzrdir
625
 
        try:
626
 
            target = dir.sprout(self.get_url('target'), revision_id='2')
627
 
        except errors.NotLocalUrl:
628
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
616
        target = self.sproutOrSkip(dir, self.get_url('target'), revision_id='2')
629
617
        raise TestSkipped('revision limiting not strict yet')
630
618
 
631
619
    def test_sprout_bzrdir_branch_and_repo(self):
637
625
        tree.bzrdir.open_repository().copy_content_into(source.repository)
638
626
        tree.bzrdir.open_branch().copy_content_into(source)
639
627
        dir = source.bzrdir
640
 
        try:
641
 
            target = dir.sprout(self.get_url('target'))
642
 
        except errors.NotLocalUrl:
643
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
628
        target = self.sproutOrSkip(dir, self.get_url('target'))
644
629
        self.assertNotEqual(dir.transport.base, target.transport.base)
645
630
        self.assertDirectoriesEqual(dir.root_transport, target.root_transport,
646
631
                                    ['./.bzr/stat-cache',
665
650
            shared_repo = self.make_repository('target', shared=True)
666
651
        except errors.IncompatibleFormat:
667
652
            return
668
 
        try:
669
 
            target = dir.sprout(self.get_url('target/child'))
670
 
        except errors.NotLocalUrl:
671
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
653
        target = self.sproutOrSkip(dir, self.get_url('target/child'))
672
654
        self.assertTrue(shared_repo.has_revision('1'))
673
655
 
674
656
    def test_sprout_bzrdir_branch_and_repo_shared_force_new_repo(self):
686
668
            shared_repo = self.make_repository('target', shared=True)
687
669
        except errors.IncompatibleFormat:
688
670
            return
689
 
        try:
690
 
            target = dir.sprout(self.get_url('target/child'),
691
 
                                force_new_repo=True)
692
 
        except errors.NotLocalUrl:
693
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
671
        target = self.sproutOrSkip(dir, self.get_url('target/child'),
 
672
                                   force_new_repo=True)
694
673
        self.assertNotEqual(dir.transport.base, target.transport.base)
695
674
        self.assertFalse(shared_repo.has_revision('1'))
696
675
 
705
684
            # this is ok too, not all formats have to support references.
706
685
            return
707
686
        self.assertRaises(errors.NoRepositoryPresent, dir.open_repository)
708
 
        try:
709
 
            target = dir.sprout(self.get_url('target'))
710
 
        except errors.NotLocalUrl:
711
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
687
        target = self.sproutOrSkip(dir, self.get_url('target'))
712
688
        self.assertNotEqual(dir.transport.base, target.transport.base)
713
689
        # we want target to have a branch that is in-place.
714
690
        self.assertEqual(target, target.open_branch().bzrdir)
732
708
            shared_repo = self.make_repository('target', shared=True)
733
709
        except errors.IncompatibleFormat:
734
710
            return
735
 
        try:
736
 
            target = dir.sprout(self.get_url('target/child'))
737
 
        except errors.NotLocalUrl:
738
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
711
        target = self.sproutOrSkip(dir, self.get_url('target/child'))
739
712
        self.assertNotEqual(dir.transport.base, target.transport.base)
740
713
        # we want target to have a branch that is in-place.
741
714
        self.assertEqual(target, target.open_branch().bzrdir)
761
734
            shared_repo = self.make_repository('target', shared=True)
762
735
        except errors.IncompatibleFormat:
763
736
            return
764
 
        try:
765
 
            target = dir.sprout(self.get_url('target/child'),
766
 
                                force_new_repo=True)
767
 
        except errors.NotLocalUrl:
768
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
737
        target = self.sproutOrSkip(dir, self.get_url('target/child'),
 
738
                                   force_new_repo=True)
769
739
        self.assertNotEqual(dir.transport.base, target.transport.base)
770
740
        # we want target to have a branch that is in-place.
771
741
        self.assertEqual(target, target.open_branch().bzrdir)
788
758
        tree.bzrdir.open_repository().copy_content_into(source.repository)
789
759
        tree.bzrdir.open_branch().copy_content_into(source)
790
760
        dir = source.bzrdir
791
 
        try:
792
 
            target_url = self.get_url('target')
793
 
            target = dir.sprout(target_url, revision_id='1')
794
 
        except errors.NotLocalUrl:
795
 
            raise TestSkipped("sprout cannot make working tree at %r"
796
 
                              % target_url)
 
761
        target = self.sproutOrSkip(dir, self.get_url('target'), revision_id='1')
797
762
        self.assertEqual('1', target.open_branch().last_revision())
798
763
        
799
764
    def test_sprout_bzrdir_tree_branch_repo(self):
802
767
        tree.add('foo')
803
768
        tree.commit('revision 1')
804
769
        dir = tree.bzrdir
805
 
        try:
806
 
            target_url = self.get_url('target')
807
 
            target = dir.sprout(target_url)
808
 
        except errors.NotLocalUrl:
809
 
            raise TestSkipped("sprout cannot make working tree at %r"
810
 
                              % target_url)
 
770
        target = self.sproutOrSkip(dir, self.get_url('target'))
811
771
        self.assertNotEqual(dir.transport.base, target.transport.base)
812
772
        self.assertDirectoriesEqual(dir.root_transport, target.root_transport,
813
773
                                    ['./.bzr/stat-cache',
832
792
        tree = self.createWorkingTreeOrSkip(dir)
833
793
        tree.bzrdir.root_transport.mkdir('subdir')
834
794
        tree.add('subdir')
835
 
        try:
836
 
            target_url = self.get_url('target')
837
 
            target = dir.sprout(target_url)
838
 
        except (errors.NotLocalUrl, errors.NoWorkingTree):
839
 
            raise TestSkipped("sprout cannot make working tree at %r"
840
 
                              % target_url)
 
795
        target = self.sproutOrSkip(dir, self.get_url('target'))
841
796
        self.assertNotEqual(dir.transport.base, target.transport.base)
842
797
        # we want target to have a branch that is in-place.
843
798
        self.assertEqual(target, target.open_branch().bzrdir)
889
844
        tree.commit('revision 1', rev_id='1')
890
845
        tree.commit('revision 2', rev_id='2', allow_pointless=True)
891
846
        dir = tree.bzrdir
892
 
        try:
893
 
            target_url = self.get_url('target')
894
 
            target = dir.sprout(target_url, revision_id='1')
895
 
        except errors.NotLocalUrl:
896
 
            raise TestSkipped("sprout cannot make working tree at %r"
897
 
                              % target_url)
 
847
        target = self.sproutOrSkip(dir, self.get_url('target'), revision_id='1')
898
848
        self.assertEqual('1', target.open_workingtree().last_revision())
899
849
 
900
850
    def test_sprout_bzrdir_incomplete_source_with_basis(self):
911
861
        tree.copy_content_into(source)
912
862
        self.assertFalse(source.branch.repository.has_revision('2'))
913
863
        dir = source.bzrdir
914
 
        try:
915
 
            target = dir.sprout(self.get_url('target'), basis=tree.bzrdir)
916
 
        except errors.NotLocalUrl:
917
 
            raise TestSkipped('Cannot sprout to remote bzrdirs.')
 
864
        target = self.sproutOrSkip(dir, self.get_url('target'),
 
865
                                   basis=tree.bzrdir)
918
866
        self.assertEqual('2', target.open_branch().last_revision())
919
867
        self.assertEqual('2', target.open_workingtree().last_revision())
920
868
        self.assertTrue(target.open_branch().repository.has_revision('2'))