/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 breezy/tests/test_transform.py

  • Committer: Jelmer Vernooij
  • Date: 2018-03-25 00:39:16 UTC
  • mfrom: (6926 work)
  • mto: This revision was merged to the branch mainline in revision 6928.
  • Revision ID: jelmer@jelmer.uk-20180325003916-mqa5uj4uq55hrjq9
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
168
168
        self.assertIs(self.wt.is_executable('name2'), False)
169
169
        self.assertEqual('directory', file_kind(self.wt.abspath('oz')))
170
170
        self.assertEqual(len(modified_paths), 3)
171
 
        tree_mod_paths = [self.wt.id2abspath(f) for f in
 
171
        tree_mod_paths = [self.wt.abspath(self.wt.id2path(f)) for f in
172
172
                          ('ozzie', 'my_pretties', 'my_pretties2')]
173
173
        self.assertSubset(tree_mod_paths, modified_paths)
174
174
        # is it safe to finalize repeatedly?
453
453
        self.assertEqual(self.wt.path2id('name'), 'my_pretties')
454
454
        self.assertEqual('contents', file(self.wt.abspath('name')).read())
455
455
        transform2, root = self.get_transform()
456
 
        oz_id = transform2.trans_id_tree_file_id('oz-id')
 
456
        oz_id = transform2.trans_id_tree_path('oz')
457
457
        newtip = transform2.new_file('tip', oz_id, 'other', 'tip-id')
458
458
        result = transform2.find_conflicts()
459
459
        fp = FinalPaths(transform2)
467
467
        transform2.finalize()
468
468
        transform3 = TreeTransform(self.wt)
469
469
        self.addCleanup(transform3.finalize)
470
 
        oz_id = transform3.trans_id_tree_file_id('oz-id')
 
470
        oz_id = transform3.trans_id_tree_path('oz')
471
471
        transform3.delete_contents(oz_id)
472
472
        self.assertEqual(transform3.find_conflicts(),
473
473
                         [('missing parent', oz_id)])
474
474
        root_id = transform3.root
475
 
        tip_id = transform3.trans_id_tree_file_id('tip-id')
 
475
        tip_id = transform3.trans_id_tree_path('oz/tip')
476
476
        transform3.adjust_path('tip', root_id, tip_id)
477
477
        transform3.apply()
478
478
 
601
601
        start.new_directory('a', root, 'a')
602
602
        start.apply()
603
603
        transform, root = self.get_transform()
604
 
        transform.delete_versioned(transform.trans_id_tree_file_id('a'))
 
604
        transform.delete_versioned(transform.trans_id_tree_path('a'))
605
605
        transform.new_directory('a', root, 'a')
606
606
        transform.apply()
607
607
 
616
616
        unversion.unversion_file(parent)
617
617
        self.assertEqual(unversion.find_conflicts(),
618
618
                         [('unversioned parent', parent_id)])
619
 
        file_id = unversion.trans_id_tree_file_id(b'child-id')
 
619
        file_id = unversion.trans_id_tree_path('parent/child')
620
620
        unversion.unversion_file(file_id)
621
621
        unversion.apply()
622
622
 
635
635
        mangle_tree, root = self.get_transform()
636
636
        root = mangle_tree.root
637
637
        #swap names
638
 
        name1 = mangle_tree.trans_id_tree_file_id('name1')
639
 
        name2 = mangle_tree.trans_id_tree_file_id('name2')
 
638
        name1 = mangle_tree.trans_id_tree_path('name1')
 
639
        name2 = mangle_tree.trans_id_tree_path('name2')
640
640
        mangle_tree.adjust_path('name2', root, name1)
641
641
        mangle_tree.adjust_path('name1', root, name2)
642
642
 
643
643
        #tests for deleting parent directories
644
 
        ddir = mangle_tree.trans_id_tree_file_id('ddir')
 
644
        ddir = mangle_tree.trans_id_tree_path('dying_directory')
645
645
        mangle_tree.delete_contents(ddir)
646
 
        dfile = mangle_tree.trans_id_tree_file_id('dfile')
 
646
        dfile = mangle_tree.trans_id_tree_path('dying_directory/dying_file')
647
647
        mangle_tree.delete_versioned(dfile)
648
648
        mangle_tree.unversion_file(dfile)
649
 
        mfile = mangle_tree.trans_id_tree_file_id('mfile')
 
649
        mfile = mangle_tree.trans_id_tree_path('dying_directory/moving_file')
650
650
        mangle_tree.adjust_path('mfile', root, mfile)
651
651
 
652
652
        #tests for adding parent directories
653
653
        newdir = mangle_tree.new_directory('new_directory', root, 'newdir')
654
 
        mfile2 = mangle_tree.trans_id_tree_file_id('mfile2')
 
654
        mfile2 = mangle_tree.trans_id_tree_path('moving_file2')
655
655
        mangle_tree.adjust_path('mfile2', newdir, mfile2)
656
656
        mangle_tree.new_file('newfile', newdir, 'hello3', 'dfile')
657
657
        self.assertEqual(mangle_tree.final_file_id(mfile2), 'mfile2')
677
677
        create_tree.new_file('blackbox.py', newdir, 'hello1', 'blackbox-id')
678
678
        create_tree.apply()
679
679
        mangle_tree, root = self.get_transform()
680
 
        selftest = mangle_tree.trans_id_tree_file_id('selftest-id')
681
 
        blackbox = mangle_tree.trans_id_tree_file_id('blackbox-id')
 
680
        selftest = mangle_tree.trans_id_tree_path('selftest')
 
681
        blackbox = mangle_tree.trans_id_tree_path('selftest/blackbox.py')
682
682
        mangle_tree.adjust_path('test', root, selftest)
683
683
        mangle_tree.adjust_path('test_too_much', root, selftest)
684
684
        mangle_tree.set_executability(True, blackbox)
693
693
                             'test_too_much-id')
