35
37
import bzrlib.branch
36
38
from bzrlib.branch import Branch
37
from bzrlib.revision import is_ancestor
38
from bzrlib.tests import TestCase, TestCaseInTempDir
39
from bzrlib.tests import TestCaseWithTransport
39
40
from bzrlib.transport import get_transport
40
41
from bzrlib.upgrade import upgrade
41
import bzrlib.workingtree as workingtree
44
class TestUpgrade(TestCaseInTempDir):
44
class TestUpgrade(TestCaseWithTransport):
46
46
def test_build_tree(self):
47
47
"""Test tree-building test helper"""
184
184
branch2 = self.make_branch('branch2', format='knit')
185
185
converter = branch2.bzrdir._format.get_converter(target)
186
186
converter.convert(branch2.bzrdir, progress.DummyProgress())
187
branch2 = _mod_branch.Branch.open(self.get_url('branch'))
188
self.assertIs(branch2.__class__, _mod_branch.BzrBranch6)
190
def test_convert_knit_dirstate_empty(self):
191
# test that asking for an upgrade from knit to dirstate works.
192
tree = self.make_branch_and_tree('tree', format='knit')
193
target = bzrdir.format_registry.make_bzrdir('dirstate')
194
converter = tree.bzrdir._format.get_converter(target)
195
converter.convert(tree.bzrdir, progress.DummyProgress())
196
new_tree = workingtree.WorkingTree.open('tree')
197
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
198
self.assertEqual(None, new_tree.last_revision())
200
def test_convert_knit_dirstate_content(self):
201
# smoke test for dirstate conversion: we call dirstate primitives,
202
# and its there that the core logic is tested.
203
tree = self.make_branch_and_tree('tree', format='knit')
204
self.build_tree(['tree/file'])
205
tree.add(['file'], ['file-id'])
206
target = bzrdir.format_registry.make_bzrdir('dirstate')
207
converter = tree.bzrdir._format.get_converter(target)
208
converter.convert(tree.bzrdir, progress.DummyProgress())
209
new_tree = workingtree.WorkingTree.open('tree')
210
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
211
self.assertEqual(None, new_tree.last_revision())
213
def test_convert_knit_one_parent_dirstate(self):
214
# test that asking for an upgrade from knit to dirstate works.
215
tree = self.make_branch_and_tree('tree', format='knit')
216
rev_id = tree.commit('first post')
217
target = bzrdir.format_registry.make_bzrdir('dirstate')
218
converter = tree.bzrdir._format.get_converter(target)
219
converter.convert(tree.bzrdir, progress.DummyProgress())
220
new_tree = workingtree.WorkingTree.open('tree')
221
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
222
self.assertEqual(rev_id, new_tree.last_revision())
223
for path in ['basis-inventory-cache', 'inventory', 'last-revision',
224
'pending-merges', 'stat-cache']:
225
self.failIfExists('tree/.bzr/checkout/' + path)
227
def test_convert_knit_merges_dirstate(self):
228
tree = self.make_branch_and_tree('tree', format='knit')
229
rev_id = tree.commit('first post')
230
merge_tree = tree.bzrdir.sprout('tree2').open_workingtree()
231
rev_id2 = tree.commit('second post')
232
rev_id3 = merge_tree.commit('second merge post')
233
tree.merge_from_branch(merge_tree.branch)
234
target = bzrdir.format_registry.make_bzrdir('dirstate')
235
converter = tree.bzrdir._format.get_converter(target)
236
converter.convert(tree.bzrdir, progress.DummyProgress())
237
new_tree = workingtree.WorkingTree.open('tree')
238
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
239
self.assertEqual(rev_id2, new_tree.last_revision())
240
self.assertEqual([rev_id2, rev_id3], new_tree.get_parent_ids())
241
for path in ['basis-inventory-cache', 'inventory', 'last-revision',
242
'pending-merges', 'stat-cache']:
243
self.failIfExists('tree/.bzr/checkout/' + path)
189
246
_upgrade1_template = \