21
from bzrlib import errors, osutils, tests
22
from bzrlib.tests import TestCaseWithTransport
23
27
from bzrlib.branch import Branch
24
28
from bzrlib.bzrdir import BzrDir, BzrDirMetaFormat1
25
from bzrlib.workingtree import WorkingTree
26
29
from bzrlib.commit import Commit, NullCommitReporter
27
30
from bzrlib.config import BranchConfig
28
31
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed,
33
from bzrlib.tests import TestCaseWithTransport
34
from bzrlib.workingtree import WorkingTree
32
37
# TODO: Test commit with some added, and added-but-missing files
408
413
bound = master.sprout('bound')
409
414
wt = bound.open_workingtree()
410
415
wt.branch.set_bound_location(os.path.realpath('master'))
417
orig_default = lockdir._DEFAULT_TIMEOUT_SECONDS
411
418
master_branch.lock_write()
420
lockdir._DEFAULT_TIMEOUT_SECONDS = 1
413
421
self.assertRaises(LockContention, wt.commit, 'silly')
423
lockdir._DEFAULT_TIMEOUT_SECONDS = orig_default
415
424
master_branch.unlock()
417
426
def test_commit_bound_merge(self):
595
604
tree = self.make_branch_and_tree('.')
596
605
self.assertRaises(errors.PathsNotVersionedError, tree.commit,
597
606
'message', specific_files=['bogus'])
608
class Callback(object):
610
def __init__(self, message, testcase):
612
self.message = message
613
self.testcase = testcase
615
def __call__(self, commit_obj):
617
self.testcase.assertTrue(isinstance(commit_obj, Commit))
620
def test_commit_callback(self):
621
"""Commit should invoke a callback to get the message"""
623
tree = self.make_branch_and_tree('.')
627
self.assertTrue(isinstance(e, BzrError))
628
self.assertEqual('The message or message_callback keyword'
629
' parameter is required for commit().', str(e))
631
self.fail('exception not raised')
632
cb = self.Callback(u'commit 1', self)
633
tree.commit(message_callback=cb)
634
self.assertTrue(cb.called)
635
repository = tree.branch.repository
636
message = repository.get_revision(tree.last_revision()).message
637
self.assertEqual('commit 1', message)
639
def test_no_callback_pointless(self):
640
"""Callback should not be invoked for pointless commit"""
641
tree = self.make_branch_and_tree('.')
642
cb = self.Callback(u'commit 2', self)
643
self.assertRaises(PointlessCommit, tree.commit, message_callback=cb,
644
allow_pointless=False)
645
self.assertFalse(cb.called)
647
def test_no_callback_netfailure(self):
648
"""Callback should not be invoked if connectivity fails"""
649
tree = self.make_branch_and_tree('.')
650
cb = self.Callback(u'commit 2', self)
651
repository = tree.branch.repository
652
# simulate network failure
653
def raise_(self, arg, arg2):
654
raise errors.NoSuchFile('foo')
655
repository.add_inventory = raise_
656
self.assertRaises(errors.NoSuchFile, tree.commit, message_callback=cb)
657
self.assertFalse(cb.called)