~bzr/ubuntu/lucid/bzr/beta-ppa

« back to all changes in this revision

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

  • Committer: Martin Pool
  • Date: 2010-07-02 07:29:40 UTC
  • mfrom: (129.1.7 packaging-karmic)
  • Revision ID: mbp@sourcefrog.net-20100702072940-hpzq5elg8wjve8rh
* PPA rebuild.
* PPA rebuild for Karmic.
* PPA rebuild for Jaunty.
* PPA rebuild for Hardy.
* From postinst, actually remove the example bash completion scripts.
  (LP: #249452)
* New upstream release.
* New upstream release.
* New upstream release.
* Revert change to Build-depends: Dapper does not have python-central.
  Should be python-support..
* Target ppa..
* Target ppa..
* Target ppa..
* Target ppa..
* New upstream release.
* Switch to dpkg-source 3.0 (quilt) format.
* Bump standards version to 3.8.4.
* Remove embedded copy of python-configobj. Closes: #555336
* Remove embedded copy of python-elementtree. Closes: #555343
* Change section from 'Devel' to 'Vcs'..
* Change section from 'Devel' to 'Vcs'..
* Change section from 'Devel' to 'Vcs'..
* Change section from 'Devel' to 'Vcs'..
* Change section from 'Devel' to 'Vcs'..
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* debian/control: Fix obsolete-relation-form-in-source
  lintian warning. 
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Split out docs into bzr-doc package.
* New upstream release.
* Added John Francesco Ferlito to Uploaders.
* Fix install path to quick-reference guide
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Fix FTBFS due to path changes, again.
* Fix FTBFS due to doc paths changing
* New upstream release.
* Fix FTBFS due to path changes, again.
* Fix FTBFS due to doc paths changing
* New upstream release.
* Fix FTBFS due to path changes, again.
* Fix FTBFS due to doc paths changing
* New upstream release.
* Fix FTBFS due to path changes, again, again.
* Fix FTBFS due to path changes, again.
* Fix FTBFS due to path changes.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Bump standards version to 3.8.3.
* Remove unused patch system.
* New upstream release.
* New upstream release.
* New upstream release.
* Fix copy and paste tab error in .install file
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
 + Fixes compatibility with Python 2.4. Closes: #537708
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream version.
* Bump standards version to 3.8.2.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Add python-pyrex to build-deps to ensure C extensions are always build.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Split documentation into bzr-doc package. ((LP: #385074)
* Multiple packaging changes to make us more linitan clean.
* New upstream release.
* Split documentation into bzr-doc package. ((LP: #385074)
* Multiple packaging changes to make us more linitan clean.
* New upstream release.
* Split documentation into bzr-doc package. ((LP: #385074)
* Multiple packaging changes to make us more linitan clean.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Fix API compatibility version. (Closes: #526233)
* New upstream release.
  + Fixes default format for upgrade command. (Closes: #464688)
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Add missing dependency on zlib development library. (Closes:
  #523595)
* Add zlib build-depends.
* Add zlib build-depends.
* Add zlib build-depends.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Move to section vcs.
* Bump standards version to 3.8.1.
* New upstream release.
* Remove temporary patch for missing .c files from distribution
* New upstream release.
* Remove temporary patch for missing .c files from distribution
* New upstream release.
* Remove temporary patch for missing .c files from distribution
* Add temporary patch for missing .c files from distribution
* Add temporary patch for missing .c files from distribution
* Add temporary patch for missing .c files from distribution
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Recommend ca-certificates. (Closes: #452024)
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Update watch file. bazaar now uses launchpad to host its sources.
* Remove patch for inventory root revision copy, applied upstream.
* New upstream release.
* New upstream release.
* New upstream release
* Force removal of files installed in error to /etc/bash_completion.d/
  (LP: #249452)
* New upstream release.
* New upstream release
* New upstream release.
* Bump standards version.
* Include patch for inventory root revision copy, required for bzr-svn.
* New upstream release.
* Remove unused lintian overrides.
* Correct the package version not to be native.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* New upstream release.
* Final 1.5 release.
* New upstream release.
* New upstream release.
* New upstream release.
* Add myself as a co-maintainer.
* Add a Dm-Upload-Allowed: yes header.
* New upstream bugfix release.
* New upstream release.
* Final 1.3 release.
* New upstream release.
* First release candidate of the upcoming 1.3 release.
* Rebuild to fix the problem caused by a build with a broken python-central.
* New upstream release.
* Rebuild for dapper PPA.
* Apply Lamont's patches to fix build-dependencies on dapper.
  (See: https://bugs.launchpad.net/bzr/+bug/189915)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2006 Canonical Ltd
 
2
# Authors: Robert Collins <robert.collins@canonical.com>
 
3
# -*- coding: utf-8 -*-
 
4
#
 
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.
 
9
#
 
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.
 
14
#
 
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
 
17
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
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.
 
24
Specific tests for individual formats are in the tests/test_repository.py file
 
25
rather than in tests/per_interrepository/*.py.
 
26
"""
 
27
 
 
28
 
 
29
from bzrlib.errors import (
 
30
    FileExists,
 
31
    UninitializableFormat,
 
32
    )
 
33
 
 
34
from bzrlib.repository import (
 
35
    InterRepository,
 
36
    )
 
37
from bzrlib.tests import (
 
38
                          default_transport,
 
39
                          multiply_tests,
 
40
                          )
 
41
from bzrlib.tests.per_bzrdir.test_bzrdir import TestCaseWithBzrDir
 
42
from bzrlib.transport import get_transport
 
43
 
 
44
 
 
45
def make_scenarios(transport_server, transport_readonly_server, formats):
 
46
    """Transform the input formats to a list of scenarios.
 
47
 
 
48
    :param formats: A list of tuples:
 
49
        (label, repository_format, repository_format_to).
 
50
    """
 
51
    result = []
 
52
    for label, repository_format, repository_format_to in formats:
 
53
        id = '%s,%s,%s' % (label, repository_format.__class__.__name__,
 
54
                           repository_format_to.__class__.__name__)
 
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."""
 
67
    from bzrlib.repofmt import (
 
68
        groupcompress_repo,
 
69
        knitrepo,
 
70
        pack_repo,
 
71
        weaverepo,
 
72
        )
 
73
    result = []
 
74
    def add_combo(label, from_format, to_format):
 
75
        result.append((label, from_format, to_format))
 
76
    # test the default InterRepository between format 6 and the current
 
77
    # default format.
 
78
    # XXX: robertc 20060220 reinstate this when there are two supported
 
79
    # formats which do not have an optimal code path between them.
 
80
    #result.append((InterRepository,
 
81
    #               RepositoryFormat6(),
 
82
    #               RepositoryFormatKnit1()))
 
83
    for optimiser_class in InterRepository._optimisers:
 
84
        format_to_test = optimiser_class._get_repo_format_to_test()
 
85
        if format_to_test is not None:
 
86
            add_combo(optimiser_class.__name__, format_to_test, format_to_test)
 
87
    # if there are specific combinations we want to use, we can add them
 
88
    # here. We want to test rich root upgrading.
 
89
    # XXX: although we attach InterRepository class names to these scenarios,
 
90
    # there's nothing asserting that these labels correspond to what is
 
91
    # actually used.
 
92
    add_combo('InterRepository',
 
93
              weaverepo.RepositoryFormat5(),
 
94
              knitrepo.RepositoryFormatKnit3())
 
95
    add_combo('InterRepository',
 
96
              knitrepo.RepositoryFormatKnit1(),
 
97
              knitrepo.RepositoryFormatKnit3())
 
98
    add_combo('InterKnitRepo',
 
99
              knitrepo.RepositoryFormatKnit1(),
 
100
              pack_repo.RepositoryFormatKnitPack1())
 
101
    add_combo('InterKnitRepo',
 
102
              pack_repo.RepositoryFormatKnitPack1(),
 
103
              knitrepo.RepositoryFormatKnit1())
 
104
    add_combo('InterKnitRepo',
 
105
              knitrepo.RepositoryFormatKnit3(),
 
106
              pack_repo.RepositoryFormatKnitPack3())
 
107
    add_combo('InterKnitRepo',
 
108
              pack_repo.RepositoryFormatKnitPack3(),
 
109
              knitrepo.RepositoryFormatKnit3())
 
110
    add_combo('InterKnitRepo',
 
111
              pack_repo.RepositoryFormatKnitPack3(),
 
112
              pack_repo.RepositoryFormatKnitPack4())
 
113
    add_combo('InterDifferingSerializer',
 
114
              pack_repo.RepositoryFormatKnitPack1(),
 
115
              pack_repo.RepositoryFormatKnitPack6RichRoot())
 
116
    add_combo('InterDifferingSerializer',
 
117
              pack_repo.RepositoryFormatKnitPack6RichRoot(),
 
118
              groupcompress_repo.RepositoryFormat2a())
 
119
    add_combo('InterDifferingSerializer',
 
120
              groupcompress_repo.RepositoryFormat2a(),
 
121
              pack_repo.RepositoryFormatKnitPack6RichRoot())
 
122
    add_combo('InterRepository',
 
123
              groupcompress_repo.RepositoryFormatCHK2(),
 
124
              groupcompress_repo.RepositoryFormat2a())
 
125
    add_combo('InterDifferingSerializer',
 
126
              groupcompress_repo.RepositoryFormatCHK1(),
 
127
              groupcompress_repo.RepositoryFormat2a())
 
128
    return result
 
129
 
 
130
 
 
131
class TestCaseWithInterRepository(TestCaseWithBzrDir):
 
132
 
 
133
    def setUp(self):
 
134
        super(TestCaseWithInterRepository, self).setUp()
 
135
 
 
136
    def make_branch(self, relpath, format=None):
 
137
        repo = self.make_repository(relpath, format=format)
 
138
        return repo.bzrdir.create_branch()
 
139
 
 
140
    def make_bzrdir(self, relpath, format=None):
 
141
        try:
 
142
            url = self.get_url(relpath)
 
143
            segments = url.split('/')
 
144
            if segments and segments[-1] not in ('', '.'):
 
145
                parent = '/'.join(segments[:-1])
 
146
                t = get_transport(parent)
 
147
                try:
 
148
                    t.mkdir(segments[-1])
 
149
                except FileExists:
 
150
                    pass
 
151
            if format is None:
 
152
                format = self.repository_format._matchingbzrdir
 
153
            return format.initialize(url)
 
154
        except UninitializableFormat:
 
155
            raise TestSkipped("Format %s is not initializable." % format)
 
156
 
 
157
    def make_repository(self, relpath, format=None):
 
158
        made_control = self.make_bzrdir(relpath, format=format)
 
159
        return self.repository_format.initialize(made_control)
 
160
 
 
161
    def make_to_repository(self, relpath):
 
162
        made_control = self.make_bzrdir(relpath,
 
163
            self.repository_format_to._matchingbzrdir)
 
164
        return self.repository_format_to.initialize(made_control)
 
165
 
 
166
 
 
167
def load_tests(standard_tests, module, loader):
 
168
    submod_tests = loader.loadTestsFromModuleNames([
 
169
        'bzrlib.tests.per_interrepository.test_fetch',
 
170
        'bzrlib.tests.per_interrepository.test_interrepository',
 
171
        ])
 
172
    scenarios = make_scenarios(
 
173
        default_transport,
 
174
        # None here will cause a readonly decorator to be created
 
175
        # by the TestCaseWithTransport.get_readonly_transport method.
 
176
        None,
 
177
        default_test_list()
 
178
        )
 
179
    return multiply_tests(submod_tests, scenarios, standard_tests)