~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_interrepository/__init__.py

Merge bzr.dev, update to use new hooks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
"""
27
27
 
28
28
 
29
 
from bzrlib import transport
 
29
from bzrlib import (
 
30
    pyutils,
 
31
    transport,
 
32
    )
30
33
from bzrlib.errors import (
31
34
    FileExists,
32
35
    UninitializableFormat,
33
36
    )
34
37
 
35
38
from bzrlib.repository import (
 
39
    format_registry,
36
40
    InterRepository,
37
41
    )
38
42
from bzrlib.tests import (
39
 
                          default_transport,
40
 
                          multiply_tests,
41
 
                          )
 
43
    TestSkipped,
 
44
    default_transport,
 
45
    multiply_tests,
 
46
    )
42
47
from bzrlib.tests.per_controldir.test_controldir import TestCaseWithControlDir
 
48
from bzrlib.vf_repository import (
 
49
    InterDifferingSerializer,
 
50
    )
43
51
 
44
52
 
45
53
def make_scenarios(transport_server, transport_readonly_server, formats):
68
76
    from bzrlib.repofmt import (
69
77
        groupcompress_repo,
70
78
        knitrepo,
71
 
        pack_repo,
72
 
        weaverepo,
 
79
        knitpack_repo,
73
80
        )
74
81
    result = []
75
 
    def add_combo(label, from_format, to_format, extra_setup=None):
 
82
    def add_combo(interrepo_cls, from_format, to_format, extra_setup=None,
 
83
                  label=None):
 
84
        if label is None:
 
85
            label = interrepo_cls.__name__
76
86
        result.append((label, from_format, to_format, extra_setup))
77
87
    # test the default InterRepository between format 6 and the current
78
88
    # default format.
84
94
    for optimiser_class in InterRepository._optimisers:
85
95
        format_to_test = optimiser_class._get_repo_format_to_test()
86
96
        if format_to_test is not None:
87
 
            add_combo(optimiser_class.__name__, format_to_test, format_to_test)
 
97
            add_combo(optimiser_class, format_to_test, format_to_test)
88
98
    # if there are specific combinations we want to use, we can add them
89
99
    # here. We want to test rich root upgrading.
90
100
    # XXX: although we attach InterRepository class names to these scenarios,
93
103
    def force_known_graph(testcase):
94
104
        from bzrlib.fetch import Inter1and2Helper
95
105
        testcase.overrideAttr(Inter1and2Helper, 'known_graph_threshold', -1)
96
 
    add_combo('InterRepository',
97
 
              weaverepo.RepositoryFormat5(),
98
 
              knitrepo.RepositoryFormatKnit3())
99
 
    add_combo('InterRepository',
100
 
              knitrepo.RepositoryFormatKnit1(),
101
 
              knitrepo.RepositoryFormatKnit3())
102
 
    add_combo('InterKnitRepo',
103
 
              knitrepo.RepositoryFormatKnit1(),
104
 
              pack_repo.RepositoryFormatKnitPack1())
105
 
    add_combo('InterKnitRepo',
106
 
              pack_repo.RepositoryFormatKnitPack1(),
 
106
    # Gather extra scenarios from the repository implementations,
 
107
    # as InterRepositories can be used by Repository implementations
 
108
    # they aren't aware of.
 
109
    for module_name in format_registry._get_all_modules():
 
110
        module = pyutils.get_named_object(module_name)
 
111
        try:
 
112
            get_extra_interrepo_test_combinations = getattr(
 
113
                module,
 
114
                "get_extra_interrepo_test_combinations")
 
115
        except AttributeError:
 
116
            continue
 
117
        for (interrepo_cls, from_format, to_format) in (
 
118
            get_extra_interrepo_test_combinations()):
 
119
            add_combo(interrepo_cls, from_format, to_format)
 
120
    add_combo(InterRepository,
 
121
              knitrepo.RepositoryFormatKnit1(),
 
122
              knitrepo.RepositoryFormatKnit3())
 
123
    add_combo(knitrepo.InterKnitRepo,
 
124
              knitrepo.RepositoryFormatKnit1(),
 
125
              knitpack_repo.RepositoryFormatKnitPack1())
 
126
    add_combo(knitrepo.InterKnitRepo,
 
127
              knitpack_repo.RepositoryFormatKnitPack1(),
107
128
              knitrepo.RepositoryFormatKnit1())
108
 
    add_combo('InterKnitRepo',
 
129
    add_combo(knitrepo.InterKnitRepo,
109
130
              knitrepo.RepositoryFormatKnit3(),
110
 
              pack_repo.RepositoryFormatKnitPack3())
111
 
    add_combo('InterKnitRepo',
112
 
              pack_repo.RepositoryFormatKnitPack3(),
 
131
              knitpack_repo.RepositoryFormatKnitPack3())
 
132
    add_combo(knitrepo.InterKnitRepo,
 
133
              knitpack_repo.RepositoryFormatKnitPack3(),
113
134
              knitrepo.RepositoryFormatKnit3())
114
 
    add_combo('InterKnitRepo',
115
 
              pack_repo.RepositoryFormatKnitPack3(),
116
 
              pack_repo.RepositoryFormatKnitPack4())
117
 
    add_combo('InterDifferingSerializer',
118
 
              pack_repo.RepositoryFormatKnitPack1(),
119
 
              pack_repo.RepositoryFormatKnitPack6RichRoot())
120
 
    add_combo('InterDifferingSerializer+get_known_graph_ancestry',
121
 
              pack_repo.RepositoryFormatKnitPack1(),
122
 
              pack_repo.RepositoryFormatKnitPack6RichRoot(),
 
135
    add_combo(knitrepo.InterKnitRepo,
 
136
              knitpack_repo.RepositoryFormatKnitPack3(),
 
137
              knitpack_repo.RepositoryFormatKnitPack4())
 
138
    add_combo(InterDifferingSerializer,
 
139
              knitpack_repo.RepositoryFormatKnitPack1(),
 
140
              knitpack_repo.RepositoryFormatKnitPack6RichRoot())
 
141
    add_combo(InterDifferingSerializer,
 
142
              knitpack_repo.RepositoryFormatKnitPack1(),
 
143
              knitpack_repo.RepositoryFormatKnitPack6RichRoot(),
123
144
              force_known_graph,
124
 
              )
125
 
    add_combo('InterDifferingSerializer',
126
 
              pack_repo.RepositoryFormatKnitPack6RichRoot(),
 
145
              label='InterDifferingSerializer+get_known_graph_ancestry')
 
146
    add_combo(InterDifferingSerializer,
 
147
              knitpack_repo.RepositoryFormatKnitPack6RichRoot(),
127
148
              groupcompress_repo.RepositoryFormat2a())
128
 
    add_combo('InterDifferingSerializer',
 
149
    add_combo(InterDifferingSerializer,
129
150
              groupcompress_repo.RepositoryFormat2a(),
130
 
              pack_repo.RepositoryFormatKnitPack6RichRoot())
131
 
    add_combo('InterRepository',
132
 
              groupcompress_repo.RepositoryFormatCHK2(),
133
 
              groupcompress_repo.RepositoryFormat2a())
134
 
    add_combo('InterDifferingSerializer',
135
 
              groupcompress_repo.RepositoryFormatCHK1(),
136
 
              groupcompress_repo.RepositoryFormat2a())
 
151
              knitpack_repo.RepositoryFormatKnitPack6RichRoot())
137
152
    return result
138
153
 
139
154
 
144
159
        if self.extra_setup:
145
160
            self.extra_setup(self)
146
161
 
 
162
    def get_default_format(self):
 
163
        self.assertEquals(
 
164
            self.repository_format._matchingbzrdir.repository_format,
 
165
            self.repository_format)
 
166
        return self.repository_format._matchingbzrdir
 
167
 
147
168
    def make_branch(self, relpath, format=None):
148
169
        repo = self.make_repository(relpath, format=format)
149
170
        return repo.bzrdir.create_branch()