28
29
tree = self.get_tree_no_parents_abc_content(work_tree)
29
30
tree_revision = getattr(tree, 'get_revision_id', lambda: 'current:')()
32
for revision, line in tree.annotate_iter('a-id'):
33
self.assertEqual('contents of a\n', line)
34
self.assertEqual(tree_revision, revision)
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)
42
class TestPlanFileMerge(TestCaseWithTree):
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)
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)
57
self.addCleanup(tree_b.unlock)
65
], list(tree_a.plan_file_merge('file-id', tree_b)))
39
68
class TestReference(TestCaseWithTree):
91
120
self.assertRaises(errors.NoSuchId, tree.id2path, 'a')
125
class TestFileContent(TestCaseWithTree):
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)
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)
142
class TestExtractFilesBytes(TestCaseWithTree):
144
def test_iter_files_bytes(self):
145
work_tree = self.make_branch_and_tree('wt')
146
self.build_tree_contents([('wt/foo', 'foo'),
149
work_tree.add(['foo', 'bar', 'baz'], ['foo-id', 'bar-id', 'baz-id'])
150
tree = self._convert_tree(work_tree)
152
self.addCleanup(tree.unlock)
153
extracted = dict((i, ''.join(b)) for i, b in
154
tree.iter_files_bytes([('foo-id', 'id1'),
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')])))
165
class TestConflicts(TestCaseWithTree):
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)