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

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-08-23 01:15:41 UTC
  • mfrom: (7520.1.4 merge-3.1)
  • Revision ID: breezy.the.bot@gmail.com-20200823011541-nv0oh7nzaganx2qy
Merge lp:brz/3.1.

Merged from https://code.launchpad.net/~jelmer/brz/merge-3.1/+merge/389690

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
    )
31
31
from ...tree import (
32
32
    find_previous_path,
 
33
    TreeChange,
33
34
    )
34
35
 
 
36
from breezy.bzr.inventorytree import InventoryTreeChange
35
37
 
36
38
from breezy.tests.per_tree import TestCaseWithTree
37
39
 
46
48
 
47
49
class TestTransformPreview(TestCaseWithTree):
48
50
 
49
 
    def setUp(self):
50
 
        super(TestTransformPreview, self).setUp()
51
 
        if not self.workingtree_format.supports_setting_file_ids:
52
 
            self.skipTest('test not compatible with non-file-id trees yet')
53
 
 
54
51
    def create_tree(self):
55
52
        tree = self.make_branch_and_tree('.')
56
53
        self.build_tree_contents([('a', b'content 1')])
153
150
                           (False, False), False)],
154
151
                         list(preview_tree.iter_changes(revision_tree)))
155
152
 
 
153
    def assertTreeChanges(self, expected, actual, tree):
 
154
        # TODO(jelmer): Turn this into a matcher?
 
155
        actual = list(actual)
 
156
        if tree.supports_setting_file_ids():
 
157
            self.assertEqual(expected, actual)
 
158
        else:
 
159
            expected = [
 
160
                TreeChange(path=c.path, changed_content=c.changed_content,
 
161
                           versioned=c.versioned, name=c.name,
 
162
                           kind=c.kind, executable=c.executable,
 
163
                           copied=c.copied) for c in expected]
 
164
            actual = [
 
165
                TreeChange(path=c.path, changed_content=c.changed_content,
 
166
                           versioned=c.versioned, name=c.name,
 
167
                           kind=c.kind, executable=c.executable,
 
168
                           copied=c.copied) for c in actual]
 
169
            self.assertEqual(expected, actual)
 
170
 
156
171
    def test_include_unchanged_succeeds(self):
157
172
        revision_tree, preview_tree = self.get_tree_and_preview_tree()
158
173
        changes = preview_tree.iter_changes(revision_tree,
159
174
                                            include_unchanged=True)
160
175
 
161
176
        root_id = revision_tree.path2id('')
162
 
        root_entry = (root_id, ('', ''), False, (True, True), (None, None),
163
 
                      ('', ''), ('directory', 'directory'), (False, False), False)
164
 
        a_entry = (revision_tree.path2id('a'), ('a', 'a'), True, (True, True),
165
 
                   (root_id, root_id), ('a', 'a'), ('file', 'file'),
166
 
                   (False, False), False)
 
177
        root_entry = InventoryTreeChange(
 
178
            root_id, ('', ''), False, (True, True), (None, None),
 
179
            ('', ''), ('directory', 'directory'), (False, False), False)
 
180
        a_entry = InventoryTreeChange(
 
181
            revision_tree.path2id('a'), ('a', 'a'), True, (True, True),
 
182
            (root_id, root_id), ('a', 'a'), ('file', 'file'),
 
183
            (False, False), False)
167
184
 
168
 
 
169
 
        self.assertEqual([root_entry, a_entry], list(changes))
 
185
        self.assertTreeChanges([root_entry, a_entry], changes, preview_tree)
170
186
 
171
187
    def test_specific_files(self):
172
188
        revision_tree, preview_tree = self.get_tree_and_preview_tree()
177
193
                   (root_id, root_id), ('a', 'a'), ('file', 'file'),
178
194
                   (False, False), False)
179
195
 
180
 
 
181
196
        self.assertEqual([a_entry], list(changes))
182
197
 
183
198
    def test_want_unversioned(self):
185
200
        changes = preview_tree.iter_changes(revision_tree,
186
201
                                            want_unversioned=True)
187
202
        root_id = revision_tree.path2id('')
188
 
        a_entry = (revision_tree.path2id('a'), ('a', 'a'), True, (True, True),
189
 
                   (root_id, root_id), ('a', 'a'), ('file', 'file'),
190
 
                   (False, False), False)
 
203
        a_entry = InventoryTreeChange(
 
204
            revision_tree.path2id('a'), ('a', 'a'), True, (True, True),
 
205
            (root_id, root_id), ('a', 'a'), ('file', 'file'),
 
206
            (False, False), False)
