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

  • Committer: John Arbash Meinel
  • Date: 2007-07-11 23:45:20 UTC
  • mfrom: (2601 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2643.
  • Revision ID: john@arbash-meinel.com-20070711234520-do3h7zw8skbathpz
[merge] bzr.dev 2601

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 
22
22
from bzrlib.lazy_import import lazy_import
23
23
lazy_import(globals(), """
24
 
from copy import deepcopy
25
 
import unittest
26
24
 
27
25
from bzrlib import (
28
26
    errors,
302
300
        """
303
301
        raise NotImplementedError(self.get_lines)
304
302
 
305
 
    def get_ancestry(self, version_ids):
 
303
    def get_ancestry(self, version_ids, topo_sorted=True):
306
304
        """Return a list of all ancestors of given version(s). This
307
305
        will not include the null revision.
308
306
 
 
307
        This list will not be topologically sorted if topo_sorted=False is
 
308
        passed.
 
309
 
309
310
        Must raise RevisionNotPresent if any of the given versions are
310
311
        not present in file history."""
311
312
        if isinstance(version_ids, basestring):
681
682
                    else:
682
683
                        new_version_ids.add(version)
683
684
                return new_version_ids
684
 
 
685
 
 
686
 
class InterVersionedFileTestProviderAdapter(object):
687
 
    """A tool to generate a suite testing multiple inter versioned-file classes.
688
 
 
689
 
    This is done by copying the test once for each InterVersionedFile provider
690
 
    and injecting the transport_server, transport_readonly_server,
691
 
    versionedfile_factory and versionedfile_factory_to classes into each copy.
692
 
    Each copy is also given a new id() to make it easy to identify.
693
 
    """
694
 
 
695
 
    def __init__(self, transport_server, transport_readonly_server, formats):
696
 
        self._transport_server = transport_server
697
 
        self._transport_readonly_server = transport_readonly_server
698
 
        self._formats = formats
699
 
    
700
 
    def adapt(self, test):
701
 
        result = unittest.TestSuite()
702
 
        for (interversionedfile_class,
703
 
             versionedfile_factory,
704
 
             versionedfile_factory_to) in self._formats:
705
 
            new_test = deepcopy(test)
706
 
            new_test.transport_server = self._transport_server
707
 
            new_test.transport_readonly_server = self._transport_readonly_server
708
 
            new_test.interversionedfile_class = interversionedfile_class
709
 
            new_test.versionedfile_factory = versionedfile_factory
710
 
            new_test.versionedfile_factory_to = versionedfile_factory_to
711
 
            def make_new_test_id():
712
 
                new_id = "%s(%s)" % (new_test.id(), interversionedfile_class.__name__)
713
 
                return lambda: new_id
714
 
            new_test.id = make_new_test_id()
715
 
            result.addTest(new_test)
716
 
        return result
717
 
 
718
 
    @staticmethod
719
 
    def default_test_list():
720
 
        """Generate the default list of interversionedfile permutations to test."""
721
 
        from bzrlib.weave import WeaveFile
722
 
        from bzrlib.knit import KnitVersionedFile
723
 
        result = []
724
 
        # test the fallback InterVersionedFile from annotated knits to weave
725
 
        result.append((InterVersionedFile, 
726
 
                       KnitVersionedFile,
727
 
                       WeaveFile))
728
 
        for optimiser in InterVersionedFile._optimisers:
729
 
            result.append((optimiser,
730
 
                           optimiser._matching_file_from_factory,
731
 
                           optimiser._matching_file_to_factory
732
 
                           ))
733
 
        # if there are specific combinations we want to use, we can add them 
734
 
        # here.
735
 
        return result