557
557
tree = self.make_branch_and_tree('.')
558
558
self.assertRaises(errors.PathsNotVersionedError, tree.commit,
559
559
'message', specific_files=['bogus'])
561
class Callback(object):
563
def __init__(self, message, testcase):
565
self.message = message
566
self.testcase = testcase
568
def __call__(self, commit_obj):
570
self.testcase.assertTrue(isinstance(commit_obj, Commit))
573
def test_commit_callback(self):
574
"""Commit should invoke a callback to get the message"""
576
tree = self.make_branch_and_tree('.')
580
self.assertTrue(isinstance(e, BzrError))
581
self.assertEqual('The message or message_callback keyword'
582
' parameter is required for commit().', str(e))
584
self.fail('exception not raised')
585
cb = self.Callback(u'commit 1', self)
586
tree.commit(message_callback=cb)
587
self.assertTrue(cb.called)
588
repository = tree.branch.repository
589
message = repository.get_revision(tree.last_revision()).message
590
self.assertEqual('commit 1', message)
592
def test_no_callback_pointless(self):
593
"""Callback should not be invoked for pointless commit"""
594
tree = self.make_branch_and_tree('.')
595
cb = self.Callback(u'commit 2', self)
596
self.assertRaises(PointlessCommit, tree.commit, message_callback=cb,
597
allow_pointless=False)
598
self.assertFalse(cb.called)
600
def test_no_callback_netfailure(self):
601
"""Callback should not be invoked if connectivity fails"""
602
tree = self.make_branch_and_tree('.')
603
cb = self.Callback(u'commit 2', self)
604
repository = tree.branch.repository
605
# simulate network failure
606
def raise_(self, arg, arg2):
607
raise errors.NoSuchFile('foo')
608
repository.add_inventory = raise_
609
self.assertRaises(errors.NoSuchFile, tree.commit, message_callback=cb)
610
self.assertFalse(cb.called)