/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_bzrdir.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-03-09 08:45:56 UTC
  • mfrom: (4084.5.2 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20090309084556-9i2m12qlud2qcrtw
(robertc) Bulk update all test adaptation into a single approach
        using multiply_tests rather than many varied test adapters.
        (Robert Collins

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Tests for the BzrDir facility and any format specific tests.
18
18
 
19
 
For interface contract tests, see tests/per_bzr_dir.
 
19
For interface contract tests, see tests/bzr_dir_implementations.
20
20
"""
21
21
 
22
22
import os
 
23
import os.path
 
24
from StringIO import StringIO
23
25
import subprocess
24
26
import sys
25
27
 
29
31
    help_topics,
30
32
    repository,
31
33
    osutils,
 
34
    symbol_versioning,
32
35
    remote,
33
36
    urlutils,
34
37
    win32utils,
36
39
    )
37
40
import bzrlib.branch
38
41
from bzrlib.errors import (NotBranchError,
39
 
                           NoColocatedBranchSupport,
40
42
                           UnknownFormatError,
41
43
                           UnsupportedFormatError,
42
44
                           )
45
47
    TestCaseWithMemoryTransport,
46
48
    TestCaseWithTransport,
47
49
    TestSkipped,
 
50
    test_sftp_transport
48
51
    )
49
52
from bzrlib.tests import(
50
53
    http_server,
51
54
    http_utils,
52
55
    )
53
56
from bzrlib.tests.test_http import TestWithTransport_pycurl
54
 
from bzrlib.transport import (
55
 
    get_transport,
56
 
    memory,
57
 
    )
 
57
from bzrlib.transport import get_transport
58
58
from bzrlib.transport.http._urllib import HttpTransport_urllib
 
59
from bzrlib.transport.memory import MemoryServer
59
60
from bzrlib.transport.nosmart import NoSmartTransportDecorator
60
61
from bzrlib.transport.readonly import ReadonlyTransportDecorator
61
 
from bzrlib.repofmt import knitrepo, weaverepo, pack_repo
 
62
from bzrlib.repofmt import knitrepo, weaverepo
62
63
 
63
64
 
64
65
class TestDefaultFormat(TestCase):
148
149
        new = topics.get_detail('current-formats')
149
150
        rest = topics.get_detail('other-formats')
150
151
        experimental, deprecated = rest.split('Deprecated formats')
151
 
        self.assertContainsRe(new, 'formats-help')
 
152
        self.assertContainsRe(new, 'bzr help formats')
152
153
        self.assertContainsRe(new,
153
154
                ':knit:\n    \(native\) \(default\) Format using knits\n')
154
155
        self.assertContainsRe(experimental,
207
208
        """See BzrDir.open_repository."""
208
209
        return SampleRepository(self)
209
210
 
210
 
    def create_branch(self, name=None):
 
211
    def create_branch(self):
211
212
        """See BzrDir.create_branch."""
212
 
        if name is not None:
213
 
            raise NoColocatedBranchSupport(self)
214
213
        return SampleBranch(self)
215
214
 
216
215
    def create_workingtree(self):
359
358
 
360
359
    def test_create_branch_convenience_root(self):
361
360
        """Creating a branch at the root of a fs should work."""
362
 
        self.vfs_transport_factory = memory.MemoryServer
 
361
        self.vfs_transport_factory = MemoryServer
363
362
        # outside a repo the default convenience output is a repo+branch_tree
364
363
        format = bzrdir.format_registry.make_bzrdir('knit')
365
364
        branch = bzrdir.BzrDir.create_branch_convenience(self.get_url(),
467
466
        self.assertEqual(child_branch.base,
468
467
                         new_child.open_branch().get_stacked_on_url())
469
468
 
470
 
    def test_default_stacking_with_stackable_branch_unstackable_repo(self):
471
 
        # Make stackable source branch with an unstackable repo format.
472
 
        source_bzrdir = self.make_bzrdir('source')
473
 
        pack_repo.RepositoryFormatKnitPack1().initialize(source_bzrdir)
474
 
        source_branch = bzrlib.branch.BzrBranchFormat7().initialize(
475
 
            source_bzrdir)
476
 
        # Make a directory with a default stacking policy
477
 
        parent_bzrdir = self.make_bzrdir('parent')
478
 
        stacked_on = self.make_branch('parent/stacked-on', format='pack-0.92')
479
 
        parent_bzrdir.get_config().set_default_stack_on(stacked_on.base)
480
 
        # Clone source into directory
481
 
        target = source_bzrdir.clone(self.get_url('parent/target'))
482
 
 
483
469
    def test_sprout_obeys_stacking_policy(self):
484
470
        child_branch, new_child_transport = self.prepare_default_stacking()
485
471
        new_child = child_branch.bzrdir.sprout(new_child_transport.base)
571
557
 
572
558
    def setUp(self):
573
559
        super(ChrootedTests, self).setUp()
574
 
        if not self.vfs_transport_factory == memory.MemoryServer:
 
560
        if not self.vfs_transport_factory == MemoryServer:
575
561
            self.transport_readonly_server = http_server.HttpServer
576
562
 
577
563
    def local_branch_path(self, branch):
754
740
                          transport)
755
741
 
756
742
    def test_sprout_recursive(self):
757
 
        tree = self.make_branch_and_tree('tree1',
758
 
                                         format='dirstate-with-subtree')
 
743
        tree = self.make_branch_and_tree('tree1', format='dirstate-with-subtree')
759
744
        sub_tree = self.make_branch_and_tree('tree1/subtree',
760
745
            format='dirstate-with-subtree')
761
 
        sub_tree.set_root_id('subtree-root')
762
746
        tree.add_reference(sub_tree)
763
747
        self.build_tree(['tree1/subtree/file'])
764
748
        sub_tree.add('file')
765
749
        tree.commit('Initial commit')
766
 
        tree2 = tree.bzrdir.sprout('tree2').open_workingtree()
767
 
        tree2.lock_read()
768
 
        self.addCleanup(tree2.unlock)
 
750
        tree.bzrdir.sprout('tree2')
769
751
        self.failUnlessExists('tree2/subtree/file')
770
 
        self.assertEqual('tree-reference', tree2.kind('subtree-root'))
771
752
 
772
753
    def test_cloning_metadir(self):
773
754
        """Ensure that cloning metadir is suitable"""
1055
1036
 
1056
1037
    def setUp(self):
1057
1038
        super(NonLocalTests, self).setUp()
1058
 
        self.vfs_transport_factory = memory.MemoryServer
 
1039
        self.vfs_transport_factory = MemoryServer
1059
1040
 
1060
1041
    def test_create_branch_convenience(self):
1061
1042
        # outside a repo the default convenience output is a repo+branch_tree
1158
1139
    _transport = HttpTransport_urllib
1159
1140
 
1160
1141
    def _qualified_url(self, host, port):
1161
 
        result = 'http+urllib://%s:%s' % (host, port)
1162
 
        self.permit_url(result)
1163
 
        return result
 
1142
        return 'http+urllib://%s:%s' % (host, port)
1164
1143
 
1165
1144
 
1166
1145
 
1170
1149
    """Tests redirections for pycurl implementation"""
1171
1150
 
1172
1151
    def _qualified_url(self, host, port):
1173
 
        result = 'http+pycurl://%s:%s' % (host, port)
1174
 
        self.permit_url(result)
1175
 
        return result
 
1152
        return 'http+pycurl://%s:%s' % (host, port)
1176
1153
 
1177
1154
 
1178
1155
class TestHTTPRedirections_nosmart(TestHTTPRedirections,
1182
1159
    _transport = NoSmartTransportDecorator
1183
1160
 
1184
1161
    def _qualified_url(self, host, port):
1185
 
        result = 'nosmart+http://%s:%s' % (host, port)
1186
 
        self.permit_url(result)
1187
 
        return result
 
1162
        return 'nosmart+http://%s:%s' % (host, port)
1188
1163
 
1189
1164
 
1190
1165
class TestHTTPRedirections_readonly(TestHTTPRedirections,
1194
1169
    _transport = ReadonlyTransportDecorator
1195
1170
 
1196
1171
    def _qualified_url(self, host, port):
1197
 
        result = 'readonly+http://%s:%s' % (host, port)
1198
 
        self.permit_url(result)
1199
 
        return result
 
1172
        return 'readonly+http://%s:%s' % (host, port)
1200
1173
 
1201
1174
 
1202
1175
class TestDotBzrHidden(TestCaseWithTransport):
1316
1289
        parent = grandparent_tree.bzrdir.sprout('parent').open_branch()
1317
1290
        branch_tree = parent.bzrdir.sprout('branch').open_branch()
1318
1291
        self.assertContainsRe(branch_tree.get_parent(), '/parent/$')
1319
 
 
1320
 
 
1321
 
class TestBzrDirHooks(TestCaseWithMemoryTransport):
1322
 
 
1323
 
    def test_pre_open_called(self):
1324
 
        calls = []
1325
 
        bzrdir.BzrDir.hooks.install_named_hook('pre_open', calls.append, None)
1326
 
        transport = self.get_transport('foo')
1327
 
        url = transport.base
1328
 
        self.assertRaises(errors.NotBranchError, bzrdir.BzrDir.open, url)
1329
 
        self.assertEqual([transport.base], [t.base for t in calls])
1330
 
 
1331
 
    def test_pre_open_actual_exceptions_raised(self):
1332
 
        count = [0]
1333
 
        def fail_once(transport):
1334
 
            count[0] += 1
1335
 
            if count[0] == 1:
1336
 
                raise errors.BzrError("fail")
1337
 
        bzrdir.BzrDir.hooks.install_named_hook('pre_open', fail_once, None)
1338
 
        transport = self.get_transport('foo')
1339
 
        url = transport.base
1340
 
        err = self.assertRaises(errors.BzrError, bzrdir.BzrDir.open, url)
1341
 
        self.assertEqual('fail', err._preformatted_string)
1342
 
 
1343
 
    def test_post_repo_init(self):
1344
 
        from bzrlib.bzrdir import RepoInitHookParams
1345
 
        calls = []
1346
 
        bzrdir.BzrDir.hooks.install_named_hook('post_repo_init',
1347
 
            calls.append, None)
1348
 
        self.make_repository('foo')
1349
 
        self.assertLength(1, calls)
1350
 
        params = calls[0]
1351
 
        self.assertIsInstance(params, RepoInitHookParams)
1352
 
        self.assertTrue(hasattr(params, 'bzrdir'))
1353
 
        self.assertTrue(hasattr(params, 'repository'))