240
241
new_vf = self.get_file('bar')
241
242
for version in multiparent.topo_iter(vf):
242
243
mpdiff = vf.make_mpdiffs([version])[0]
243
new_vf.add_mpdiffs([(version, vf.get_parents(version),
244
new_vf.add_mpdiffs([(version, vf.get_parent_map([version])[version],
244
245
vf.get_sha1(version), mpdiff)])
245
246
self.assertEqualDiff(vf.get_text(version),
246
247
new_vf.get_text(version))
370
371
def verify_file(f):
371
372
self.assertEquals(f.get_lines('r1'), f.get_lines('r0'))
372
373
self.assertEquals(f.get_lines('r1'), ['a\n', 'b\n'])
373
self.assertEquals(f.get_parents('r1'), ['r0'])
374
self.assertEqual({'r1':('r0',)}, f.get_parent_map(['r1']))
375
375
self.assertRaises(RevisionNotPresent,
376
376
f.clone_text, 'r2', 'rX', [])
377
377
self.assertRaises(RevisionAlreadyPresent,
453
453
f.add_lines('r2', [], ['a\n', 'b\n'])
454
454
f.add_lines('r3', [], ['a\n', 'b\n'])
455
455
f.add_lines('m', ['r0', 'r1', 'r2', 'r3'], ['a\n', 'b\n'])
456
self.assertEquals(f.get_parents('m'), ['r0', 'r1', 'r2', 'r3'])
456
self.assertEqual(['r0', 'r1', 'r2', 'r3'],
457
self.applyDeprecated(one_four, f.get_parents, 'm'))
458
458
self.assertRaises(RevisionNotPresent,
459
self.applyDeprecated, one_four, f.get_parents, 'y')
461
def test_get_parent_map(self):
463
f.add_lines('r0', [], ['a\n', 'b\n'])
465
{'r0':()}, f.get_parent_map(['r0']))
466
f.add_lines('r1', ['r0'], ['a\n', 'b\n'])
468
{'r1':('r0',)}, f.get_parent_map(['r1']))
472
f.get_parent_map(['r0', 'r1']))
473
f.add_lines('r2', [], ['a\n', 'b\n'])
474
f.add_lines('r3', [], ['a\n', 'b\n'])
475
f.add_lines('m', ['r0', 'r1', 'r2', 'r3'], ['a\n', 'b\n'])
477
{'m':('r0', 'r1', 'r2', 'r3')}, f.get_parent_map(['m']))
478
self.assertEqual({}, f.get_parent_map('y'))
482
f.get_parent_map(['r0', 'y', 'r1']))
461
484
def test_annotate(self):
462
485
f = self.get_file()
618
641
# - these are ghost unaware and must not be reflect ghosts
619
642
self.assertEqual(['notbxbfse'], vf.get_ancestry('notbxbfse'))
620
self.assertEqual([], vf.get_parents('notbxbfse'))
644
self.applyDeprecated(one_four, vf.get_parents, 'notbxbfse'))
621
645
self.assertEqual({'notbxbfse':()}, vf.get_graph())
622
646
self.assertFalse(vf.has_version(parent_id_utf8))
623
647
# we have _with_ghost apis to give us ghost information.
624
648
self.assertEqual([parent_id_utf8, 'notbxbfse'], vf.get_ancestry_with_ghosts(['notbxbfse']))
625
649
self.assertEqual([parent_id_utf8], vf.get_parents_with_ghosts('notbxbfse'))
626
self.assertEqual({'notbxbfse':[parent_id_utf8]}, vf.get_graph_with_ghosts())
650
self.assertEqual({'notbxbfse':(parent_id_utf8,)}, vf.get_graph_with_ghosts())
627
651
self.assertTrue(vf.has_ghost(parent_id_utf8))
628
652
# if we add something that is a ghost of another, it should correct the
629
653
# results of the prior apis
630
654
vf.add_lines(parent_id_utf8, [], [])
631
655
self.assertEqual([parent_id_utf8, 'notbxbfse'], vf.get_ancestry(['notbxbfse']))
632
self.assertEqual([parent_id_utf8], vf.get_parents('notbxbfse'))
656
self.assertEqual({'notbxbfse':(parent_id_utf8,)},
657
vf.get_parent_map(['notbxbfse']))
633
658
self.assertEqual({parent_id_utf8:(),
634
659
'notbxbfse':(parent_id_utf8, ),
639
664
self.assertEqual([parent_id_utf8, 'notbxbfse'],
640
665
vf.get_ancestry_with_ghosts(['notbxbfse']))
641
666
self.assertEqual([parent_id_utf8], vf.get_parents_with_ghosts('notbxbfse'))
642
self.assertEqual({parent_id_utf8:[],
643
'notbxbfse':[parent_id_utf8],
667
self.assertEqual({parent_id_utf8:(),
668
'notbxbfse':(parent_id_utf8,),
645
670
vf.get_graph_with_ghosts())
646
671
self.assertFalse(vf.has_ghost(parent_id_utf8))
843
868
def test_get_parents(self):
844
869
self.setup_abcde()
845
self.assertEqual(['A'], self.plan_merge_vf.get_parents('B'))
846
self.assertEqual(['C'], self.plan_merge_vf.get_parents('D'))
847
self.assertEqual(['B', 'D'], self.plan_merge_vf.get_parents('E:'))
848
error = self.assertRaises(errors.RevisionNotPresent,
849
self.plan_merge_vf.get_parents, 'F')
850
self.assertContainsRe(str(error), '{F} not present in "root"')
870
self.assertEqual({'B':('A',)}, self.plan_merge_vf.get_parent_map(['B']))
871
self.assertEqual({'D':('C',)}, self.plan_merge_vf.get_parent_map(['D']))
872
self.assertEqual({'E:':('B', 'D')},
873
self.plan_merge_vf.get_parent_map(['E:']))
874
self.assertEqual({}, self.plan_merge_vf.get_parent_map(['F']))
879
}, self.plan_merge_vf.get_parent_map(['B', 'D', 'E:', 'F']))
852
881
def test_get_lines(self):
853
882
self.setup_abcde()