/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_commit.py

  • Committer: Aaron Bentley
  • Date: 2006-11-23 21:37:24 UTC
  • mto: This revision was merged to the branch mainline in revision 2155.
  • Revision ID: abentley@panoramicfeedback.com-20061123213724-pbn0jfgtwg3cln9h
Provide a message_callback parameter to tree.commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
339
339
            from bzrlib.testament import Testament
340
340
            # monkey patch gpg signing mechanism
341
341
            bzrlib.gpg.GPGStrategy = bzrlib.gpg.LoopbackGPGStrategy
342
 
            commit.Commit(config=MustSignConfig(branch)).commit(message="base",
343
 
                                                      allow_pointless=True,
344
 
                                                      rev_id='B',
345
 
                                                      working_tree=wt)
 
342
            commit.Commit(config=MustSignConfig(branch)).commit(
 
343
                message_callback=lambda: "base", allow_pointless=True,
 
344
                rev_id='B', working_tree=wt)
346
345
            self.assertEqual(Testament.from_revision(branch.repository,
347
346
                             'B').as_short_text(),
348
347
                             branch.repository.get_signature_text('B'))
385
384
        try:
386
385
            config = BranchWithHooks(branch)
387
386
            commit.Commit(config=config).commit(
388
 
                            message = "base",
 
387
                            message_callback=lambda: "base",
389
388
                            allow_pointless=True,
390
389
                            rev_id='A', working_tree = wt)
391
390
            self.assertEqual(['called', 'called'], calls)
396
395
        # using the Commit object directly does not set the branch nick.
397
396
        wt = self.make_branch_and_tree('.')
398
397
        c = Commit()
399
 
        c.commit(working_tree=wt, message='empty tree', allow_pointless=True)
 
398
        c.commit(working_tree=wt, message_callback=lambda:'empty tree', 
 
399
                 allow_pointless=True)
400
400
        self.assertEquals(wt.branch.revno(), 1)
401
401
        self.assertEqual({},
402
402
                         wt.branch.repository.get_revision(
557
557
        tree = self.make_branch_and_tree('.')
558
558
        self.assertRaises(errors.PathsNotVersionedError, tree.commit, 
559
559
                          'message', specific_files=['bogus'])
 
560
 
 
561
    class Callback(object):
 
562
        
 
563
        def __init__(self, message):
 
564
            self.called = False
 
565
            self.message = message
 
566
 
 
567
        def __call__(self):
 
568
            self.called = True
 
569
            return self.message
 
570
 
 
571
    def test_commit_callback(self):
 
572
        """Commit should invoke a callback to get the message"""
 
573
 
 
574
        tree = self.make_branch_and_tree('.')
 
575
        try:
 
576
            tree.commit()
 
577
        except Exception, e:
 
578
            self.assertTrue(isinstance(e, BzrError))
 
579
            self.assertEqual('The message_callback keyword parameter is'
 
580
                             ' required for commit().', str(e))
 
581
        else:
 
582
            self.fail('exception not raised')
 
583
        cb = self.Callback('commit 1')
 
584
        tree.commit(message_callback=cb)
 
585
        self.assertTrue(cb.called)
 
586
        repository = tree.branch.repository
 
587
        message = repository.get_revision(tree.last_revision()).message
 
588
        self.assertEqual('commit 1', message)
 
589
 
 
590
    def test_no_callback_pointless(self):
 
591
        """Callback should not be invoked for pointless commit"""
 
592
        tree = self.make_branch_and_tree('.')
 
593
        cb = self.Callback('commit 2')
 
594
        self.assertRaises(PointlessCommit, tree.commit, message_callback=cb, 
 
595
                          allow_pointless=False)
 
596
        self.assertFalse(cb.called)
 
597
 
 
598
    def test_no_callback_netfailure(self):
 
599
        """Callback should not be invoked if connectivity fails"""
 
600
        # simulate network failure
 
601
        tree = self.make_branch_and_tree('.')
 
602
        def raise_(self, arg, arg2):
 
603
            raise errors.NoSuchFile('foo')
 
604
        cb = self.Callback('commit 2')
 
605
        repository = tree.branch.repository
 
606
        repository.add_inventory = raise_
 
607
        self.assertRaises(errors.NoSuchFile, tree.commit, message_callback=cb)
 
608
        self.assertFalse(cb.called)