694
694
        create_tree.apply()
695
695
        mangle_tree, root = self.get_transform()
696
 
        breezy = mangle_tree.trans_id_tree_file_id('breezy-id')
697
 
        tests = mangle_tree.trans_id_tree_file_id('tests-id')
698
 
        test_too_much = mangle_tree.trans_id_tree_file_id('test_too_much-id')
 
696
        breezy = mangle_tree.trans_id_tree_path('breezy')
 
697
        tests = mangle_tree.trans_id_tree_path('breezy/tests')
 
698
        test_too_much = mangle_tree.trans_id_tree_path('breezy/tests/blackbox/test_too_much.py')
699
699
        mangle_tree.adjust_path('selftest', breezy, tests)
700
700
        mangle_tree.adjust_path('blackbox.py', tests, test_too_much)
701
701
        mangle_tree.set_executability(True, test_too_much)
708
708
                             'test_too_much-id')
709
709
        create_tree.apply()
710
710
        mangle_tree, root = self.get_transform()
711
 
        tests = mangle_tree.trans_id_tree_file_id('tests-id')
712
 
        test_too_much = mangle_tree.trans_id_tree_file_id('test_too_much-id')
 
711
        tests = mangle_tree.trans_id_tree_path('tests')
 
712
        test_too_much = mangle_tree.trans_id_tree_path('tests/test_too_much.py')
713
713
        mangle_tree.adjust_path('selftest', root, tests)
714
714
        mangle_tree.adjust_path('blackbox.py', tests, test_too_much)
715
715
        mangle_tree.set_executability(True, test_too_much)
722
722
        create_tree.new_file('name1', root, 'hello1', 'name1')
723
723
        create_tree.apply()
724
724
        delete_contents, root = self.get_transform()
725
 
        file = delete_contents.trans_id_tree_file_id('name1')
 
725
        file = delete_contents.trans_id_tree_path('name1')
726
726
        delete_contents.delete_contents(file)
727
727
        delete_contents.apply()
728
728
        move_id, root = self.get_transform()
729
 
        name1 = move_id.trans_id_tree_file_id('name1')
 
729
        name1 = move_id.trans_id_tree_path('name1')
730
730
        newdir = move_id.new_directory('dir', root, 'newdir')
731
731
        move_id.adjust_path('name2', newdir, name1)
732
732
        move_id.apply()
739
739
        create_tree.apply()
740
740
        delete_contents = TreeTransform(self.wt)
741
741
        self.addCleanup(delete_contents.finalize)
