/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2006 Canonical Ltd
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
2
# Authors: Robert Collins <robert.collins@canonical.com>
3
# -*- coding: utf-8 -*-
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
4
#
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
5
# This program is free software; you can redistribute it and/or modify
6
# it under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 2 of the License, or
8
# (at your option) any later version.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
9
#
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
10
# This program is distributed in the hope that it will be useful,
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
# GNU General Public License for more details.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
14
#
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
15
# You should have received a copy of the GNU General Public License
16
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
17
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
18
19
20
"""InterRepository implementation tests for bzr.
21
22
These test the conformance of all the interrepository variations to the
23
expected API including generally applicable corner cases.
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
24
Specific tests for individual formats are in the tests/test_repository.py file
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
25
rather than in tests/interrepository_implementations/*.py.
26
"""
27
3380.1.4 by Aaron Bentley
Split interrepository fetch tests into their own file
28
29
from bzrlib.errors import (
30
    FileExists,
31
    UninitializableFormat,
32
    )
33
2241.1.4 by Martin Pool
Moved old weave-based repository formats into bzrlib.repofmt.weaverepo.
34
from bzrlib.repository import (
4257.3.8 by Andrew Bennetts
Fix TestCase.make_branch_builder to make a branch in the specified format. Also add an interrepo test scenario for KnitPack1 -> KnitPack6RichRoot, which fails.
35
    InterRepository,
36
    )
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
37
from bzrlib.tests import (
38
                          default_transport,
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
39
                          multiply_tests,
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
40
                          )
3380.1.4 by Aaron Bentley
Split interrepository fetch tests into their own file
41
from bzrlib.tests.bzrdir_implementations.test_bzrdir import TestCaseWithBzrDir
42
from bzrlib.transport import get_transport
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
43
44
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
45
def make_scenarios(transport_server, transport_readonly_server, formats):
46
    """Transform the input formats to a list of scenarios.
2553.2.4 by Robert Collins
Treat InterRepositoryTestProviderAdapter like RepositoryTestProviderAdapter
47
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
48
    :param formats: A list of tuples:
49
        (interrepo_class, repository_format, repository_format_to).
2553.2.4 by Robert Collins
Treat InterRepositoryTestProviderAdapter like RepositoryTestProviderAdapter
50
    """
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
51
    result = []
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
52
    for repository_format, repository_format_to in formats:
53
        id = '%s,%s' % (repository_format.__class__.__name__,
54
                        repository_format_to.__class__.__name__)
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
55
        scenario = (id,
56
            {"transport_server": transport_server,
57
             "transport_readonly_server": transport_readonly_server,
58
             "repository_format": repository_format,
59
             "repository_format_to": repository_format_to,
60
             })
61
        result.append(scenario)
62
    return result
63
64
65
def default_test_list():
66
    """Generate the default list of interrepo permutations to test."""
4476.3.4 by Andrew Bennetts
Network serialisation, and most tests passing with InterDifferingSerializer commented out.
67
    from bzrlib.repofmt import (
68
        knitrepo, pack_repo, weaverepo, groupcompress_repo,
69
        )
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
70
    result = []
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
71
    def add_combo(from_format, to_format):
72
        result.append((from_format, to_format))
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
73
    # test the default InterRepository between format 6 and the current
74
    # default format.
75
    # XXX: robertc 20060220 reinstate this when there are two supported
76
    # formats which do not have an optimal code path between them.
77
    #result.append((InterRepository,
78
    #               RepositoryFormat6(),
79
    #               RepositoryFormatKnit1()))
80
    for optimiser_class in InterRepository._optimisers:
81
        format_to_test = optimiser_class._get_repo_format_to_test()
82
        if format_to_test is not None:
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
83
            add_combo(format_to_test, format_to_test)
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
84
    # if there are specific combinations we want to use, we can add them
85
    # here. We want to test rich root upgrading.
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
86
    add_combo(weaverepo.RepositoryFormat5(),
87
              knitrepo.RepositoryFormatKnit3())
88
    add_combo(knitrepo.RepositoryFormatKnit1(),
89
              knitrepo.RepositoryFormatKnit3())
