/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/tree_implementations/test_tree.py

  • Committer: Martin Pool
  • Date: 2007-09-14 06:31:28 UTC
  • mfrom: (2822 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2823.
  • Revision ID: mbp@sourcefrog.net-20070914063128-0p7mh6zfb4pzdg9p
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
from bzrlib import (
18
18
    errors,
19
19
    tests,
 
20
    conflicts,
20
21
    )
21
22
from bzrlib.tests import TestSkipped
22
23
from bzrlib.tests.tree_implementations import TestCaseWithTree
28
29
        tree = self.get_tree_no_parents_abc_content(work_tree)
29
30
        tree_revision = getattr(tree, 'get_revision_id', lambda: 'current:')()
30
31
        tree.lock_read()
31
 
        try:
32
 
            for revision, line in tree.annotate_iter('a-id'):
33
 
                self.assertEqual('contents of a\n', line)
34
 
                self.assertEqual(tree_revision, revision)
35
 
        finally:
36
 
            tree.unlock()
 
32
        self.addCleanup(tree.unlock)
 
33
        for revision, line in tree.annotate_iter('a-id'):
 
34
            self.assertEqual('contents of a\n', line)
 
35
            self.assertEqual(tree_revision, revision)
 
36
        tree_revision = getattr(tree, 'get_revision_id', lambda: 'random:')()
 
37
        for revision, line in tree.annotate_iter('a-id', 'random:'):
 
38
            self.assertEqual('contents of a\n', line)
 
39
            self.assertEqual(tree_revision, revision)
 
40
 
 
41
 
 
42
class TestPlanFileMerge(TestCaseWithTree):
 
43
 
 
44
    def test_plan_file_merge(self):
 
45
        work_a = self.make_branch_and_tree('wta')
 
46
        self.build_tree_contents([('wta/file', 'a\nb\nc\nd\n')])
 
47
        work_a.add('file', 'file-id')
 
48
        work_a.commit('base version')
 
49
        work_b = work_a.bzrdir.sprout('wtb').open_workingtree()
 
50
        self.build_tree_contents([('wta/file', 'b\nc\nd\ne\n')])
 
51
        tree_a = self.workingtree_to_test_tree(work_a)
 
52
        tree_a.lock_read()
 
53
        self.addCleanup(tree_a.unlock)
 
54
        self.build_tree_contents([('wtb/file', 'a\nc\nd\nf\n')])
 
55
        tree_b = self.workingtree_to_test_tree(work_b)
 
56
        tree_b.lock_read()
 
57
        self.addCleanup(tree_b.unlock)
 
58
        self.assertEqual([
 
59
            ('killed-b', 'b\n'),
 
60
            ('killed-a', 'a\n'),
 
61
            ('unchanged', 'c\n'),
 
62
            ('unchanged', 'd\n'),
 
63
            ('new-a', 'e\n'),
 
64
            ('new-b', 'f\n'),
 
65
        ], list(tree_a.plan_file_merge('file-id', tree_b)))
37
66
 
38
67
 
39
68
class TestReference(TestCaseWithTree):
91
120
            self.assertRaises(errors.NoSuchId, tree.id2path, 'a')
92
121
        finally:
93
122
            tree.unlock()
 
123
 
 
124
 
 
125
class TestFileContent(TestCaseWithTree):
 
126
 
 
127
    def test_get_file(self):
 
128
        work_tree = self.make_branch_and_tree('wt')
 
129
        tree = self.get_tree_no_parents_abc_content_2(work_tree)
 
130
        tree.lock_read()
 
131
        try:
 
132
            # Test lookup without path works
 
133
            lines = tree.get_file('a-id').readlines()
 
134
            self.assertEqual(['foobar\n'], lines)
 
135
            # Test lookup with path works
 
136
            lines = tree.get_file('a-id', path='a').readlines()
 
137
            self.assertEqual(['foobar\n'], lines)
 
138
        finally:
 
139
            tree.unlock()
 
140
 
 
141
 
 
142
class TestExtractFilesBytes(TestCaseWithTree):
 
143
 
 
144
    def test_iter_files_bytes(self):
 
145
        work_tree = self.make_branch_and_tree('wt')
 
146
        self.build_tree_contents([('wt/foo', 'foo'),
 
147
                                  ('wt/bar', 'bar'),
 
148
                                  ('wt/baz', 'baz')])
 
149
        work_tree.add(['foo', 'bar', 'baz'], ['foo-id', 'bar-id', 'baz-id'])
 
150
        tree = self._convert_tree(work_tree)
 
151
        tree.lock_read()
 
152
        self.addCleanup(tree.unlock)
 
153
        extracted = dict((i, ''.join(b)) for i, b in
 
154
                         tree.iter_files_bytes([('foo-id', 'id1'),
 
155
                                                ('bar-id', 'id2'),
 
156
                                                ('baz-id', 'id3')]))
 
157
        self.assertEqual('foo', extracted['id1'])
 
158
        self.assertEqual('bar', extracted['id2'])
 
159
        self.assertEqual('baz', extracted['id3'])
 
160
        self.assertRaises(errors.NoSuchId, lambda: list(
 
161
                          tree.iter_files_bytes(
 
162
                          [('qux-id', 'file1-notpresent')])))
 
163
 
 
164
 
 
165
class TestConflicts(TestCaseWithTree):
 
166
 
 
167
    def test_conflicts(self):
 
168
        """Tree.conflicts() should return a ConflictList instance."""
 
169
        work_tree = self.make_branch_and_tree('wt')
 
170
        tree = self._convert_tree(work_tree)
 
171
        self.assertIsInstance(tree.conflicts(), conflicts.ConflictList)