742
 
        file = delete_contents.trans_id_tree_file_id('name1')
 
742
        file = delete_contents.trans_id_tree_path('name1')
743
743
        delete_contents.delete_contents(file)
744
744
        delete_contents.apply()
745
745
        delete_contents.finalize()
747
747
        self.addCleanup(replace.finalize)
748
748
        name2 = replace.new_file('name2', root, 'hello2', 'name1')
749
749
        conflicts = replace.find_conflicts()
750
 
        name1 = replace.trans_id_tree_file_id('name1')
 
750
        name1 = replace.trans_id_tree_path('name1')
751
751
        self.assertEqual(conflicts, [('duplicate id', name1, name2)])
752
752
        resolve_conflicts(replace)
753
753
        replace.apply()
819
819
        # set up duplicate entry, duplicate id
820
820
        new_dorothy = conflicts.new_file('dorothy', root, 'dorothy',
821
821
                                         'dorothy-id')
822
 
        old_dorothy = conflicts.trans_id_tree_file_id('dorothy-id')
823
 
        oz = conflicts.trans_id_tree_file_id('oz-id')
 
822
        old_dorothy = conflicts.trans_id_tree_path('dorothy')
 
823
        oz = conflicts.trans_id_tree_path('oz')
824
824
        # set up DeletedParent parent conflict
825
825
        conflicts.delete_versioned(oz)
826
 
        emerald = conflicts.trans_id_tree_file_id('emerald-id')
 
826
        emerald = conflicts.trans_id_tree_path('oz/emeraldcity')
827
827
        # set up MissingParent conflict
828
828
        munchkincity = conflicts.trans_id_file_id('munchkincity-id')
829
829
        conflicts.adjust_path('munchkincity', root, munchkincity)
975
975
        create.new_directory('oz', root, 'oz-id')
976
976
        create.apply()
977
977
        cyclone, root = self.get_transform()
978
 
        oz = cyclone.trans_id_tree_file_id('oz-id')
979
 
        house = cyclone.trans_id_tree_file_id('house-id')
 
978
        oz = cyclone.trans_id_tree_path('oz')
 
979
        house = cyclone.trans_id_tree_path('house')
980
980
        cyclone.adjust_path('house', oz, house)
981
981
        cyclone.apply()
982
982
 
1080
1080
        self.addCleanup(self.wt.unlock)
1081
1081
        self.assertTrue(self.wt.is_executable('file1'))
1082
1082
        transform, root = self.get_transform()
1083
 
        file1_id = transform.trans_id_tree_file_id('file1-id')
 
1083
        file1_id = transform.trans_id_tree_path('file1')
1084
1084
        transform.delete_contents(file1_id)
1085
1085
        transform.create_file('contents2', file1_id)
1086
1086
        transform.apply()
1124
1124
        transform, root = self.get_transform()
1125
1125
        try:
1126
1126
            self.assertEqual([], list(transform.iter_changes()))
1127
 
            old = transform.trans_id_tree_file_id('id-1')
 
1127
            old = transform.trans_id_tree_path('old')
1128
1128
            transform.unversion_file(old)
