~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-02-27 21:01:31 UTC
  • mfrom: (2298.5.3 ca-bundle)
  • Revision ID: pqm@pqm.ubuntu.com-20070227210131-478bc8c5f83bd5dc
(bialix) Searching CA bundle for PyCurl in env variable, and on win32
 along the path

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 by Canonical Ltd
2
 
# -*- coding: utf-8 -*-
 
1
# Copyright (C) 2005, 2007 Canonical Ltd
3
2
#
4
3
# This program is free software; you can redistribute it and/or modify
5
4
# it under the terms of the GNU General Public License as published by
20
19
 
21
20
import os
22
21
 
23
 
import bzrlib
 
22
from bzrlib import (
 
23
    errors,
 
24
    urlutils,
 
25
    )
24
26
from bzrlib.branch import Branch
25
27
from bzrlib.bzrdir import BzrDirMetaFormat1
26
28
from bzrlib.osutils import abspath
27
 
from bzrlib.repository import RepositoryFormatKnit1
 
29
from bzrlib.repofmt.knitrepo import RepositoryFormatKnit1
28
30
from bzrlib.tests.blackbox import ExternalBase
29
31
from bzrlib.uncommit import uncommit
30
32
from bzrlib.urlutils import local_path_from_url
71
73
        out = self.run_bzr('push', '../branch_b', retcode=3)
72
74
        self.assertEquals(out,
73
75
                ('','bzr: ERROR: These branches have diverged.  '
74
 
                    'Try a merge then push with overwrite.\n'))
 
76
                    'Try using "merge" and then "push".\n'))
75
77
        self.assertEquals(abspath(branch_a.get_push_location()),
76
78
                          abspath(branch_b.bzrdir.root_transport.base))
77
79
 
97
99
        out, err = self.run_bzr('push', 'pushed-location')
98
100
        self.assertEqual('', out)
99
101
        self.assertEqual('0 revision(s) pushed.\n', err)
100
 
        b2 = bzrlib.branch.Branch.open('pushed-location')
 
102
        b2 = Branch.open('pushed-location')
101
103
        self.assertEndsWith(b2.base, 'pushed-location/')
102
104
 
103
105
    def test_push_new_branch_revision_count(self):
160
162
        t.add('filename', 'funky-chars<>%&;"\'')
161
163
        t.commit('commit filename')
162
164
        self.run_bzr('push', '../new-tree')
 
165
 
 
166
    def test_push_dash_d(self):
 
167
        t = self.make_branch_and_tree('from')
 
168
        t.commit(allow_pointless=True,
 
169
                message='first commit')
 
170
        self.runbzr('push -d from to-one')
 
171
        self.failUnlessExists('to-one')
 
172
        self.runbzr('push -d %s %s' 
 
173
            % tuple(map(urlutils.local_path_to_url, ['from', 'to-two'])))
 
174
        self.failUnlessExists('to-two')
 
175
 
 
176
    def create_simple_tree(self):
 
177
        tree = self.make_branch_and_tree('tree')
 
178
        self.build_tree(['tree/a'])
 
179
        tree.add(['a'], ['a-id'])
 
180
        tree.commit('one', rev_id='r1')
 
181
        return tree
 
182
 
 
183
    def test_push_create_prefix(self):
 
184
        """'bzr push --create-prefix' will create leading directories."""
 
185
        tree = self.create_simple_tree()
 
186
 
 
187
        self.run_bzr_error(['Parent directory of ../new/tree does not exist'],
 
188
                           'push', '../new/tree',
 
189
                           working_dir='tree')
 
190
        self.run_bzr('push', '../new/tree', '--create-prefix',
 
191
                     working_dir='tree')
 
192
        new_tree = WorkingTree.open('new/tree')
 
193
        self.assertEqual(tree.last_revision(), new_tree.last_revision())
 
194
        self.failUnlessExists('new/tree/a')
 
195
 
 
196
    def test_push_use_existing(self):
 
197
        """'bzr push --use-existing-dir' can push into an existing dir.
 
198
 
 
199
        By default, 'bzr push' will not use an existing, non-versioned dir.
 
200
        """
 
201
        tree = self.create_simple_tree()
 
202
        self.build_tree(['target/'])
 
203
 
 
204
        self.run_bzr_error(['Target directory ../target already exists',
 
205
                            'Supply --use-existing-dir',
 
206
                           ], 'push', '../target',
 
207
                           working_dir='tree')
 
208
 
 
209
        self.run_bzr('push', '--use-existing-dir', '../target',
 
210
                     working_dir='tree')
 
211
 
 
212
        new_tree = WorkingTree.open('target')
 
213
        self.assertEqual(tree.last_revision(), new_tree.last_revision())
 
214
        # The push should have created target/a
 
215
        self.failUnlessExists('target/a')
 
216
 
 
217
    def test_push_onto_repo(self):
 
218
        """We should be able to 'bzr push' into an existing bzrdir."""
 
219
        tree = self.create_simple_tree()
 
220
        repo = self.make_repository('repo', shared=True)
 
221
 
 
222
        self.run_bzr('push', '../repo',
 
223
                     working_dir='tree')
 
224
 
 
225
        # Pushing onto an existing bzrdir will create a repository and
 
226
        # branch as needed, but will only create a working tree if there was
 
227
        # no BzrDir before.
 
228
        self.assertRaises(errors.NoWorkingTree, WorkingTree.open, 'repo')
 
229
        new_branch = Branch.open('repo')
 
230
        self.assertEqual(tree.last_revision(), new_branch.last_revision())
 
231
 
 
232
    def test_push_onto_just_bzrdir(self):
 
233
        """We don't handle when the target is just a bzrdir.
 
234
 
 
235
        Because you shouldn't be able to create *just* a bzrdir in the wild.
 
236
        """
 
237
        # TODO: jam 20070109 Maybe it would be better to create the repository
 
238
        #       if at this point
 
239
        tree = self.create_simple_tree()
 
240
        a_bzrdir = self.make_bzrdir('dir')
 
241
 
 
242
        self.run_bzr_error(['At ../dir you have a valid .bzr control'],
 
243
                'push', '../dir',
 
244
                working_dir='tree')