/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
5557.1.7 by John Arbash Meinel
Merge in the bzr.dev 5582
1
# Copyright (C) 2006-2011 Canonical Ltd
1558.5.1 by Aaron Bentley
Added make-repository command
2
#
3
# This program is free software; you can redistribute it and/or modify
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.
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
1558.5.1 by Aaron Bentley
Added make-repository command
16
17
"""Black-box tests for repositories with shared branches"""
18
19
import os
20
6670.4.3 by Jelmer Vernooij
Fix more imports.
21
from breezy.bzr.bzrdir import BzrDirMetaFormat1
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
22
from breezy.controldir import ControlDir
23
import breezy.errors as errors
24
from breezy.tests import TestCaseInTempDir
25
from breezy.tests.matchers import ContainsNoVfsCalls
6366.1.4 by Jelmer Vernooij
Test connection count calls for most blackbox commands.
26
1558.5.1 by Aaron Bentley
Added make-repository command
27
28
class TestSharedRepo(TestCaseInTempDir):
1558.5.9 by Aaron Bentley
Updated tests per Robert Collins' suggestions
29
1558.5.4 by Aaron Bentley
Added bzr init test
30
    def test_make_repository(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
31
        out, err = self.run_bzr("init-repository a")
3535.9.5 by Marius Kruger
remove a trailing space I added
32
        self.assertEqual(out,
7143.15.2 by Jelmer Vernooij
Run autopep8.
33
                         """Shared repository with trees (format: 2a)
3535.9.2 by Marius Kruger
make init and init-repo tests pass again
34
Location:
35
  shared repository: a
36
""")
1558.5.9 by Aaron Bentley
Updated tests per Robert Collins' suggestions
37
        self.assertEqual(err, "")
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
38
        dir = ControlDir.open('a')
1558.5.9 by Aaron Bentley
Updated tests per Robert Collins' suggestions
39
        self.assertIs(dir.open_repository().is_shared(), True)
40
        self.assertRaises(errors.NotBranchError, dir.open_branch)
3535.9.6 by Marius Kruger
add explicit blackbox tests for 'init -q' and 'init-repo -q'
41
        self.assertRaises(errors.NoWorkingTree, dir.open_workingtree)
42
43
    def test_make_repository_quiet(self):
44
        out, err = self.run_bzr("init-repository a -q")
45
        self.assertEqual(out, "")
46
        self.assertEqual(err, "")
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
47
        dir = ControlDir.open('a')
3535.9.6 by Marius Kruger
add explicit blackbox tests for 'init -q' and 'init-repo -q'
48
        self.assertIs(dir.open_repository().is_shared(), True)
49
        self.assertRaises(errors.NotBranchError, dir.open_branch)
50
        self.assertRaises(errors.NoWorkingTree, dir.open_workingtree)
1558.5.4 by Aaron Bentley
Added bzr init test
51
1658.1.6 by Martin Pool
init-repo shouldn't insist on creating a new directory (Malone #38331)
52
    def test_init_repo_existing_dir(self):
53
        """Make repo in existing directory.
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
54
1658.1.6 by Martin Pool
init-repo shouldn't insist on creating a new directory (Malone #38331)
55
        (Malone #38331)
56
        """
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
57
        out, err = self.run_bzr("init-repository .")
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
58
        dir = ControlDir.open('.')
1658.1.6 by Martin Pool
init-repo shouldn't insist on creating a new directory (Malone #38331)
59
        self.assertTrue(dir.open_repository())
60
1558.5.4 by Aaron Bentley
Added bzr init test
61
    def test_init(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
62
        self.run_bzr("init-repo a")
63
        self.run_bzr("init --format=default a/b")
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
64
        dir = ControlDir.open('a')
1558.5.9 by Aaron Bentley
Updated tests per Robert Collins' suggestions
65
        self.assertIs(dir.open_repository().is_shared(), True)
66
        self.assertRaises(errors.NotBranchError, dir.open_branch)
67
        self.assertRaises(errors.NoWorkingTree, dir.open_workingtree)
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
68
        bdir = ControlDir.open('a/b')
1558.5.9 by Aaron Bentley
Updated tests per Robert Collins' suggestions
69
        bdir.open_branch()
70
        self.assertRaises(errors.NoRepositoryPresent, bdir.open_repository)
2257.2.1 by Wouter van Heyst
Change the ui level default for init-repo to --trees.
71
        wt = bdir.open_workingtree()
1558.5.5 by Aaron Bentley
Added tests for branch
72
73
    def test_branch(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
74
        self.run_bzr("init-repo a")
75
        self.run_bzr("init --format=default a/b")
76
        self.run_bzr('branch a/b a/c')
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
77
        cdir = ControlDir.open('a/c')
1558.5.9 by Aaron Bentley
Updated tests per Robert Collins' suggestions
78
        cdir.open_branch()
79
        self.assertRaises(errors.NoRepositoryPresent, cdir.open_repository)
2257.2.1 by Wouter van Heyst
Change the ui level default for init-repo to --trees.
80
        cdir.open_workingtree()
1624.2.2 by Erik Bågfors
tests for --tree
81
82
    def test_branch_tree(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
83
        self.run_bzr("init-repo --trees a")
84
        self.run_bzr("init --format=default b")
7143.15.2 by Jelmer Vernooij
Run autopep8.
85
        with open('b/hello', 'wt') as f:
86
            f.write('bar')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
87
        self.run_bzr("add b/hello")
88
        self.run_bzr("commit -m bar b/hello")
1624.2.2 by Erik Bågfors
tests for --tree
89
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
90
        self.run_bzr('branch b a/c')
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
91
        cdir = ControlDir.open('a/c')
1624.2.2 by Erik Bågfors
tests for --tree
92
        cdir.open_branch()
93
        self.assertRaises(errors.NoRepositoryPresent, cdir.open_repository)
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
94
        self.assertPathExists('a/c/hello')
1624.2.3 by Erik Bågfors
better test for --tree option
95
        cdir.open_workingtree()
1624.2.2 by Erik Bågfors
tests for --tree
96
2257.2.2 by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works
97
    def test_trees_default(self):
98
        # 0.15 switched to trees by default
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
99
        self.run_bzr("init-repo repo")
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
100
        repo = ControlDir.open("repo").open_repository()
2257.2.2 by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works
101
        self.assertEqual(True, repo.make_working_trees())
102
103
    def test_trees_argument(self):
104
        # Supplying the --trees argument should be harmless,
105
        # as it was previously non-default we need to get it right.
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
106
        self.run_bzr("init-repo --trees trees")
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
107
        repo = ControlDir.open("trees").open_repository()
2257.2.2 by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works
108
        self.assertEqual(True, repo.make_working_trees())
109
110
    def test_no_trees_argument(self):
111
        # --no-trees should make it so that there is no working tree
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
112
        self.run_bzr("init-repo --no-trees notrees")
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
113
        repo = ControlDir.open("notrees").open_repository()
2257.2.2 by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works
114
        self.assertEqual(False, repo.make_working_trees())
4017.3.1 by Robert Collins
Add effort test for init-repo on smart server urls.
115
116
    def test_init_repo_smart_acceptance(self):
117
        # The amount of hpss calls made on init-repo to a smart server should
118
        # be fixed.
119
        self.setup_smart_server_with_call_log()
120
        self.run_bzr(['init-repo', self.get_url('repo')])
121
        # This figure represent the amount of work to perform this use case. It
122
        # is entirely ok to reduce this number if a test fails due to rpc_count
123
        # being too low. If rpc_count increases, more network roundtrips have
124
        # become necessary for this use case. Please do not adjust this number
125
        # upwards without agreement from bzr's network support maintainers.
6437.9.3 by Jelmer Vernooij
Update hpss_count for init-repo.
126
        self.assertLength(11, self.hpss_calls)
6366.1.4 by Jelmer Vernooij
Test connection count calls for most blackbox commands.
127
        self.assertLength(1, self.hpss_connections)
128
        self.assertThat(self.hpss_calls, ContainsNoVfsCalls)
4734.4.4 by Brian de Alwis
Added tests to ensure branching-from-repository error returns detail
129
130
    def test_notification_on_branch_from_repository(self):
131
        out, err = self.run_bzr("init-repository -q a")
132
        self.assertEqual(out, "")
133
        self.assertEqual(err, "")
6472.2.2 by Jelmer Vernooij
Use controldir rather than bzrdir in a couple more places.
134
        dir = ControlDir.open('a')
7143.15.2 by Jelmer Vernooij
Run autopep8.
135
        dir.open_repository()  # there is a repository there
4734.4.4 by Brian de Alwis
Added tests to ensure branching-from-repository error returns detail
136
        e = self.assertRaises(errors.NotBranchError, dir.open_branch)
4734.4.7 by Andrew Bennetts
Defer checking for a repository in NotBranchError case until we format the error as a string. (test_smart currently fails)
137
        self.assertContainsRe(str(e), "location is a repository")
4734.4.9 by Andrew Bennetts
More tests and comments.
138
139
    def test_notification_on_branch_from_nonrepository(self):
140
        fmt = BzrDirMetaFormat1()
141
        t = self.get_transport()
142
        t.mkdir('a')
143
        dir = fmt.initialize_on_transport(t.clone('a'))
144
        self.assertRaises(errors.NoRepositoryPresent, dir.open_repository)
145
        e = self.assertRaises(errors.NotBranchError, dir.open_branch)
146
        self.assertNotContainsRe(str(e), "location is a repository")
5107.3.6 by Marco Pantaleoni
Documented behaviour of 'post_branch_init' for lightweight checkouts.
147
148
    def test_init_repo_with_post_repo_init_hook(self):
149
        calls = []
7143.15.2 by Jelmer Vernooij
Run autopep8.
150
        ControlDir.hooks.install_named_hook(
151
            'post_repo_init', calls.append, None)
5107.3.6 by Marco Pantaleoni
Documented behaviour of 'post_branch_init' for lightweight checkouts.
152
        self.assertLength(0, calls)
153
        self.run_bzr("init-repository a")
154
        self.assertLength(1, calls)
5187.2.4 by Parth Malwankar
added tests.
155
5187.2.6 by Parth Malwankar
lockdir no long mandates whoami but uses unicode version of getuser
156
    def test_init_repo_without_username(self):
157
        """Ensure init-repo works if username is not set.
5187.2.4 by Parth Malwankar
added tests.
158
        """
6622.1.29 by Jelmer Vernooij
Fix some more tests.
159
        # brz makes user specified whoami mandatory for operations
5187.2.9 by Parth Malwankar
added comment to init/init-repo pass tests for lacking whoami.
160
        # like commit as whoami is recorded. init-repo however is not so final
161
        # and uses whoami only in a lock file. Without whoami the login name
162
        # is used. This test is to ensure that init-repo passes even when whoami
163
        # is not available.
5570.3.12 by Vincent Ladeuil
Replace osutils.set_or_unset_env calls with self.overrideEnv.
164
        self.overrideEnv('EMAIL', None)
6622.1.28 by Jelmer Vernooij
More renames; commands in output, environment variables.
165
        self.overrideEnv('BRZ_EMAIL', None)
5187.2.6 by Parth Malwankar
lockdir no long mandates whoami but uses unicode version of getuser
166
        out, err = self.run_bzr(['init-repo', 'foo'])
167
        self.assertEqual(err, '')
168
        self.assertTrue(os.path.exists('foo'))