90
    add_combo(knitrepo.RepositoryFormatKnit1(),
4476.3.10 by Andrew Bennetts
Fix streaming of inventory records in get_stream_for_missing_keys, plus other tweaks.
91
              pack_repo.RepositoryFormatKnitPack1())
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
92
    add_combo(pack_repo.RepositoryFormatKnitPack1(),
4476.3.10 by Andrew Bennetts
Fix streaming of inventory records in get_stream_for_missing_keys, plus other tweaks.
93
              knitrepo.RepositoryFormatKnit1())
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
94
    add_combo(knitrepo.RepositoryFormatKnit3(),
4476.3.10 by Andrew Bennetts
Fix streaming of inventory records in get_stream_for_missing_keys, plus other tweaks.
95
              pack_repo.RepositoryFormatKnitPack3())
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
96
    add_combo(pack_repo.RepositoryFormatKnitPack3(),
4476.3.10 by Andrew Bennetts
Fix streaming of inventory records in get_stream_for_missing_keys, plus other tweaks.
97
              knitrepo.RepositoryFormatKnit3())
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
98
    add_combo(pack_repo.RepositoryFormatKnitPack3(),
4476.3.10 by Andrew Bennetts
Fix streaming of inventory records in get_stream_for_missing_keys, plus other tweaks.
99
              pack_repo.RepositoryFormatKnitPack4())
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
100
    add_combo(pack_repo.RepositoryFormatKnitPack1(),
4476.3.10 by Andrew Bennetts
Fix streaming of inventory records in get_stream_for_missing_keys, plus other tweaks.
101
              pack_repo.RepositoryFormatKnitPack6RichRoot())
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
102
    add_combo(pack_repo.RepositoryFormatKnitPack6RichRoot(),
4476.3.10 by Andrew Bennetts
Fix streaming of inventory records in get_stream_for_missing_keys, plus other tweaks.
103
              groupcompress_repo.RepositoryFormat2a())
4476.3.22 by Andrew Bennetts
Remove InterDifferingSerializer.
104
    add_combo(groupcompress_repo.RepositoryFormat2a(),
4476.3.10 by Andrew Bennetts
Fix streaming of inventory records in get_stream_for_missing_keys, plus other tweaks.
105
              pack_repo.RepositoryFormatKnitPack6RichRoot())
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
106
    return result
2553.2.4 by Robert Collins
Treat InterRepositoryTestProviderAdapter like RepositoryTestProviderAdapter
107
108
3380.1.4 by Aaron Bentley
Split interrepository fetch tests into their own file
109
class TestCaseWithInterRepository(TestCaseWithBzrDir):
110
111
    def setUp(self):
112
        super(TestCaseWithInterRepository, self).setUp()
113
114
    def make_branch(self, relpath, format=None):
115
        repo = self.make_repository(relpath, format=format)
116
        return repo.bzrdir.create_branch()
117
118
    def make_bzrdir(self, relpath, format=None):
119
        try:
120
            url = self.get_url(relpath)
121
            segments = url.split('/')
122
            if segments and segments[-1] not in ('', '.'):
123
                parent = '/'.join(segments[:-1])
124
                t = get_transport(parent)
125
                try:
126
                    t.mkdir(segments[-1])
127
                except FileExists:
128
                    pass
129
            if format is None:
130
                format = self.repository_format._matchingbzrdir
131
            return format.initialize(url)
132
        except UninitializableFormat:
133
            raise TestSkipped("Format %s is not initializable." % format)
134
135
    def make_repository(self, relpath, format=None):
136
        made_control = self.make_bzrdir(relpath, format=format)
137
        return self.repository_format.initialize(made_control)
138
139
    def make_to_repository(self, relpath):
140
        made_control = self.make_bzrdir(relpath,
141
            self.repository_format_to._matchingbzrdir)
142
        return self.repository_format_to.initialize(made_control)
143
144
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
145
def load_tests(standard_tests, module, loader):
146
    submod_tests = loader.loadTestsFromModuleNames([
3380.1.4 by Aaron Bentley
Split interrepository fetch tests into their own file
147
        'bzrlib.tests.interrepository_implementations.test_fetch',
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
148
        'bzrlib.tests.interrepository_implementations.test_interrepository',
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
149
        ])
150
    scenarios = make_scenarios(
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
151
        default_transport,
152
        # None here will cause a readonly decorator to be created
153
        # by the TestCaseWithTransport.get_readonly_transport method.
154
        None,
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
155
        default_test_list()
1534.1.29 by Robert Collins
Add a test environment for InterRepository objects, and remove the fetch corner case tests from test_repository.
156
        )
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
157
    return multiply_tests(submod_tests, scenarios, standard_tests)