~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_versionedfile.py

  • Committer: Robert Collins
  • Date: 2007-07-19 06:34:09 UTC
  • mto: (2592.3.46 repository)
  • mto: This revision was merged to the branch mainline in revision 2651.
  • Revision ID: robertc@robertcollins.net-20070719063409-stu9sckrxp8wp3mo
LIBRARY API BREAKS:

  * KnitIndex.get_parents now returns tuples. (Robert Collins)

INTERNALS:

  * Unused functions on the private interface KnitIndex have been removed.
    (Robert Collins)

  * New ``knit.KnitGraphIndex`` which provides a ``KnitIndex`` layered on top
    of a ``index.GraphIndex``. (Robert Collins)

  * New ``knit.KnitVersionedFile.iter_parents`` method that allows querying
    the parents of many knit nodes at once, reducing round trips to the 
    underlying index. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
453
453
    def test_get_graph(self):
454
454
        f = self.get_file()
455
455
        graph = {
456
 
            'v1': [],
457
 
            'v2': ['v1'],
458
 
            'v3': ['v2']}
 
456
            'v1': (),
 
457
            'v2': ('v1', ),
 
458
            'v3': ('v2', )}
459
459
        self.build_graph(f, graph)
460
460
        self.assertEqual(graph, f.get_graph())
461
461
    
463
463
        f = self.get_file()
464
464
        complex_graph = {}
465
465
        simple_a = {
466
 
            'c': [],
467
 
            'b': ['c'],
468
 
            'a': ['b'],
 
466
            'c': (),
 
467
            'b': ('c', ),
 
468
            'a': ('b', ),
469
469
            }
470
470
        complex_graph.update(simple_a)
471
471
        simple_b = {
472
 
            'c': [],
473
 
            'b': ['c'],
 
472
            'c': (),
 
473
            'b': ('c', ),
474
474
            }
475
475
        complex_graph.update(simple_b)
476
476
        simple_gam = {
477
 
            'c': [],
478
 
            'oo': [],
479
 
            'bar': ['oo', 'c'],
480
 
            'gam': ['bar'],
 
477
            'c': (),
 
478
            'oo': (),
 
479
            'bar': ('oo', 'c'),
 
480
            'gam': ('bar', ),
481
481
            }
482
482
        complex_graph.update(simple_gam)
483
483
        simple_b_gam = {}
560
560
        """Open the versioned file from disk again."""
561
561
        raise NotImplementedError(self.reopen_file)
562
562
 
 
563
    def test_iter_parents(self):
 
564
        """iter_parents returns the parents for many nodes."""
 
565
        f = self.get_file()
 
566
        # sample data:
 
567
        # no parents
 
568
        f.add_lines('r0', [], ['a\n', 'b\n'])
 
569
        # 1 parents
 
570
        f.add_lines('r1', ['r0'], ['a\n', 'b\n'])
 
571
        # 2 parents
 
572
        f.add_lines('r2', ['r1', 'r0'], ['a\n', 'b\n'])
 
573
        # XXX TODO a ghost
 
574
        # cases: each sample data individually:
 
575
        self.assertEqual(set([('r0', ())]),
 
576
            set(f.iter_parents(['r0'])))
 
577
        self.assertEqual(set([('r1', ('r0', ))]),
 
578
            set(f.iter_parents(['r1'])))
 
579
        self.assertEqual(set([('r2', ('r1', 'r0'))]),
 
580
            set(f.iter_parents(['r2'])))
 
581
        # no nodes returned for a missing node
 
582
        self.assertEqual(set(),
 
583
            set(f.iter_parents(['missing'])))
 
584
        # 1 node returned with missing nodes skipped
 
585
        self.assertEqual(set([('r1', ('r0', ))]),
 
586
            set(f.iter_parents(['ghost1', 'r1', 'ghost'])))
 
587
        # 2 nodes returned
 
588
        self.assertEqual(set([('r0', ()), ('r1', ('r0', ))]),
 
589
            set(f.iter_parents(['r0', 'r1'])))
 
590
        # 2 nodes returned, missing skipped
 
591
        self.assertEqual(set([('r0', ()), ('r1', ('r0', ))]),
 
592
            set(f.iter_parents(['a', 'r0', 'b', 'r1', 'c'])))
 
593
 
563
594
    def test_iter_lines_added_or_present_in_versions(self):
564
595
        # test that we get at least an equalset of the lines added by
565
596
        # versions in the weave 
690
721
        # - these are ghost unaware and must not be reflect ghosts
691
722
        self.assertEqual(['notbxbfse'], vf.get_ancestry('notbxbfse'))
692
723
        self.assertEqual([], vf.get_parents('notbxbfse'))
693
 
        self.assertEqual({'notbxbfse':[]}, vf.get_graph())
 
724
        self.assertEqual({'notbxbfse':()}, vf.get_graph())
694
725
        self.assertFalse(self.callDeprecated([osutils._revision_id_warning],
695
726
                         vf.has_version, parent_id_unicode))
696
727
        self.assertFalse(vf.has_version(parent_id_utf8))
707
738
                            vf.add_lines, parent_id_unicode, [], [])
708
739
        self.assertEqual([parent_id_utf8, 'notbxbfse'], vf.get_ancestry(['notbxbfse']))
709
740
        self.assertEqual([parent_id_utf8], vf.get_parents('notbxbfse'))
710
 
        self.assertEqual({parent_id_utf8:[],
711
 
                          'notbxbfse':[parent_id_utf8],
 
741
        self.assertEqual({parent_id_utf8:(),
 
742
                          'notbxbfse':(parent_id_utf8, ),
712
743
                          },
713
744
                         vf.get_graph())
714
745
        self.assertTrue(self.callDeprecated([osutils._revision_id_warning],