/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
4988.10.5 by John Arbash Meinel
Merge bzr.dev 5021 to resolve NEWS
1
# Copyright (C) 2006-2010 Canonical Ltd
1534.4.25 by Robert Collins
Add a --transport parameter to the test suite to set the default transport to be used in the test suite.
2
#
3
# This program is free software; you can redistribute it and/or modify
2052.3.1 by John Arbash Meinel
Add tests to cleanup the copyright of all source files
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1534.4.25 by Robert Collins
Add a --transport parameter to the test suite to set the default transport to be used in the test suite.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1534.4.25 by Robert Collins
Add a --transport parameter to the test suite to set the default transport to be used in the test suite.
16
17
"""UI tests for the test framework."""
18
5393.5.1 by Martin
Give nice error if --parallel=fork is used on a forkless platform
19
import os
20
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
21
from breezy import (
4636.2.1 by Robert Collins
Test selftest --list-only and --randomize options using more precisely layers.
22
    tests,
1963.1.2 by John Arbash Meinel
Cleanups suggested by Martin, add test that env_changes can remove an env variable
23
    )
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
24
from breezy.tests import (
4797.11.2 by Vincent Ladeuil
Stop requiring testtools for sftp use.
25
    features,
26
    )
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
27
from breezy.transport import memory
4636.2.4 by Robert Collins
Move selftest internals tests out of blackbox test space - they are not testing our selftest command line.
28
7143.15.2 by Jelmer Vernooij
Run autopep8.
29
4636.2.4 by Robert Collins
Move selftest internals tests out of blackbox test space - they are not testing our selftest command line.
30
class SelfTestPatch:
31
32
    def get_params_passed_to_core(self, cmdline):
33
        params = []
7143.15.2 by Jelmer Vernooij
Run autopep8.
34
4636.2.4 by Robert Collins
Move selftest internals tests out of blackbox test space - they are not testing our selftest command line.
35
        def selftest(*args, **kwargs):
36
            """Capture the arguments selftest was run with."""
37
            params.append((args, kwargs))
38
            return True
39
        # Yes this prevents using threads to run the test suite in parallel,
7143.15.2 by Jelmer Vernooij
Run autopep8.
40
        # however we don't have a clean dependency injector for commands,
4636.2.4 by Robert Collins
Move selftest internals tests out of blackbox test space - they are not testing our selftest command line.
41
        # and even if we did - we'd still be testing that the glue is wired
42
        # up correctly. XXX: TODO: Solve this testing problem.
43
        original_selftest = tests.selftest
44
        tests.selftest = selftest
45
        try:
46
            self.run_bzr(cmdline)
47
            return params[0]
48
        finally:
49
            tests.selftest = original_selftest
50
51
4797.11.2 by Vincent Ladeuil
Stop requiring testtools for sftp use.
52
class TestOptions(tests.TestCase, SelfTestPatch):
4636.2.4 by Robert Collins
Move selftest internals tests out of blackbox test space - they are not testing our selftest command line.
53
54
    def test_load_list(self):
55
        params = self.get_params_passed_to_core('selftest --load-list foo')
56
        self.assertEqual('foo', params[1]['load_list'])
1534.4.25 by Robert Collins
Add a --transport parameter to the test suite to set the default transport to be used in the test suite.
57
58
    def test_transport_set_to_sftp(self):
4636.2.2 by Robert Collins
Fix selftest tests for --transport to test each layer precisely.
59
        # Test that we can pass a transport to the selftest core - sftp
60
        # version.
4913.2.16 by John Arbash Meinel
Move bzrlib.tests.ParamikoFeature to bzrlib.tests.features.paramiko
61
        self.requireFeature(features.paramiko)
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
62
        from breezy.tests import stub_sftp
4636.2.2 by Robert Collins
Fix selftest tests for --transport to test each layer precisely.
63
        params = self.get_params_passed_to_core('selftest --transport=sftp')
4797.11.2 by Vincent Ladeuil
Stop requiring testtools for sftp use.
64
        self.assertEqual(stub_sftp.SFTPAbsoluteServer,
7143.15.2 by Jelmer Vernooij
Run autopep8.
65
                         params[1]["transport"])
