~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_versionedfile.py

Clean up the lock.py code to use less indenting, and conform to better coding practise.

Show diffs side-by-side

added added

removed removed

Lines of Context:
247
247
        self.assertEqual(['line'], f.get_lines('eolbeforefirstparent'))
248
248
        #self.assertTrue(deltas['eolbeforefirstparent'] in expected_deltas)
249
249
 
250
 
    def test_make_mpdiffs(self):
251
 
        from bzrlib import multiparent
252
 
        vf = self.get_file('foo')
253
 
        sha1s = self._setup_for_deltas(vf)
254
 
        new_vf = self.get_file('bar')
255
 
        for version in multiparent.topo_iter(vf):
256
 
            mpdiff = vf.make_mpdiffs([version])[0]
257
 
            new_vf.add_mpdiffs([(version, vf.get_parents(version),
258
 
                                 vf.get_sha1(version), mpdiff)])
259
 
            self.assertEqualDiff(vf.get_text(version),
260
 
                                 new_vf.get_text(version))
261
 
 
262
250
    def _setup_for_deltas(self, f):
263
251
        self.assertRaises(errors.RevisionNotPresent, f.get_delta, 'base')
264
252
        # add texts that should trip the knit maximum delta chain threshold
396
384
        self.assertRaises(RevisionNotPresent,
397
385
            f.get_ancestry, ['rM', 'rX'])
398
386
 
399
 
        self.assertEqual(set(f.get_ancestry('rM')),
400
 
            set(f.get_ancestry('rM', topo_sorted=False)))
401
 
 
402
387
    def test_mutate_after_finish(self):
403
388
        f = self.get_file()
404
389
        f.transaction_finished()
465
450
    def test_get_graph(self):
466
451
        f = self.get_file()
467
452
        graph = {
468
 
            'v1': (),
469
 
            'v2': ('v1', ),
470
 
            'v3': ('v2', )}
 
453
            'v1': [],
 
454
            'v2': ['v1'],
 
455
            'v3': ['v2']}
471
456
        self.build_graph(f, graph)
472
457
        self.assertEqual(graph, f.get_graph())
473
458
    
475
460
        f = self.get_file()
476
461
        complex_graph = {}
477
462
        simple_a = {
478
 
            'c': (),
479
 
            'b': ('c', ),
480
 
            'a': ('b', ),
 
463
            'c': [],
 
464
            'b': ['c'],
 
465
            'a': ['b'],
481
466
            }
482
467
        complex_graph.update(simple_a)
483
468
        simple_b = {
484
 
            'c': (),
485
 
            'b': ('c', ),
 
469
            'c': [],
 
470
            'b': ['c'],
486
471
            }
487
472
        complex_graph.update(simple_b)
488
473
        simple_gam = {
489
 
            'c': (),
490
 
            'oo': (),
491
 
            'bar': ('oo', 'c'),
492
 
            'gam': ('bar', ),
 
474
            'c': [],
 
475
            'oo': [],
 
476
            'bar': ['oo', 'c'],
 
477
            'gam': ['bar'],
493
478
            }
494
479
        complex_graph.update(simple_gam)
495
480
        simple_b_gam = {}
572
557
        """Open the versioned file from disk again."""
573
558
        raise NotImplementedError(self.reopen_file)
574
559
 
575
 
    def test_iter_parents(self):
576
 
        """iter_parents returns the parents for many nodes."""
577
 
        f = self.get_file()
578
 
        # sample data:
579
 
        # no parents
580
 
        f.add_lines('r0', [], ['a\n', 'b\n'])
581
 
        # 1 parents
582
 
        f.add_lines('r1', ['r0'], ['a\n', 'b\n'])
583
 
        # 2 parents
584
 
        f.add_lines('r2', ['r1', 'r0'], ['a\n', 'b\n'])
585
 
        # XXX TODO a ghost
586
 
        # cases: each sample data individually:
587
 
        self.assertEqual(set([('r0', ())]),
588
 
            set(f.iter_parents(['r0'])))
589
 
        self.assertEqual(set([('r1', ('r0', ))]),
590
 
            set(f.iter_parents(['r1'])))
591
 
        self.assertEqual(set([('r2', ('r1', 'r0'))]),
592
 
            set(f.iter_parents(['r2'])))
593
 
        # no nodes returned for a missing node
594
 
        self.assertEqual(set(),
595
 
            set(f.iter_parents(['missing'])))
596
 
        # 1 node returned with missing nodes skipped
597
 
        self.assertEqual(set([('r1', ('r0', ))]),
598
 
            set(f.iter_parents(['ghost1', 'r1', 'ghost'])))
599
 
        # 2 nodes returned
600
 
        self.assertEqual(set([('r0', ()), ('r1', ('r0', ))]),
601
 
            set(f.iter_parents(['r0', 'r1'])))
602
 
        # 2 nodes returned, missing skipped
603
 
        self.assertEqual(set([('r0', ()), ('r1', ('r0', ))]),
604
 
            set(f.iter_parents(['a', 'r0', 'b', 'r1', 'c'])))
605
 
 
606
560
    def test_iter_lines_added_or_present_in_versions(self):
607
561
        # test that we get at least an equalset of the lines added by
608
562
        # versions in the weave 
733
687
        # - these are ghost unaware and must not be reflect ghosts
734
688
        self.assertEqual(['notbxbfse'], vf.get_ancestry('notbxbfse'))
735
689
        self.assertEqual([], vf.get_parents('notbxbfse'))
736
 
        self.assertEqual({'notbxbfse':()}, vf.get_graph())
 
690
        self.assertEqual({'notbxbfse':[]}, vf.get_graph())
737
691
        self.assertFalse(self.callDeprecated([osutils._revision_id_warning],
738
692
                         vf.has_version, parent_id_unicode))
739
693
        self.assertFalse(vf.has_version(parent_id_utf8))
750
704
                            vf.add_lines, parent_id_unicode, [], [])
751
705
        self.assertEqual([parent_id_utf8, 'notbxbfse'], vf.get_ancestry(['notbxbfse']))
752
706
        self.assertEqual([parent_id_utf8], vf.get_parents('notbxbfse'))
753
 
        self.assertEqual({parent_id_utf8:(),
754
 
                          'notbxbfse':(parent_id_utf8, ),
 
707
        self.assertEqual({parent_id_utf8:[],
 
708
                          'notbxbfse':[parent_id_utf8],
755
709
                          },
756
710
                         vf.get_graph())
757
711
        self.assertTrue(self.callDeprecated([osutils._revision_id_warning],
819
773
            '3f786850e387550fdab836ed7e6dc881de23001b', vf.get_sha1('b'))
820
774
        self.assertEqual(
821
775
            '86f7e437faa5a7fce15d1ddcb9eaeaea377667b8', vf.get_sha1('c'))
822
 
 
823
 
        self.assertEqual(['3f786850e387550fdab836ed7e6dc881de23001b',
824
 
                          '86f7e437faa5a7fce15d1ddcb9eaeaea377667b8',
825
 
                          '3f786850e387550fdab836ed7e6dc881de23001b'],
826
 
                          vf.get_sha1s(['a', 'c', 'b']))
827
776
        
828
777
 
829
778
class TestWeave(TestCaseWithTransport, VersionedFileTestMixIn):