~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Martin Pool
  • Date: 2006-06-20 07:55:43 UTC
  • mfrom: (1798 +trunk)
  • mto: This revision was merged to the branch mainline in revision 1799.
  • Revision ID: mbp@sourcefrog.net-20060620075543-b10f6575d4a4fa32
[merge] bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import sys
23
23
 
24
24
from bzrlib.branch import Branch
25
 
from bzrlib.osutils import abspath
26
25
from bzrlib.tests.blackbox import ExternalBase
27
26
from bzrlib.uncommit import uncommit
28
27
 
248
247
        tree_b.commit('commit d')
249
248
        out = self.runbzr('pull ../branch_a', retcode=3)
250
249
        self.assertEquals(out,
251
 
                ('','bzr: ERROR: These branches have diverged.  Try merge.\n'))
252
 
        self.assertEquals(abspath(branch_b.get_parent()), abspath(parent))
 
250
                ('','bzr: ERROR: These branches have diverged.  Use the merge command to reconcile them.\n'))
 
251
        self.assertEquals(branch_b.get_parent(), parent)
253
252
        # test implicit --remember after resolving previous failure
254
253
        uncommit(branch=branch_b, tree=tree_b)
255
254
        transport.delete('branch_b/d')
256
255
        self.runbzr('pull')
257
 
        self.assertEquals(abspath(branch_b.get_parent()), abspath(parent))
 
256
        self.assertEquals(branch_b.get_parent(), parent)
258
257
        # test explicit --remember
259
258
        self.runbzr('pull ../branch_c --remember')
260
 
        self.assertEquals(abspath(branch_b.get_parent()),
261
 
                          abspath(branch_c.bzrdir.root_transport.base))
 
259
        self.assertEquals(branch_b.get_parent(),
 
260
                          branch_c.bzrdir.root_transport.base)
 
261
 
 
262
    def test_pull_bundle(self):
 
263
        from bzrlib.testament import Testament
 
264
        # Build up 2 trees and prepare for a pull
 
265
        tree_a = self.make_branch_and_tree('branch_a')
 
266
        f = open('branch_a/a', 'wb')
 
267
        f.write('hello')
 
268
        f.close()
 
269
        tree_a.add('a')
 
270
        tree_a.commit('message')
 
271
 
 
272
        tree_b = tree_a.bzrdir.sprout('branch_b').open_workingtree()
 
273
 
 
274
        # Make a change to 'a' that 'b' can pull
 
275
        f = open('branch_a/a', 'wb')
 
276
        f.write('hey there')
 
277
        f.close()
 
278
        tree_a.commit('message')
 
279
 
 
280
        # Create the bundle for 'b' to pull
 
281
        os.chdir('branch_a')
 
282
        bundle_file = open('../bundle', 'wb')
 
283
        bundle_file.write(self.run_bzr('bundle', '../branch_b')[0])
 
284
        bundle_file.close()
 
285
 
 
286
        os.chdir('../branch_b')
 
287
        output = self.run_bzr('pull', '../bundle')
 
288
        self.assertEqual('', output[0])
 
289
        self.assertEqual('All changes applied successfully.\n'
 
290
                         '1 revision(s) pulled.\n', output[1])
 
291
 
 
292
        self.assertEqualDiff(tree_a.branch.revision_history(),
 
293
                             tree_b.branch.revision_history())
 
294
 
 
295
        testament_a = Testament.from_revision(tree_a.branch.repository, 
 
296
                                              tree_a.last_revision())
 
297
        testament_b = Testament.from_revision(tree_b.branch.repository,
 
298
                                              tree_b.last_revision())
 
299
        self.assertEqualDiff(testament_a.as_text(),
 
300
                             testament_b.as_text())
 
301
 
 
302
        # it is legal to attempt to pull an already-merged bundle
 
303
        output = self.run_bzr('pull', '../bundle')
 
304
        self.assertEqual('', output[0])
 
305
        self.assertEqual('0 revision(s) pulled.\n', output[1])