1129
1129
            self.assertEqual([('id-1', ('old', None), False, (True, False),
1130
1130
                ('eert_toor', 'eert_toor'), ('old', 'old'), ('file', 'file'),
1162
1162
        transform, root = self.get_transform()
1163
1163
        try:
1164
1164
            old = transform.trans_id_tree_path('old')
1165
 
            subdir = transform.trans_id_tree_file_id('subdir-id')
 
1165
            subdir = transform.trans_id_tree_path('subdir')
1166
1166
            new = transform.trans_id_tree_path('new')
1167
1167
            self.assertEqual([], list(transform.iter_changes()))
1168
1168
 
1280
1280
        transform, root = self.get_transform()
1281
1281
        try:
1282
1282
            old = transform.trans_id_tree_path('old')
1283
 
            subdir = transform.trans_id_tree_file_id('subdir-id')
 
1283
            subdir = transform.trans_id_tree_path('subdir')
1284
1284
            self.assertEqual([], list(transform.iter_changes()))
1285
1285
            transform.delete_contents(subdir)
1286
1286
            transform.create_directory(subdir)
1651
1651
        self.wt.set_root_id(root_id)
1652
1652
        self.b = self.wt.branch
1653
1653
        self.tt = TreeTransform(self.wt)
1654
 
        self.root = self.tt.trans_id_tree_file_id(self.wt.get_root_id())
 
1654
        self.root = self.tt.trans_id_tree_path('')
1655
1655
 
1656
1656
 
1657
1657
def conflict_text(tree, merge):
1675
1675
        with TransformPreview(tree) as tt:
1676
1676
            tt.unversion_file(tt.root)
1677
1677
            tt.version_file(b'new-id', tt.root)
1678
 
            foo_trans_id = tt.trans_id_tree_file_id(b'foo-id')
 
1678
            foo_trans_id = tt.trans_id_tree_path('foo')
1679
1679
            foo_tuple = ('foo', foo_trans_id)
1680
1680
            root_tuple = ('', tt.root)
1681
1681
            self.assertEqual([root_tuple, foo_tuple], tt._inventory_altered())
1687
1687
        with TransformPreview(tree) as tt:
1688
1688
            tt.unversion_file(tt.root)
1689
1689
            tt.version_file(tree.get_root_id(), tt.root)
1690
 
            foo_trans_id = tt.trans_id_tree_file_id(b'foo-id')
 
1690
            foo_trans_id = tt.trans_id_tree_path('foo')
1691
1691
            self.assertEqual([], tt._inventory_altered())
1692
1692
 
1693
1693
 
1763
1763
        merge_modified = this.wt.merge_modified()
1764
1764
        self.assertSubset(merge_modified, modified)
1765
1765
        self.assertEqual(len(merge_modified), len(modified))
1766
 
        with file(this.wt.id2abspath('a'), 'wb') as f: f.write('booga')
 
1766
        with file(this.wt.abspath(this.wt.id2path('a')), 'wb') as f: f.write('booga')
1767
1767
        modified.pop(0)
1768
1768
        merge_modified = this.wt.merge_modified()
1769
1769
        self.assertSubset(merge_modified, modified)
2160
2160
        self.requireFeature(HardlinkFeature)
2161
2161
        source = self.create_ab_tree()
2162
2162
        tt = TreeTransform(source)
2163
 
        trans_id = tt.trans_id_tree_file_id('file1-id')
 
2163
        trans_id = tt.trans_id_tree_path('file1')
2164
2164
        tt.set_executability(True, trans_id)
2165
2165
        tt.apply()
2166
2166
        self.assertTrue(source.is_executable('file1'))
2669
2669
 
2670
2670
    def test_resolve_create_parent_for_versioned_file(self):
2671
2671
        wt, tt = self.make_tt_with_versioned_dir()
2672
 
        dir_tid = tt.trans_id_tree_file_id(b'dir-id')
 
2672
        dir_tid = tt.trans_id_tree_path('dir')
2673
2673
        file_tid = tt.new_file('file', dir_tid, 'Contents', file_id=b'file-id')
2674
2674
        tt.delete_contents(dir_tid)
2675
2675
        tt.unversion_file(dir_tid)
2680
2680
 
2681
2681
    def test_non_versioned_file_create_conflict(self):
2682
2682
        wt, tt = self.make_tt_with_versioned_dir()
2683
 
        dir_tid = tt.trans_id_tree_file_id(b'dir-id')
 
2683
        dir_tid = tt.trans_id_tree_path('dir')
2684
2684
        tt.new_file('file', dir_tid, 'Contents')
2685
2685
        tt.delete_contents(dir_tid)
2686
2686
        tt.unversion_file(dir_tid)
2837
2837
        work_tree.add('file', b'file-id')
2838
2838
        preview = TransformPreview(work_tree)
2839
2839
        self.addCleanup(preview.finalize)
2840
 
        file_trans_id = preview.trans_id_tree_file_id(b'file-id')
 
2840
        file_trans_id = preview.trans_id_tree_path('file')
2841
2841
        preview.adjust_path('renamed', preview.root, file_trans_id)
2842
2842
        preview_tree = preview.get_preview_tree()
2843
2843
        preview_mtime = preview_tree.get_file_mtime('renamed', b'file-id')
2937
2937
        self.assertFalse(preview_tree.is_versioned('old_name/child'))
2938
2938
        self.assertEqual(b'child-id', preview_tree.path2id('new_name/child'))
2939
2939
 
2940
 
    def assertMatchingIterEntries(self, tt, specific_file_ids=None):
 
2940
    def assertMatchingIterEntries(self, tt, specific_files=None):
2941
2941
        preview_tree = tt.get_preview_tree()
2942
2942
        preview_result = list(preview_tree.iter_entries_by_dir(
2943
 
                              specific_file_ids))
 
2943
                              specific_files=specific_files))
2944
2944
        tree = tt._tree
2945
2945
        tt.apply()
2946
 
        actual_result = list(tree.iter_entries_by_dir(specific_file_ids))
 
2946
        actual_result = list(tree.iter_entries_by_dir(
 
2947
            specific_files=specific_files))
2947
2948
        self.assertEqual(actual_result, preview_result)
2948
2949
 
2949
2950
    def test_iter_entries_by_dir_new(self):
2977
2978
                       tt.trans_id_file_id(b'moved-id'))
