~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_branch.py

  • Committer: Martin Pool
  • Date: 2010-08-13 08:09:53 UTC
  • mto: (5050.17.6 2.2)
  • mto: This revision was merged to the branch mainline in revision 5379.
  • Revision ID: mbp@sourcefrog.net-20100813080953-c00cm9l3qgu2flj9
Remove spuriously-resurrected test

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2008, 2009 Canonical Ltd
 
1
# Copyright (C) 2006-2010 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
19
19
 
20
20
import os
21
21
 
22
 
from bzrlib import (branch, bzrdir, errors, repository)
 
22
from bzrlib import (
 
23
    branch,
 
24
    bzrdir,
 
25
    errors,
 
26
    repository,
 
27
    revision as _mod_revision,
 
28
    )
23
29
from bzrlib.repofmt.knitrepo import RepositoryFormatKnit1
24
 
from bzrlib.tests.blackbox import ExternalBase
 
30
from bzrlib.tests import TestCaseWithTransport
25
31
from bzrlib.tests import (
26
32
    KnownFailure,
27
33
    HardlinkFeature,
 
34
    test_server,
28
35
    )
29
36
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
30
37
from bzrlib.urlutils import local_path_to_url, strip_trailing_slash
31
38
from bzrlib.workingtree import WorkingTree
32
39
 
33
40
 
34
 
class TestBranch(ExternalBase):
 
41
class TestBranch(TestCaseWithTransport):
35
42
 
36
43
    def example_branch(self, path='.'):
37
44
        tree = self.make_branch_and_tree(path)
52
59
        self.assertFalse(b._transport.has('branch-name'))
53
60
        b.bzrdir.open_workingtree().commit(message='foo', allow_pointless=True)
54
61
 
 
62
    def test_branch_switch_no_branch(self):
 
63
        # No branch in the current directory:
 
64
        #  => new branch will be created, but switch fails
 
65
        self.example_branch('a')
 
66
        self.make_repository('current')
 
67
        self.run_bzr_error(['No WorkingTree exists for'],
 
68
            'branch --switch ../a ../b', working_dir='current')
 
69
        a = branch.Branch.open('a')
 
70
        b = branch.Branch.open('b')
 
71
        self.assertEqual(a.last_revision(), b.last_revision())
 
72
 
 
73
    def test_branch_switch_no_wt(self):
 
74
        # No working tree in the current directory:
 
75
        #  => new branch will be created, but switch fails and the current
 
76
        #     branch is unmodified
 
77
        self.example_branch('a')
 
78
        self.make_branch('current')
 
79
        self.run_bzr_error(['No WorkingTree exists for'],
 
80
            'branch --switch ../a ../b', working_dir='current')
 
81
        a = branch.Branch.open('a')
 
82
        b = branch.Branch.open('b')
 
83
        self.assertEqual(a.last_revision(), b.last_revision())
 
84
        work = branch.Branch.open('current')
 
85
        self.assertEqual(work.last_revision(), _mod_revision.NULL_REVISION)
 
86
 
 
87
    def test_branch_switch_no_checkout(self):
 
88
        # Standalone branch in the current directory:
 
89
        #  => new branch will be created, but switch fails and the current
 
90
        #     branch is unmodified
 
91
        self.example_branch('a')
 
92
        self.make_branch_and_tree('current')
 
93
        self.run_bzr_error(['Cannot switch a branch, only a checkout'],
 
94
            'branch --switch ../a ../b', working_dir='current')
 
95
        a = branch.Branch.open('a')
 
96
        b = branch.Branch.open('b')
 
97
        self.assertEqual(a.last_revision(), b.last_revision())
 
98
        work = branch.Branch.open('current')
 
99
        self.assertEqual(work.last_revision(), _mod_revision.NULL_REVISION)
 
100
 
 
101
    def test_branch_switch_checkout(self):
 
102
        # Checkout in the current directory:
 
103
        #  => new branch will be created and checkout bound to the new branch
 
104
        self.example_branch('a')
 
105
        self.run_bzr('checkout a current')
 
106
        out, err = self.run_bzr('branch --switch ../a ../b', working_dir='current')
 
107
        a = branch.Branch.open('a')
 
108
        b = branch.Branch.open('b')
 
109
        self.assertEqual(a.last_revision(), b.last_revision())
 
110
        work = WorkingTree.open('current')
 
111
        self.assertEndsWith(work.branch.get_bound_location(), '/b/')
 
112
        self.assertContainsRe(err, "Switched to branch: .*/b/")
 
113
 
 
114
    def test_branch_switch_lightweight_checkout(self):
 
115
        # Lightweight checkout in the current directory:
 
116
        #  => new branch will be created and lightweight checkout pointed to
 
117
        #     the new branch
 
118
        self.example_branch('a')
 
119
        self.run_bzr('checkout --lightweight a current')
 
120
        out, err = self.run_bzr('branch --switch ../a ../b', working_dir='current')
 
121
        a = branch.Branch.open('a')
 
122
        b = branch.Branch.open('b')
 
123
        self.assertEqual(a.last_revision(), b.last_revision())
 
124
        work = WorkingTree.open('current')
 
125
        self.assertEndsWith(work.branch.base, '/b/')
 
