/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.4.39 by Robert Collins
Basic BzrDir support.
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.4.39 by Robert Collins
Basic BzrDir support.
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.4.39 by Robert Collins
Basic BzrDir support.
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.4.39 by Robert Collins
Basic BzrDir support.
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.4.39 by Robert Collins
Basic BzrDir support.
18
19
20
"""BzrDir implementation tests for bzr.
21
22
These test the conformance of all the bzrdir variations to the expected API.
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
23
Specific tests for individual formats are in the tests/test_bzrdir.py file
4523.1.1 by Martin Pool
Rename tests.branch_implementations to per_branch
24
rather than in tests/per_branch/*.py.
1534.4.39 by Robert Collins
Basic BzrDir support.
25
"""
26
2553.2.7 by Robert Collins
And overhaul BzrDirTestProviderAdapter too.
27
from bzrlib.bzrdir import BzrDirFormat
1534.4.39 by Robert Collins
Basic BzrDir support.
28
from bzrlib.tests import (
5017.3.24 by Vincent Ladeuil
selftest -s bt.test_selftest passing
29
    default_transport,
30
    multiply_tests,
31
    test_server,
32
    TestCaseWithTransport,
33
    )
5017.3.45 by Vincent Ladeuil
Move MemoryServer back into bzrlib.transport.memory as it's needed as soon as a MemoryTransport is used. Add a NEWS entry.
34
from bzrlib.transport import memory
1534.4.39 by Robert Collins
Basic BzrDir support.
35
36
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
37
def make_scenarios(vfs_factory, transport_server, transport_readonly_server,
38
    formats, name_suffix=''):
39
    """Transform the input to a list of scenarios.
2553.2.7 by Robert Collins
And overhaul BzrDirTestProviderAdapter too.
40
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
41
    :param formats: A list of bzrdir_format objects.
42
    :param vfs_server: A factory to create a Transport Server which has
43
        all the VFS methods working, and is writable.
2553.2.7 by Robert Collins
And overhaul BzrDirTestProviderAdapter too.
44
    """
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
45
    result = []
46
    for format in formats:
47
        scenario_name = format.__class__.__name__
48
        scenario_name += name_suffix
49
        scenario = (scenario_name, {
50
            "vfs_transport_factory": vfs_factory,
51
            "transport_server": transport_server,
52
            "transport_readonly_server": transport_readonly_server,
53
            "bzrdir_format": format,
54
            })
55
        result.append(scenario)
56
    return result
2553.2.7 by Robert Collins
And overhaul BzrDirTestProviderAdapter too.
57
58
2475.3.1 by John Arbash Meinel
Fix bug #75721. Update the BzrDir api to add clone_on_transport()
59
class TestCaseWithBzrDir(TestCaseWithTransport):
60
61
    def setUp(self):
62
        super(TestCaseWithBzrDir, self).setUp()
63
        self.bzrdir = None
64
65
    def get_bzrdir(self):
66
        if self.bzrdir is None:
67
            self.bzrdir = self.make_bzrdir(None)
68
        return self.bzrdir
69
70
    def make_bzrdir(self, relpath, format=None):
3242.2.14 by Aaron Bentley
Update from review comments
71
        if format is None:
72
            format = self.bzrdir_format
2475.3.1 by John Arbash Meinel
Fix bug #75721. Update the BzrDir api to add clone_on_transport()
73
        return super(TestCaseWithBzrDir, self).make_bzrdir(
3242.2.14 by Aaron Bentley
Update from review comments
74
            relpath, format=format)
2475.3.1 by John Arbash Meinel
Fix bug #75721. Update the BzrDir api to add clone_on_transport()
75
76
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
77
def load_tests(standard_tests, module, loader):
4523.1.2 by Martin Pool
Rename bzrdir_implementations to per_bzrdir
78
    test_per_bzrdir = [
79
        'bzrlib.tests.per_bzrdir.test_bzrdir',
80
        'bzrlib.tests.per_bzrdir.test_push',
1534.4.39 by Robert Collins
Basic BzrDir support.
81
        ]
4523.1.2 by Martin Pool
Rename bzrdir_implementations to per_bzrdir
82
    submod_tests = loader.loadTestsFromModuleNames(test_per_bzrdir)
1733.1.3 by Robert Collins
Extend the test suite to run bzrdir conformance tests on non .bzr based control dirs.
83
    formats = BzrDirFormat.known_formats()
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
84
    scenarios = make_scenarios(
1534.4.39 by Robert Collins
Basic BzrDir support.
85
        default_transport,
2018.5.42 by Robert Collins
Various hopefully improvements, but wsgi is broken, handing over to spiv :).
86
        None,
1534.4.39 by Robert Collins
Basic BzrDir support.
87
        # None here will cause a readonly decorator to be created
88
        # by the TestCaseWithTransport.get_readonly_transport method.
89
        None,
1733.1.3 by Robert Collins
Extend the test suite to run bzrdir conformance tests on non .bzr based control dirs.
90
        formats)
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
91
    # This will always add scenarios using the smart server.
1752.2.87 by Andrew Bennetts
Make tests pass.
92
    from bzrlib.remote import RemoteBzrDirFormat
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
93
    # test the remote server behaviour when backed with a MemoryTransport
94
    # Once for the current version
95
    scenarios.extend(make_scenarios(
5017.3.45 by Vincent Ladeuil
Move MemoryServer back into bzrlib.transport.memory as it's needed as soon as a MemoryTransport is used. Add a NEWS entry.
96
        memory.MemoryServer,
5017.3.24 by Vincent Ladeuil
selftest -s bt.test_selftest passing
97
        test_server.SmartTCPServer_for_testing,
98
        test_server.ReadonlySmartTCPServer_for_testing,
3453.5.1 by Andrew Bennetts
Add {bzrdir,repository,branch}_implementations tests for Remote objects using protocol v2 and pre-1.6 RPCs.
99
        [(RemoteBzrDirFormat())],
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
100
        name_suffix='-default'))
101
    # And once with < 1.6 - the 'v2' protocol.
102
    scenarios.extend(make_scenarios(
5017.3.45 by Vincent Ladeuil
Move MemoryServer back into bzrlib.transport.memory as it's needed as soon as a MemoryTransport is used. Add a NEWS entry.
103
        memory.MemoryServer,
5017.3.24 by Vincent Ladeuil
selftest -s bt.test_selftest passing
104
        test_server.SmartTCPServer_for_testing_v2_only,
105
        test_server.ReadonlySmartTCPServer_for_testing_v2_only,
3453.5.1 by Andrew Bennetts
Add {bzrdir,repository,branch}_implementations tests for Remote objects using protocol v2 and pre-1.6 RPCs.
106
        [(RemoteBzrDirFormat())],
4084.5.1 by Robert Collins
Bulk update all test adaptation into a single approach, using multiply_tests rather than test adapters.
107
        name_suffix='-v2'))
108
    # add the tests for the sub modules
109
    return multiply_tests(submod_tests, scenarios, standard_tests)