~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-10-01 22:33:10 UTC
  • mfrom: (5452.3.1 doc-fix)
  • Revision ID: pqm@pqm.ubuntu.com-20101001223310-t8adqw9m9ogrvnlc
(jameinel) fixed link to main smart server doc from http smart server doc
 (dmuir)

Show diffs side-by-side

added added

removed removed

Lines of Context:
241
241
        tree.commit('empty commit')
242
242
        self.run_bzr('update checkout')
243
243
 
 
244
    def test_update_with_merge_merged_to_master(self):
 
245
        # Test that 'bzr update' works correctly when you have
 
246
        # an update in the master tree, and a [lightweight or otherwise]
 
247
        # checkout which has merge a revision merged to master already.
 
248
        master = self.make_branch_and_tree('master')
 
249
        self.build_tree(['master/file'])
 
250
        master.add(['file'])
 
251
        master.commit('one', rev_id='m1')
 
252
 
 
253
        self.build_tree(['checkout1/'])
 
254
        checkout_dir = bzrdir.BzrDirMetaFormat1().initialize('checkout1')
 
255
        branch.BranchReferenceFormat().initialize(checkout_dir,
 
256
            target_branch=master.branch)
 
257
        checkout1 = checkout_dir.create_workingtree('m1')
 
258
 
 
259
        # Create a second branch, with an extra commit
 
260
        other = master.bzrdir.sprout('other').open_workingtree()
 
261
        self.build_tree(['other/file2'])
 
262
        other.add(['file2'])
 
263
        other.commit('other2', rev_id='o2')
 
264
 
 
265
        # Merge the other branch into checkout -  'start reviewing a patch'
 
266
        checkout1.merge_from_branch(other.branch)
 
267
        self.assertEqual(['o2'], checkout1.get_parent_ids()[1:])
 
268
 
 
269
        # Create a new commit in the master branch - 'someone else lands its'
 
270
        master.merge_from_branch(other.branch)
 
271
        master.commit('f3', rev_id='m2')
 
272
 
 
273
        # This should not report about local commits being pending
 
274
        # merges, because they were real merges (but are now gone).
 
275
        # It should perhaps report on them.
 
276
        out, err = self.run_bzr('update', working_dir='checkout1')
 
277
        self.assertEqual('', out)
 
278
        self.assertEqualDiff('''All changes applied successfully.
 
279
Updated to revision 2 of branch %s
 
280
''' % osutils.pathjoin(self.test_dir, 'master',),
 
281
                         err)
 
282
        # The pending merges should still be there
 
283
        self.assertEqual([], checkout1.get_parent_ids()[1:])
 
284
 
244
285
    def test_update_dash_r(self):
245
286
        master = self.make_branch_and_tree('master')
246
287
        os.chdir('master')
263
304
        self.assertEquals(['m1'], master.get_parent_ids())
264
305
 
265
306
    def test_update_dash_r_outside_history(self):
 
307
        """Ensure that we can update -r to dotted revisions.
 
308
        """
266
309
        master = self.make_branch_and_tree('master')
267
310
        self.build_tree(['master/file1'])
268
311
        master.add(['file1'])
269
312
        master.commit('one', rev_id='m1')
270
313
 
271
 
        # Create a second branch, with an extra commit
 
314
        # Create a second branch, with extra commits
272
315
        other = master.bzrdir.sprout('other').open_workingtree()
273
 
        self.build_tree(['other/file2'])
 
316
        self.build_tree(['other/file2', 'other/file3'])
274
317
        other.add(['file2'])
275
318
        other.commit('other2', rev_id='o2')
 
319
        other.add(['file3'])
 
320
        other.commit('other3', rev_id='o3')
276
321
 
277
322
        os.chdir('master')
278
323
        self.run_bzr('merge ../other')
279
324
        master.commit('merge', rev_id='merge')
280
325
 
281
 
        out, err = self.run_bzr('update -r revid:o2',
282
 
                                retcode=3)
283
 
        self.assertEqual('', out)
284
 
        self.assertEqual('bzr: ERROR: branch has no revision o2\n'
285
 
                         'bzr update --revision only works'
286
 
                         ' for a revision in the branch history\n',
287
 
                         err)
 
326
        # Switch to o2. file3 was added only in o3 and should be deleted.
 
327
        out, err = self.run_bzr('update -r revid:o2')
 
328
        self.assertContainsRe(err, '-D\s+file3')
 
329
        self.assertContainsRe(err, 'All changes applied successfully\.')
 
330
        self.assertContainsRe(err, 'Updated to revision 1.1.1 of branch .*')
 
331
 
 
332
        # Switch back to latest
 
333
        out, err = self.run_bzr('update')
 
334
        self.assertContainsRe(err, '\+N\s+file3')
 
335
        self.assertContainsRe(err, 'All changes applied successfully\.')
 
336
        self.assertContainsRe(err, 'Updated to revision 2 of branch .*')
288
337
 
289
338
    def test_update_dash_r_in_master(self):
290
339
        # Test that 'bzr update' works correctly when you have
310
359
2>Updated to revision 2 of branch .../master
311
360
''')
312
361
 
 
362
    def test_update_show_base(self):
 
363
        """bzr update support --show-base
 
364
 
 
365
        see https://bugs.launchpad.net/bzr/+bug/202374"""
 
366
 
 
367
        tree=self.make_branch_and_tree('.')
 
368
 
 
369
        f = open('hello','wt')
 
370
        f.write('foo')
 
371
        f.close()
 
372
        tree.add('hello')
 
373
        tree.commit('fie')
 
374
 
 
375
        f = open('hello','wt')
 
376
        f.write('fee')
 
377
        f.close()
 
378
        tree.commit('fee')
 
379
 
 
380
        #tree.update() gives no such revision, so ...
 
381
        self.run_bzr(['update','-r1'])
 
382
 
 
383
        #create conflict
 
384
        f = open('hello','wt')
 
385
        f.write('fie')
 
386
        f.close()
 
387
 
 
388
        out, err = self.run_bzr(['update','--show-base'],retcode=1)
 
389
 
 
390
        # check for conflict notification
 
391
        self.assertContainsString(err,
 
392
                                  ' M  hello\nText conflict in hello\n1 conflicts encountered.\n')
 
393
        
 
394
        self.assertEqualDiff('<<<<<<< TREE\n'
 
395
                             'fie||||||| BASE-REVISION\n'
 
396
                             'foo=======\n'
 
397
                             'fee>>>>>>> MERGE-SOURCE\n',
 
398
                             open('hello').read())
 
399
 
313
400
    def test_update_checkout_prevent_double_merge(self):
314
401
        """"Launchpad bug 113809 in bzr "update performs two merges"
315
402
        https://launchpad.net/bugs/113809"""