/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/test_versionedfile.py

  • Committer: Andrew Bennetts
  • Date: 2008-04-07 10:34:57 UTC
  • mfrom: (3344 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3349.
  • Revision ID: andrew.bennetts@canonical.com-20080407103457-ro4t95pd3imwt0zw
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
    KnitAnnotateFactory,
40
40
    KnitPlainFactory,
41
41
    )
 
42
from bzrlib.symbol_versioning import one_four
42
43
from bzrlib.tests import TestCaseWithMemoryTransport, TestSkipped
43
44
from bzrlib.tests.http_utils import TestCaseWithWebserver
44
45
from bzrlib.trace import mutter
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
 
    
 
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,
379
379
        verify_file(f)
380
380
        verify_file(self.reopen_file())
381
381
 
382
 
    def test_create_empty(self):
383
 
        f = self.get_file()
384
 
        f.add_lines('0', [], ['a\n'])
385
 
        new_f = f.create_empty('t', MemoryTransport())
386
 
        # smoke test, specific types should check it is honoured correctly for
387
 
        # non type attributes
388
 
        self.assertEqual([], new_f.versions())
389
 
        self.assertTrue(isinstance(new_f, f.__class__))
390
 
 
391
382
    def test_copy_to(self):
392
383
        f = self.get_file()
393
384
        f.add_lines('0', [], ['a\n'])
453
444
        f.add_lines('r2', [], ['a\n', 'b\n'])
454
445
        f.add_lines('r3', [], ['a\n', 'b\n'])
455
446
        f.add_lines('m', ['r0', 'r1', 'r2', 'r3'], ['a\n', 'b\n'])
456
 
        self.assertEquals(f.get_parents('m'), ['r0', 'r1', 'r2', 'r3'])
457
 
 
 
447
        self.assertEqual(['r0', 'r1', 'r2', 'r3'],
 
448
            self.applyDeprecated(one_four, f.get_parents, 'm'))
458
449
        self.assertRaises(RevisionNotPresent,
459
 
            f.get_parents, 'y')
 
450
            self.applyDeprecated, one_four, f.get_parents, 'y')
 
451
 
 
452
    def test_get_parent_map(self):
 
453
        f = self.get_file()
 
454
        f.add_lines('r0', [], ['a\n', 'b\n'])
 
455
        self.assertEqual(
 
456
            {'r0':()}, f.get_parent_map(['r0']))
 
457
        f.add_lines('r1', ['r0'], ['a\n', 'b\n'])
 
458
        self.assertEqual(
 
459
            {'r1':('r0',)}, f.get_parent_map(['r1']))
 
460
        self.assertEqual(
 
461
            {'r0':(),
 
462
             'r1':('r0',)},
 
463
            f.get_parent_map(['r0', 'r1']))
 
464
        f.add_lines('r2', [], ['a\n', 'b\n'])
 
465
        f.add_lines('r3', [], ['a\n', 'b\n'])
 
466
        f.add_lines('m', ['r0', 'r1', 'r2', 'r3'], ['a\n', 'b\n'])
 
467
        self.assertEqual(
 
468
            {'m':('r0', 'r1', 'r2', 'r3')}, f.get_parent_map(['m']))
 
469
        self.assertEqual({}, f.get_parent_map('y'))
 
470
        self.assertEqual(
 
471
            {'r0':(),
 
472
             'r1':('r0',)},
 
473
            f.get_parent_map(['r0', 'y', 'r1']))
460
474
 
461
475
    def test_annotate(self):
462
476
        f = self.get_file()
607
621
            vf.add_lines_with_ghosts('notbxbfse', [parent_id_utf8], [])
608
622
        except NotImplementedError:
609
623
            # check the other ghost apis are also not implemented
610
 
            self.assertRaises(NotImplementedError, vf.has_ghost, 'foo')
611
624
            self.assertRaises(NotImplementedError, vf.get_ancestry_with_ghosts, ['foo'])
612
625
            self.assertRaises(NotImplementedError, vf.get_parents_with_ghosts, 'foo')
613
 
            self.assertRaises(NotImplementedError, vf.get_graph_with_ghosts)
614
626
            return
615
627
        vf = self.reopen_file()
616
628
        # test key graph related apis: getncestry, _graph, get_parents
617
629
        # has_version
618
630
        # - these are ghost unaware and must not be reflect ghosts
619
631
        self.assertEqual(['notbxbfse'], vf.get_ancestry('notbxbfse'))
