~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/bzrdir_implementations/test_bzrdir.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-09-28 08:13:58 UTC
  • mfrom: (1957.1.17 wait-on-lock)
  • Revision ID: pqm@pqm.ubuntu.com-20060928081358-b8dfad24b0625b94
(jam) tests that expect LockContention should timeout sooner

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import sys
23
23
 
24
24
import bzrlib.branch
25
 
import bzrlib.bzrdir as bzrdir
 
25
from bzrlib import (
 
26
    bzrdir,
 
27
    errors,
 
28
    lockdir,
 
29
    repository,
 
30
    transactions,
 
31
    transport,
 
32
    ui,
 
33
    workingtree,
 
34
    )
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,
30
38
                           NoSuchRevision,
31
39
                           NoSuchFile,
32
40
                           UninitializableFormat,
33
41
                           NotBranchError,
34
42
                           )
35
 
import bzrlib.repository as repository
36
43
import bzrlib.revision
37
44
from bzrlib.tests import (
38
45
                          ChrootedTestCase,
41
48
                          TestSkipped,
42
49
                          )
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
50
53
 
51
54
 
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()
1329
 
        branch.lock_write()
1330
 
        branch.unlock()
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
1333
 
        # touched it.
1334
 
        repo = thisdir.open_repository()
1335
 
        self.assertRaises(errors.LockContention, repo.lock_write)
1336
 
        unused_repo.unlock()
 
1323
        try:
 
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()
 
1333
            branch.lock_write()
 
1334
            branch.unlock()
 
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
 
1337
            # touched it.
 
1338
            repo = thisdir.open_repository()
 
1339
            orig_default = lockdir._DEFAULT_TIMEOUT_SECONDS
 
1340
            try:
 
1341
                lockdir._DEFAULT_TIMEOUT_SECONDS = 1
 
1342
                self.assertRaises(errors.LockContention, repo.lock_write)
 
1343
            finally:
 
1344
                lockdir._DEFAULT_TIMEOUT_SECONDS = orig_default
 
1345
        finally:
 
1346
            unused_repo.unlock()
1337
1347
        self.assertRaises(errors.LockBroken, master.unlock)
1338
1348
 
1339
1349
    def test_break_lock_tree(self):