1534.4.25 by Robert Collins
Add a --transport parameter to the test suite to set the default transport to be used in the test suite.
66
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
67
    def test_transport_set_to_memory(self):
4636.2.2 by Robert Collins
Fix selftest tests for --transport to test each layer precisely.
68
        # Test that we can pass a transport to the selftest core - memory
69
        # version.
70
        params = self.get_params_passed_to_core('selftest --transport=memory')
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.
71
        self.assertEqual(memory.MemoryServer, params[1]["transport"])
4636.2.2 by Robert Collins
Fix selftest tests for --transport to test each layer precisely.
72
73
    def test_parameters_passed_to_core(self):
74
        params = self.get_params_passed_to_core('selftest --list-only')
75
        self.assertTrue("list_only" in params[1])
7143.15.2 by Jelmer Vernooij
Run autopep8.
76
        params = self.get_params_passed_to_core(
77
            'selftest --list-only selftest')
78
        self.assertTrue("list_only" in params[1])
79
        params = self.get_params_passed_to_core(['selftest', '--list-only',
80
                                                 '--exclude', 'selftest'])
81
        self.assertTrue("list_only" in params[1])
82
        params = self.get_params_passed_to_core(['selftest', '--list-only',
83
                                                 'selftest', '--randomize', 'now'])
4636.2.2 by Robert Collins
Fix selftest tests for --transport to test each layer precisely.
84
        self.assertSubset(["list_only", "random_seed"], params[1])
1687.1.2 by Robert Collins
Add stdin parameter to run_bzr and run_bzr_captured.
85
4636.2.4 by Robert Collins
Move selftest internals tests out of blackbox test space - they are not testing our selftest command line.
86
    def test_starting_with(self):
87
        params = self.get_params_passed_to_core('selftest --starting-with foo')
88
        self.assertEqual(['foo'], params[1]['starting_with'])
89
90
    def test_starting_with_multiple_argument(self):
91
        params = self.get_params_passed_to_core(
92
            'selftest --starting-with foo --starting-with bar')
93
        self.assertEqual(['foo', 'bar'], params[1]['starting_with'])
94
6765.1.4 by Jelmer Vernooij
Fix tests.
95
    def test_subunitv1(self):
4913.2.18 by John Arbash Meinel
Add a _CompatibilityThunkFeature.
96
        self.requireFeature(features.subunit)
6765.1.3 by Jelmer Vernooij
Add --subunit2 option.
97
        params = self.get_params_passed_to_core('selftest --subunit1')
98
        self.assertEqual(tests.SubUnitBzrRunnerv1, params[1]['runner_class'])
4165.1.1 by Robert Collins
Add builtin subunit support.
99
6765.1.4 by Jelmer Vernooij
Fix tests.
100
    def test_subunitv2(self):
101
        self.requireFeature(features.subunit)
102
        params = self.get_params_passed_to_core('selftest --subunit2')
103
        self.assertEqual(tests.SubUnitBzrRunnerv2, params[1]['runner_class'])
104
4636.2.4 by Robert Collins
Move selftest internals tests out of blackbox test space - they are not testing our selftest command line.
105
    def _parse_test_list(self, lines, newlines_in_header=0):
2394.2.5 by Ian Clatworthy
list-only working, include test not
106
        "Parse a list of lines into a tuple of 3 lists (header,body,footer)."
4266.2.1 by Robert Collins
Remove noise from bzr selftest --list-only so that it is easier to use in scripts.
107
        in_header = newlines_in_header != 0
2394.2.5 by Ian Clatworthy
list-only working, include test not
108
        in_footer = False
109
        header = []
110
        body = []
2394.2.6 by Ian Clatworthy
completed blackbox tests
111
        footer = []
2687.3.1 by Martin Pool
Revert selftest header to just two lines, but still show the bzrlib and python versions
112
        header_newlines_found = 0
2394.2.5 by Ian Clatworthy
list-only working, include test not
113
        for line in lines:
