/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_transform.py

(broken) merge aaron's workingtree format changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
                              find_interesting, build_tree, get_backup_name)
40
40
 
41
41
 
42
 
class TestTreeTransform(TestCaseInTempDir):
 
42
class TestTreeTransform(tests.TestCaseWithTransport):
43
43
 
44
44
    def setUp(self):
45
45
        super(TestTreeTransform, self).setUp()
46
 
        self.wt = BzrDir.create_standalone_workingtree('.')
 
46
        self.wt = self.make_branch_and_tree('.', format='experimental-knit3')
47
47
        os.chdir('..')
48
48
 
49
49
    def get_transform(self):
130
130
                         self.wt.get_file_byname('oz/dorothy/toto').read())
131
131
        self.assertIs(self.wt.is_executable('toto-id'), False)
132
132
 
 
133
    def test_tree_reference(self):
 
134
        transform, root = self.get_transform()
 
135
        tree = transform._tree
 
136
        trans_id = transform.new_directory('reference', root, 'subtree-id')
 
137
        transform.set_tree_reference('subtree-revision', trans_id)
 
138
        transform.apply()
 
139
        self.assertEqual('subtree-revision', 
 
140
                         tree.inventory['subtree-id'].reference_revision)
 
141
 
133
142
    def test_conflicts(self):
134
143
        transform, root = self.get_transform()
