/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1687.1.7 by Robert Collins
Teach Repository about break_lock.
1
# Copyright (C) 2006 by Canonical Ltd
2
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
"""Tests for repository break-lock."""
18
19
from cStringIO import StringIO
20
21
import bzrlib
22
import bzrlib.errors as errors
23
from bzrlib.tests.repository_implementations.test_repository import TestCaseWithRepository
24
from bzrlib.transport import get_transport
25
from bzrlib.tree import EmptyTree
26
from bzrlib.workingtree import WorkingTree
27
28
29
class TestBreakLock(TestCaseWithRepository):
30
31
    def setUp(self):
32
        super(TestBreakLock, self).setUp()
33
        self.unused_repo = self.make_repository('.')
34
        self.repo = self.unused_repo.bzrdir.open_repository()
35
        # we want a UI factory that accepts canned input for the tests:
36
        # while SilentUIFactory still accepts stdin, we need to customise
37
        # ours
38
        self.old_factory = bzrlib.ui.ui_factory
1687.1.15 by Robert Collins
Review comments.
39
        self.addCleanup(self.restoreFactory)
1687.1.7 by Robert Collins
Teach Repository about break_lock.
40
        bzrlib.ui.ui_factory = bzrlib.ui.SilentUIFactory()
41
        bzrlib.ui.ui_factory.stdin = StringIO("y\n")
42
1687.1.15 by Robert Collins
Review comments.
43
    def restoreFactory(self):
1687.1.7 by Robert Collins
Teach Repository about break_lock.
44
        bzrlib.ui.ui_factory = self.old_factory
45
46
    def test_unlocked(self):
47
        # break lock when nothing is locked should just return
48
        try:
49
            self.repo.break_lock()
50
        except NotImplementedError:
51
            pass
52
53
    def test_locked(self):
54
        # break_lock when locked should
55
        self.repo.lock_write()
56
        try:
57
            self.unused_repo.break_lock()
58
        except NotImplementedError:
59
            # repository does not support break_lock
60
            self.repo.unlock()
61
            return
62
        self.assertRaises(errors.LockBroken, self.repo.unlock)