114
            if in_header:
115
                if line == '':
2394.2.6 by Ian Clatworthy
completed blackbox tests
116
                    header_newlines_found += 1
117
                    if header_newlines_found >= newlines_in_header:
118
                        in_header = False
119
                        continue
120
                header.append(line)
2394.2.5 by Ian Clatworthy
list-only working, include test not
121
            elif not in_footer:
122
                if line.startswith('-------'):
123
                    in_footer = True
124
                else:
125
                    body.append(line)
126
            else:
127
                footer.append(line)
128
        # If the last body line is blank, drop it off the list
129
        if len(body) > 0 and body[-1] == '':
2687.3.1 by Martin Pool
Revert selftest header to just two lines, but still show the bzrlib and python versions
130
            body.pop()
6809.1.1 by Martin
Apply 2to3 ws_comma fixer
131
        return (header, body, footer)
2394.2.5 by Ian Clatworthy
list-only working, include test not
132
133
    def test_list_only(self):
6622.1.29 by Jelmer Vernooij
Fix some more tests.
134
        # check that brz selftest --list-only outputs no ui noise
4636.2.1 by Robert Collins
Test selftest --list-only and --randomize options using more precisely layers.
135
        def selftest(*args, **kwargs):
136
            """Capture the arguments selftest was run with."""
137
            return True
7143.15.2 by Jelmer Vernooij
Run autopep8.
138
4636.2.1 by Robert Collins
Test selftest --list-only and --randomize options using more precisely layers.
139
        def outputs_nothing(cmdline):
6809.1.1 by Martin
Apply 2to3 ws_comma fixer
140
            out, err = self.run_bzr(cmdline)
141
            (header, body, footer) = self._parse_test_list(out.splitlines())
4636.2.1 by Robert Collins
Test selftest --list-only and --randomize options using more precisely layers.
142
            num_tests = len(body)
143
            self.assertLength(0, header)
144
            self.assertLength(0, footer)
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
145
            self.assertEqual('', err)
4636.2.1 by Robert Collins
Test selftest --list-only and --randomize options using more precisely layers.
146
        # Yes this prevents using threads to run the test suite in parallel,
7143.15.2 by Jelmer Vernooij
Run autopep8.
147
        # however we don't have a clean dependency injector for commands,
4636.2.1 by Robert Collins
Test selftest --list-only and --randomize options using more precisely layers.
148
        # and even if we did - we'd still be testing that the glue is wired
149
        # up correctly. XXX: TODO: Solve this testing problem.
150
        original_selftest = tests.selftest
151
        tests.selftest = selftest
152
        try:
153
            outputs_nothing('selftest --list-only')
154
            outputs_nothing('selftest --list-only selftest')
7143.15.2 by Jelmer Vernooij
Run autopep8.
155
            outputs_nothing(
156
                ['selftest', '--list-only', '--exclude', 'selftest'])
4636.2.1 by Robert Collins
Test selftest --list-only and --randomize options using more precisely layers.
157
        finally:
158
            tests.selftest = original_selftest
4641.3.3 by Robert Collins
Enable --lsprof-tests on bzr selftest.
159
160
    def test_lsprof_tests(self):
161
        params = self.get_params_passed_to_core('selftest --lsprof-tests')
162
        self.assertEqual(True, params[1]["lsprof_tests"])
5393.5.1 by Martin
Give nice error if --parallel=fork is used on a forkless platform
163
164
    def test_parallel_fork_unsupported(self):
165
        if getattr(os, "fork", None) is not None:
166
            self.addCleanup(setattr, os, "fork", os.fork)
167
            del os.fork
5393.5.2 by Martin
Move check 'closer to the metal' as requested by lifelss in review
168
        out, err = self.run_bzr(["selftest", "--parallel=fork", "-s", "bt.x"],
7143.15.2 by Jelmer Vernooij
Run autopep8.
169
                                retcode=3)
5393.5.1 by Martin
Give nice error if --parallel=fork is used on a forkless platform
170
        self.assertIn("platform does not support fork", err)
171
        self.assertFalse(out)