135
144
        trans_id = transform.new_file('name', root, 'contents', 
588
597
        self.assertEqual([bar1_abspath], stat_paths)
589
598
 
590
599
    def test_iter_changes(self):
 
600
        self.wt.set_root_id('eert_toor')
591
601
        transform, root = self.get_transform()
592
602
        transform.new_file('old', root, 'blah', 'id-1', True)
593
603
        transform.apply()
597
607
            old = transform.trans_id_tree_file_id('id-1')
598
608
            transform.unversion_file(old)
599
609
            self.assertEqual([('id-1', 'old', False, (True, False),
600
 
                ('TREE_ROOT', 'TREE_ROOT'), ('old', 'old'), ('file', 'file'),
 
610
                ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
601
611
                (True, True))], list(transform._iter_changes()))
602
612
            transform.new_directory('new', root, 'id-1')
603
613
            self.assertEqual([('id-1', 'new', True, (True, True),
604
 
                ('TREE_ROOT', 'TREE_ROOT'), ('old', 'new'),
 
614
                ('eert_toor', 'eert_toor'), ('old', 'new'),
605
615
                ('file', 'directory'),
606
616
                (True, False))], list(transform._iter_changes()))
607
617
        finally:
608
618
            transform.finalize()
609
619
 
610
620
    def test_iter_changes_new(self):
 
621
        self.wt.set_root_id('eert_toor')
611
622
        transform, root = self.get_transform()
612
623
        transform.new_file('old', root, 'blah')
613
624
        transform.apply()
616
627
            old = transform.trans_id_tree_path('old')
617
628
            transform.version_file('id-1', old)
618
629
            self.assertEqual([('id-1', 'old', False, (False, True),
619
 
                ('TREE_ROOT', 'TREE_ROOT'), ('old', 'old'), ('file', 'file'),
 
630
                ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
620
631
                (False, False))], list(transform._iter_changes()))
621
632
        finally:
622
633
            transform.finalize()
623
634
 
624
635
    def test_iter_changes_modifications(self):
 
636
        self.wt.set_root_id('eert_toor')
625
637
        transform, root = self.get_transform()
626
638
        transform.new_file('old', root, 'blah', 'id-1')
627
639
        transform.new_file('new', root, 'blah')
637
649
            #content deletion
638
650
            transform.delete_contents(old)
639
651
            self.assertEqual([('id-1', 'old', True, (True, True),
640
 
                ('TREE_ROOT', 'TREE_ROOT'), ('old', 'old'), ('file', None),
 
652
                ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', None),
641
653
                (False, False))], list(transform._iter_changes()))
642
654
 
643
655
            #content change
644
656
            transform.create_file('blah', old)
645
657
            self.assertEqual([('id-1', 'old', True, (True, True),
646
 
                ('TREE_ROOT', 'TREE_ROOT'), ('old', 'old'), ('file', 'file'),
 
658
                ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
647
659
                (False, False))], list(transform._iter_changes()))
648
660
            transform.cancel_deletion(old)
649
661
            self.assertEqual([('id-1', 'old', True, (True, True),
650
 
                ('TREE_ROOT', 'TREE_ROOT'), ('old', 'old'), ('file', 'file'),
 
662
                ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
651
663
                (False, False))], list(transform._iter_changes()))
652
664
            transform.cancel_creation(old)
653
665
 
657
669
            transform.version_file('id-1', new)
658
670
            transform.adjust_path('old', root, new)
659
671
            self.assertEqual([('id-1', 'old', True, (True, True),
660
 
                ('TREE_ROOT', 'TREE_ROOT'), ('old', 'old'), ('file', 'file'),
 
672
                ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
661
673
                (False, False))], list(transform._iter_changes()))
662
674
            transform.cancel_versioning(new)
663
675
            transform._removed_id = set()
666
678
            self.assertEqual([], list(transform._iter_changes()))
667
679
            transform.set_executability(True, old)
668
680
            self.assertEqual([('id-1', 'old', False, (True, True),
669
 
                ('TREE_ROOT', 'TREE_ROOT'), ('old', 'old'), ('file', 'file'),
 
681
                ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
670
682
                (False, True))], list(transform._iter_changes()))
671
683
            transform.set_executability(None, old)
672
684
 
675
687
            transform.adjust_path('new', root, old)
676
688
            transform._new_parent = {}
677
689
            self.assertEqual([('id-1', 'new', False, (True, True),
678
 
                ('TREE_ROOT', 'TREE_ROOT'), ('old', 'new'), ('file', 'file'),
 
690
                ('eert_toor', 'eert_toor'), ('old', 'new'), ('file', 'file'),
679
691
                (False, False))], list(transform._iter_changes()))
680
692
            transform._new_name = {}
681
693
 
684
696
            transform.adjust_path('new', subdir, old)
685
697
            transform._new_name = {}
686
698
            self.assertEqual([('id-1', 'subdir/old', False, (True, True),
687
 
                ('TREE_ROOT', 'subdir-id'), ('old', 'old'), ('file', 'file'),
 
699
                ('eert_toor', 'subdir-id'), ('old', 'old'), ('file', 'file'),
688
700
                (False, False))], list(transform._iter_changes()))
689
701
            transform._new_path = {}
690
702
 
692
704
            transform.finalize()
693
705
 
694
706
    def test_iter_changes_modified_bleed(self):
 
707
        self.wt.set_root_id('eert_toor')
695
708
        """Modified flag should not bleed from one change to another"""
696
709
        # unfortunately, we have no guarantee that file1 (which is modified)
697
710
        # will be applied before file2.  And if it's applied after file2, it
707
720
            transform.set_executability(True,
708
721
            transform.trans_id_file_id('id-2'))
709
722
            self.assertEqual([('id-1', u'file1', True, (True, True),
710
 
                ('TREE_ROOT', 'TREE_ROOT'), ('file1', u'file1'),
 
723
                ('eert_toor', 'eert_toor'), ('file1', u'file1'),
711
724
                ('file', None), (False, False)),
712
725
                ('id-2', u'file2', False, (True, True),
713
 
                ('TREE_ROOT', 'TREE_ROOT'), ('file2', u'file2'),
 
726
                ('eert_toor', 'eert_toor'), ('file2', u'file2'),
714
727
                ('file', 'file'), (False, True))],
715
728
                list(transform._iter_changes()))
716
729
        finally:
718
731
 
719
732
    def test_iter_changes_pointless(self):
720
733
        """Ensure that no-ops are not treated as modifications"""
 
734
        self.wt.set_root_id('eert_toor')
721
735
        transform, root = self.get_transform()
722
736
        transform.new_file('old', root, 'blah', 'id-1')
723
737
        transform.new_directory('subdir', root, 'subdir-id')
957
971
        self.assertEqual(file('b/foo/bar', 'rb').read(), "contents")
958
972
        self.assertEqual(os.readlink('b/foo/baz'), 'a/foo/bar')
959
973
 
 
974
    def test_build_with_references(self):
 
975
        tree = self.make_branch_and_tree('source', format='experimental-knit3')
 
976
        subtree = self.make_branch_and_tree('source/subtree', 
 
977
                                            format='experimental-knit3')
 
978
        tree.add_reference(subtree)
 
979
        tree.commit('a revision')
 
980
        tree.branch.create_checkout('target')
 
981
        self.failUnlessExists('target')
 
982
        self.failUnlessExists('target/subtree')
 
983
 
960
984
    def test_file_conflict_handling(self):
961
985
        """Ensure that when building trees, conflict handling is done"""
962
986
        source = self.make_branch_and_tree('source')