126
        self.assertContainsRe(err, "Switched to branch: .*/b/")
 
127
 
55
128
    def test_branch_only_copies_history(self):
56
129
        # Knit branches should only push the history for the current revision.
57
130
        format = bzrdir.BzrDirMetaFormat1()
99
172
        out, err = self.run_bzr(['branch', 'source', 'target', '--hardlink'])
100
173
        source_stat = os.stat('source/file1')
101
174
        target_stat = os.stat('target/file1')
102
 
        same_file = (source_stat == target_stat)
103
 
        if same_file:
104
 
            pass
105
 
        else:
106
 
            # https://bugs.edge.launchpad.net/bzr/+bug/408193
107
 
            self.assertContainsRe(err, "hardlinking working copy files is "
108
 
                "not currently supported")
109
 
            raise KnownFailure("--hardlink doesn't work in formats "
110
 
                "that support content filtering (#408193)")
 
175
        self.assertEqual(source_stat, target_stat)
111
176
 
112
177
    def test_branch_standalone(self):
113
178
        shared_repo = self.make_repository('repo', shared=True)
145
210
        self.assertEqual('', out)
146
211
        self.assertEqual('bzr: ERROR: Already a branch: "b".\n', err)
147
212
 
148
 
 
149
 
class TestBranchStacked(ExternalBase):
 
213
    def test_branch_bind(self):
 
214
        self.example_branch('a')
 
215
        out, err = self.run_bzr('branch a b --bind')
 
216
        self.assertEndsWith(err, "New branch bound to a\n")
 
217
        b = branch.Branch.open('b')
 
218
        self.assertEndsWith(b.get_bound_location(), '/a/')
 
219
 
 
220
    def test_branch_with_post_branch_init_hook(self):
 
221
        calls = []
 
222
        branch.Branch.hooks.install_named_hook('post_branch_init',
 
223
            calls.append, None)
 
224
        self.assertLength(0, calls)
 
225
        self.example_branch('a')
 
226
        self.assertLength(1, calls)
 
227
        self.run_bzr('branch a b')
 
228
        self.assertLength(2, calls)
 
229
 
 
230
    def test_checkout_with_post_branch_init_hook(self):
 
231
        calls = []
 
232
        branch.Branch.hooks.install_named_hook('post_branch_init',
 
233
            calls.append, None)
 
234
        self.assertLength(0, calls)
 
235
        self.example_branch('a')
 
236
        self.assertLength(1, calls)
 
237
        self.run_bzr('checkout a b')
 
238
        self.assertLength(2, calls)
 
239
 
 
240
    def test_lightweight_checkout_with_post_branch_init_hook(self):
 
241
        calls = []
 
242
        branch.Branch.hooks.install_named_hook('post_branch_init',
 
243
            calls.append, None)
 
244
        self.assertLength(0, calls)
 
245
        self.example_branch('a')
 
246
        self.assertLength(1, calls)
 
247
        self.run_bzr('checkout --lightweight a b')
 
248
        self.assertLength(2, calls)
 
249
 
 
250
 
 
251
class TestBranchStacked(TestCaseWithTransport):
150
252
    """Tests for branch --stacked"""
151
253
 
152
254
    def assertRevisionInRepository(self, repo_path, revid):
237
339
 
238
340
    def test_branch_stacked_from_smart_server(self):
239
341
        # We can branch stacking on a smart server
240
 
        from bzrlib.smart.server import SmartTCPServer_for_testing
241
 
        self.transport_server = SmartTCPServer_for_testing
 
342
        self.transport_server = test_server.SmartTCPServer_for_testing
242
343
        trunk = self.make_branch('mainline', format='1.9')
243
344
        out, err = self.run_bzr(
244
345
            ['branch', '--stacked', self.get_url('mainline'), 'shallow'])
254
355
            '  Packs 5 (adds stacking support, requires bzr 1.6)\n'
255
356
            'Source branch format does not support stacking, using format:\n'
256
357
            '  Branch format 7\n'
 
358
            'Doing on-the-fly conversion from RepositoryFormatKnitPack1() to RepositoryFormatKnitPack5().\n'
 
359
            'This may take some time. Upgrade the repositories to the same format for better performance.\n'
257
360
            'Created new stacked branch referring to %s.\n' % (trunk.base,),
258
361
            err)
259
362
 
267
370
            '  Packs 5 rich-root (adds stacking support, requires bzr 1.6.1)\n'
268
371
            'Source branch format does not support stacking, using format:\n'
269
372
            '  Branch format 7\n'
 
373
            'Doing on-the-fly conversion from RepositoryFormatKnitPack4() to RepositoryFormatKnitPack5RichRoot().\n'
 
374
            'This may take some time. Upgrade the repositories to the same format for better performance.\n'
270
375
            'Created new stacked branch referring to %s.\n' % (trunk.base,),
271
376
            err)
272
377
 
273
378
 
274
 
class TestSmartServerBranching(ExternalBase):
 
379
class TestSmartServerBranching(TestCaseWithTransport):
275
380
 
276
381
    def test_branch_from_trivial_branch_to_same_server_branch_acceptance(self):
277
382
        self.setup_smart_server_with_call_log()