2978
2979
        self.assertMatchingIterEntries(tt)
2979
2980
 
2980
 
    def test_iter_entries_by_dir_specific_file_ids(self):
 
2981
    def test_iter_entries_by_dir_specific_files(self):
2981
2982
        tree = self.make_branch_and_tree('tree')
2982
2983
        tree.set_root_id(b'tree-root-id')
2983
2984
        self.build_tree(['tree/parent/', 'tree/parent/child'])
2984
2985
        tree.add(['parent', 'parent/child'], [b'parent-id', b'child-id'])
2985
2986
        tt = TreeTransform(tree)
2986
 
        self.assertMatchingIterEntries(tt, [b'tree-root-id', b'child-id'])
 
2987
        self.assertMatchingIterEntries(tt, ['', 'parent/child'])
2987
2988
 
2988
2989
    def test_symlink_content_summary(self):
2989
2990
        self.requireFeature(SymlinkFeature)
3455
3456
 
3456
3457
    def test_serialize_destruction(self):
3457
3458
        tt = self.make_destruction_preview()
3458
 
        foo_trans_id = tt.trans_id_tree_file_id(b'foo-id')
 
3459
        foo_trans_id = tt.trans_id_tree_path(u'foo\u1234')
3459
3460
        tt.unversion_file(foo_trans_id)
3460
 
        bar_trans_id = tt.trans_id_tree_file_id(b'bar-id')
 
3461
        bar_trans_id = tt.trans_id_tree_path('bar')
3461
3462
        tt.delete_contents(bar_trans_id)
3462
3463
        self.assertSerializesTo(self.destruction_records(), tt)
3463
3464
 
3612
3613
        self.assertRaises(NotImplementedError, tt.new_orphan, 'foo', 'bar')
3613
3614
 
3614
3615
    def _set_orphan_policy(self, wt, policy):
3615
 
        wt.branch.get_config_stack().set('bzr.transform.orphan_policy',
 
3616
        wt.branch.get_config_stack().set('transform.orphan_policy',
3616
3617
                                               policy)
3617
3618
 
3618
3619
    def _prepare_orphan(self, wt):
3741
3742
        self.parent_tree.lock_write()
3742
3743
        self.addCleanup(self.parent_tree.unlock)
3743
3744
        self.build_tree_contents([('parent/foo', b'bar')])
3744
 
        self.parent_tree.add('foo', b'foo-id')
 
3745
        self.parent_tree.add('foo')
3745
3746
        self.parent_tree.commit('added foo')
3746
3747
        child_controldir = self.parent_tree.controldir.sprout('child')
3747
3748
        self.child_tree = child_controldir.open_workingtree()
3761
3762
        """If the file to be linked has modified execute bit, don't link."""
3762
3763
        tt = TreeTransform(self.child_tree)
3763
3764
        try:
3764
 
            trans_id = tt.trans_id_tree_file_id(b'foo-id')
 
3765
            trans_id = tt.trans_id_tree_path('foo')
3765
3766
            tt.set_executability(True, trans_id)
3766
3767
            tt.apply()
3767
3768
        finally: