/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: Jelmer Vernooij
  • Date: 2020-08-22 22:46:24 UTC
  • mfrom: (7490.40.105 work)
  • mto: This revision was merged to the branch mainline in revision 7521.
  • Revision ID: jelmer@jelmer.uk-20200822224624-om4a4idsr7cn8jew
merge lp:brz/3.1.

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([
624
649
        preview.new_file('new-versioned-file', preview.root, [b'contents'],
625
650
                         b'new-versioned-id')
626
651
        tree = preview.get_preview_tree()
 
652
        self.assertEquals({'existing-file'}, set(work_tree.extras()))
627
653
        preview.unversion_file(preview.trans_id_tree_path('removed-file'))
628
654
        self.assertEqual({'new-file', 'removed-file', 'existing-file'},
629
655
                         set(tree.extras()))