620
 
        self.assertEqual([], vf.get_parents('notbxbfse'))
 
632
        self.assertEqual([],
 
633
            self.applyDeprecated(one_four, vf.get_parents, 'notbxbfse'))
621
634
        self.assertEqual({'notbxbfse':()}, vf.get_graph())
622
635
        self.assertFalse(vf.has_version(parent_id_utf8))
623
636
        # we have _with_ghost apis to give us ghost information.
624
637
        self.assertEqual([parent_id_utf8, 'notbxbfse'], vf.get_ancestry_with_ghosts(['notbxbfse']))
625
638
        self.assertEqual([parent_id_utf8], vf.get_parents_with_ghosts('notbxbfse'))
626
 
        self.assertEqual({'notbxbfse':[parent_id_utf8]}, vf.get_graph_with_ghosts())
627
 
        self.assertTrue(vf.has_ghost(parent_id_utf8))
 
639
        self.assertEqual({'notbxbfse':(parent_id_utf8,)},
 
640
            self.applyDeprecated(one_four, vf.get_graph_with_ghosts))
 
641
        self.assertTrue(self.applyDeprecated(one_four, vf.has_ghost,
 
642
            parent_id_utf8))
628
643
        # if we add something that is a ghost of another, it should correct the
629
644
        # results of the prior apis
630
645
        vf.add_lines(parent_id_utf8, [], [])
631
646
        self.assertEqual([parent_id_utf8, 'notbxbfse'], vf.get_ancestry(['notbxbfse']))
632
 
        self.assertEqual([parent_id_utf8], vf.get_parents('notbxbfse'))
 
647
        self.assertEqual({'notbxbfse':(parent_id_utf8,)},
 
648
            vf.get_parent_map(['notbxbfse']))
633
649
        self.assertEqual({parent_id_utf8:(),
634
650
                          'notbxbfse':(parent_id_utf8, ),
635
651
                          },
639
655
        self.assertEqual([parent_id_utf8, 'notbxbfse'],
640
656
            vf.get_ancestry_with_ghosts(['notbxbfse']))
641
657
        self.assertEqual([parent_id_utf8], vf.get_parents_with_ghosts('notbxbfse'))
642
 
        self.assertEqual({parent_id_utf8:[],
643
 
                          'notbxbfse':[parent_id_utf8],
 
658
        self.assertEqual({parent_id_utf8:(),
 
659
                          'notbxbfse':(parent_id_utf8,),
644
660
                          },
645
 
                         vf.get_graph_with_ghosts())
646
 
        self.assertFalse(vf.has_ghost(parent_id_utf8))
 
661
            self.applyDeprecated(one_four, vf.get_graph_with_ghosts))
 
662
        self.assertFalse(self.applyDeprecated(one_four, vf.has_ghost,
 
663
            parent_id_utf8))
647
664
 
648
665
    def test_add_lines_with_ghosts_after_normal_revs(self):
649
666
        # some versioned file formats allow lines to be added with parent
653
670
        vf = self.get_file()
654
671
        # probe for ghost support
655
672
        try:
656
 
            vf.has_ghost('hoo')
 
673
            vf.add_lines_with_ghosts('base', [], ['line\n', 'line_b\n'])
657
674
        except NotImplementedError:
658
675
            return
659
 
        vf.add_lines_with_ghosts('base', [], ['line\n', 'line_b\n'])
660
676
        vf.add_lines_with_ghosts('references_ghost',
661
677
                                 ['base', 'a_ghost'],
662
678
                                 ['line\n', 'line_b\n', 'line_c\n'])
842
858
 
843
859
    def test_get_parents(self):
844
860
        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"')
 
861
        self.assertEqual({'B':('A',)}, self.plan_merge_vf.get_parent_map(['B']))
 
862
        self.assertEqual({'D':('C',)}, self.plan_merge_vf.get_parent_map(['D']))
 
863
        self.assertEqual({'E:':('B', 'D')},
 
864
            self.plan_merge_vf.get_parent_map(['E:']))
 
865
        self.assertEqual({}, self.plan_merge_vf.get_parent_map(['F']))
 
866
        self.assertEqual({
 
867
                'B':('A',),
 
868
                'D':('C',),
 
869
                'E:':('B', 'D'),
 
870
                }, self.plan_merge_vf.get_parent_map(['B', 'D', 'E:', 'F']))
851
871
 
852
872
    def test_get_lines(self):
853
873
        self.setup_abcde()