24
24
import bzrlib.branch
25
import bzrlib.bzrdir as bzrdir
26
35
from bzrlib.branch import Branch, needs_read_lock, needs_write_lock
27
36
from bzrlib.check import check
28
import bzrlib.errors as errors
29
37
from bzrlib.errors import (FileExists,
32
40
UninitializableFormat,
35
import bzrlib.repository as repository
36
43
import bzrlib.revision
37
44
from bzrlib.tests import (
43
50
from bzrlib.trace import mutter
44
import bzrlib.transactions as transactions
45
import bzrlib.transport as transport
46
51
from bzrlib.transport import get_transport
47
import bzrlib.ui as ui
48
52
from bzrlib.upgrade import upgrade
49
import bzrlib.workingtree as workingtree
52
55
class TestCaseWithBzrDir(TestCaseWithTransport):
1317
1320
unused_repo = thisdir.create_repository()
1318
1321
master.lock_write()
1319
1322
unused_repo.lock_write()
1320
# two yes's : branch and repository. If the repo in this
1321
# dir is inappropriately accessed, 3 will be needed, and
1322
# we'll see that because the stream will be fully consumed
1323
bzrlib.ui.ui_factory.stdin = StringIO("y\ny\ny\n")
1324
master.bzrdir.break_lock()
1325
# only two ys should have been read
1326
self.assertEqual("y\n", bzrlib.ui.ui_factory.stdin.read())
1327
# we should be able to lock a newly opened branch now
1328
branch = master.bzrdir.open_branch()
1331
# we should not be able to lock the repository in thisdir as its still
1332
# held by the explicit lock we took, and the break lock should not have
1334
repo = thisdir.open_repository()
1335
self.assertRaises(errors.LockContention, repo.lock_write)
1336
unused_repo.unlock()
1324
# two yes's : branch and repository. If the repo in this
1325
# dir is inappropriately accessed, 3 will be needed, and
1326
# we'll see that because the stream will be fully consumed
1327
bzrlib.ui.ui_factory.stdin = StringIO("y\ny\ny\n")
1328
master.bzrdir.break_lock()
1329
# only two ys should have been read
1330
self.assertEqual("y\n", bzrlib.ui.ui_factory.stdin.read())
1331
# we should be able to lock a newly opened branch now
1332
branch = master.bzrdir.open_branch()
1335
# we should not be able to lock the repository in thisdir as its still
1336
# held by the explicit lock we took, and the break lock should not have
1338
repo = thisdir.open_repository()
1339
orig_default = lockdir._DEFAULT_TIMEOUT_SECONDS
1341
lockdir._DEFAULT_TIMEOUT_SECONDS = 1
1342
self.assertRaises(errors.LockContention, repo.lock_write)
1344
lockdir._DEFAULT_TIMEOUT_SECONDS = orig_default
1346
unused_repo.unlock()
1337
1347
self.assertRaises(errors.LockBroken, master.unlock)
1339
1349
def test_break_lock_tree(self):