322
319
self.assertTrue(1 >= self._count_log_matches('last-revision',
324
321
self.assertEqual(4, len(http_logs))
324
class Test1To2Fetch(TestCaseWithTransport):
325
"""Tests for Model1To2 failure modes"""
327
def make_tree_and_repo(self):
328
self.tree = self.make_branch_and_tree('tree', format='pack-0.92')
329
self.repo = self.make_repository('rich-repo', format='rich-root-pack')
330
self.repo.lock_write()
331
self.addCleanup(self.repo.unlock)
333
def do_fetch_order_test(self, first, second):
334
"""Test that fetch works no matter what the set order of revision is.
336
This test depends on the order of items in a set, which is
337
implementation-dependant, so we test A, B and then B, A.
339
self.make_tree_and_repo()
340
self.tree.commit('Commit 1', rev_id=first)
341
self.tree.commit('Commit 2', rev_id=second)
342
self.repo.fetch(self.tree.branch.repository, second)
344
def test_fetch_order_AB(self):
345
"""See do_fetch_order_test"""
346
self.do_fetch_order_test('A', 'B')
348
def test_fetch_order_BA(self):
349
"""See do_fetch_order_test"""
350
self.do_fetch_order_test('B', 'A')
352
def get_parents(self, file_id, revision_id):
353
transaction = self.repo.get_transaction()
354
vf = self.repo.weave_store.get_weave(file_id, transaction)
355
return vf.get_parents_with_ghosts(revision_id)
357
def test_fetch_ghosts(self):
358
self.make_tree_and_repo()
359
self.tree.commit('first commit', rev_id='left-parent')
360
self.tree.add_parent_tree_id('ghost-parent')
361
fork = self.tree.bzrdir.sprout('fork', 'null:').open_workingtree()
362
fork.commit('not a ghost', rev_id='not-ghost-parent')
363
self.tree.branch.repository.fetch(fork.branch.repository,
365
self.tree.add_parent_tree_id('not-ghost-parent')
366
self.tree.commit('second commit', rev_id='second-id')
367
self.repo.fetch(self.tree.branch.repository, 'second-id')
368
root_id = self.tree.get_root_id()
369
self.assertEqual(['left-parent', 'ghost-parent', 'not-ghost-parent'],
370
self.get_parents(root_id, 'second-id'))
372
def make_two_commits(self, change_root, fetch_twice):
373
self.make_tree_and_repo()
374
self.tree.commit('first commit', rev_id='first-id')
376
self.tree.set_root_id('unique-id')
377
self.tree.commit('second commit', rev_id='second-id')
379
self.repo.fetch(self.tree.branch.repository, 'first-id')
380
self.repo.fetch(self.tree.branch.repository, 'second-id')
382
def test_fetch_changed_root(self):
383
self.make_two_commits(change_root=True, fetch_twice=False)
384
self.assertEqual([], self.get_parents('unique-id', 'second-id'))
386
def test_two_fetch_changed_root(self):
387
self.make_two_commits(change_root=True, fetch_twice=True)
388
self.assertEqual([], self.get_parents('unique-id', 'second-id'))
390
def test_two_fetches(self):
391
self.make_two_commits(change_root=False, fetch_twice=True)
392
self.assertEqual(['first-id'],
393
self.get_parents('TREE_ROOT', 'second-id'))