191
207
 
192
208
        self.assertEqual([a_entry], list(changes))
193
209
 
304
320
        preview.new_file('new', preview.trans_id_tree_path('unchanged'),
305
321
                         [b'contents'], b'new-id')
306
322
        preview_tree = preview.get_preview_tree()
307
 
        self.assertEqual(b'new-id', preview_tree.path2id('unchanged/new'))
 
323
        self.assertTrue(preview_tree.is_versioned('unchanged/new'))
 
324
        if self.workingtree_format.supports_setting_file_ids:
 
325
            self.assertEqual(b'new-id', preview_tree.path2id('unchanged/new'))
308
326
 
309
327
    def test_path2id_moved(self):
310
328
        tree = self.make_branch_and_tree('tree')
339
357
        self.assertEqual(
340
358
            'new_name/child',
341
359
            find_previous_path(tree, preview_tree, 'old_name/child'))
342
 
        if tree.supports_setting_file_ids:
 
360
        if tree.supports_setting_file_ids():
343
361
            self.assertEqual(
344
362
                tree.path2id('old_name/child'),
345
363
                preview_tree.path2id('new_name/child'))
516
534
            (revid1, b'a\n'),
517
535
        ]
518
536
        annotation = preview_tree.annotate_iter(
 
537
            'newname', default_revision=b'me:')
 
538
        self.assertEqual(expected, annotation)
 
539
        annotation = preview_tree.annotate_iter(
519
540
            'file', default_revision=b'me:')
520
 
        self.assertEqual(expected, annotation)
 
541
        self.assertIs(None, annotation)
521
542
 
522
543
    def test_annotate_deleted(self):
523
544
        tree = self.make_branch_and_tree('tree')
542
563
 
543
564
    def test_is_executable(self):
544
565
        preview = self.get_empty_preview()
545
 
        preview.new_file('file', preview.root, [b'a\nb\nc\n'], b'file-id')
546
 
        preview.set_executability(True, preview.trans_id_file_id(b'file-id'))
 
566
        trans_id = preview.new_file('file', preview.root, [b'a\nb\nc\n'], b'file-id')
 
567
        preview.set_executability(True, trans_id)
547
568
        preview_tree = preview.get_preview_tree()
548
569
        self.assertEqual(True, preview_tree.is_executable('file'))
549
570
 
568
589
        preview.create_file([b'b\nc\nd\ne\n'], trans_id)
569
590
        self.build_tree_contents([('wtb/file', b'a\nc\nd\nf\n')])
570
591
        tree_a = preview.get_preview_tree()
 
592
        if not getattr(tree_a, 'plan_file_merge', None):
 
593
            self.skipTest('tree does not support file merge planning')
571
594
        tree_a.set_parent_ids([base_id])
572
595
        self.addCleanup(tree_b.lock_read().unlock)
573
596
        self.assertEqual([
592
615
        preview.create_file([b'b\nc\nd\ne\n'], trans_id)
593
616
        self.build_tree_contents([('wtb/file', b'a\nc\nd\nf\n')])
594
617
        tree_a = preview.get_preview_tree()
 
618
        if not getattr(tree_a, 'plan_file_merge', None):
 
619
            self.skipTest('tree does not support file merge planning')
595
620
        tree_a.set_parent_ids([base_id])
596
621
        self.addCleanup(tree_b.lock_read().unlock)
597
622
        self.assertEqual([
610
635
        preview.fixup_new_roots()
611
636
        preview_tree = preview.get_preview_tree()
612
637
        preview.new_file('a', preview.root, [b'contents'], b'a-id')
613
 
        expected = [(('', b'tree-root'),
614
 
                     [('a', 'a', 'file', None, b'a-id', 'file')])]
 
638
        expected = [('', [('a', 'a', 'file', None, 'file')])]
615
639
        self.assertEqual(expected, list(preview_tree.walkdirs()))
616
640
 
617
641
    def test_extras(self):
625
649
        preview.new_file('new-versioned-file', preview.root, [b'contents'],
626
650
                         b'new-versioned-id')
627
651
        tree = preview.get_preview_tree()
 
652
        self.assertEquals({'existing-file'}, set(work_tree.extras()))
628
653
        preview.unversion_file(preview.trans_id_tree_path('removed-file'))
629
654
        self.assertEqual({'new-file', 'removed-file', 'existing-file'},
630
655
                         set(tree.extras()))