/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
4597.9.2 by Vincent Ladeuil
Merge bzr.dev into cleanup
1
# Copyright (C) 2006, 2007, 2009, 2010 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
1553.5.34 by Martin Pool
Stub lock-breaking command
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
1553.5.34 by Martin Pool
Stub lock-breaking command
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
1553.5.34 by Martin Pool
Stub lock-breaking command
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
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1553.5.34 by Martin Pool
Stub lock-breaking command
16
17
"""Tests for lock-breaking user interface"""
18
19
import os
20
1687.1.12 by Robert Collins
Hook in the full break-lock ui.
21
import bzrlib
1957.1.17 by John Arbash Meinel
Change tests that expect locking to fail to timeout sooner.
22
from bzrlib import (
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
23
    branch,
24
    bzrdir,
5345.5.9 by Vincent Ladeuil
Implements 'bzr lock --config <file>'.
25
    config,
1957.1.17 by John Arbash Meinel
Change tests that expect locking to fail to timeout sooner.
26
    errors,
27
    lockdir,
5345.5.9 by Vincent Ladeuil
Implements 'bzr lock --config <file>'.
28
    osutils,
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
29
    tests,
1957.1.17 by John Arbash Meinel
Change tests that expect locking to fail to timeout sooner.
30
    )
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
31
32
33
class TestBreakLock(tests.TestCaseWithTransport):
1687.1.1 by Robert Collins
Document what the break-lock commands should be like
34
35
    # General principal for break-lock: All the elements that might be locked
36
    # by a bzr operation on PATH, are candidates that break-lock may unlock.
37
    # so pathologically if we have a lightweight checkout A, of branch B, which
38
    # is bound to location C, the following things should be checked for locks
39
    # to break:
40
    # wt = WorkingTree(A)
41
    # wt.branch
42
    # wt.branch.repository
43
    # wt.branch.get_master_branch()
44
    # wt.branch.get_master_branch().repository
45
    # so for smoke tests all we need is a bound branch with a checkout of that
46
    # and we can then use different urls to test individual cases, for as much
47
    # granularity as needed.
48
49
    def setUp(self):
50
        super(TestBreakLock, self).setUp()
51
        self.build_tree(
52
            ['master-repo/',
53
             'master-repo/master-branch/',
54
             'repo/',
55
             'repo/branch/',
56
             'checkout/'])
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
57
        bzrdir.BzrDir.create('master-repo').create_repository()
58
        self.master_branch = bzrdir.BzrDir.create_branch_convenience(
1687.1.1 by Robert Collins
Document what the break-lock commands should be like
59
            'master-repo/master-branch')
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
60
        bzrdir.BzrDir.create('repo').create_repository()
61
        local_branch = bzrdir.BzrDir.create_branch_convenience('repo/branch')
1687.1.1 by Robert Collins
Document what the break-lock commands should be like
62
        local_branch.bind(self.master_branch)
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
63
        checkoutdir = bzrdir.BzrDir.create('checkout')
64
        branch.BranchReferenceFormat().initialize(
5051.3.10 by Jelmer Vernooij
Pass colocated branch name around in more places.
65
            checkoutdir, target_branch=local_branch)
1687.1.12 by Robert Collins
Hook in the full break-lock ui.
66
        self.wt = checkoutdir.create_workingtree()
1687.1.1 by Robert Collins
Document what the break-lock commands should be like
67
1553.5.34 by Martin Pool
Stub lock-breaking command
68
    def test_break_lock_help(self):
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
69
        out, err = self.run_bzr('break-lock --help')
1687.1.1 by Robert Collins
Document what the break-lock commands should be like
70
        # shouldn't fail and should not produce error output
71
        self.assertEqual('', err)
72
73
    def test_break_lock_everything_locked(self):
74
        ### if everything is locked, we should be able to unlock the lot.
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
75
        # however, we dont test breaking the working tree because we
76
        # cannot accurately do so right now: the dirstate lock is held
2255.2.143 by Robert Collins
Update break-lock blackbox test to not break with dirstate as the default tree format. Unfortunately this slightly reduces test coverage of the UI.
77
        # by an os lock, and we need to spawn a separate process to lock it
5345.5.2 by Vincent Ladeuil
Fix typo.
78
        # then kill -9 it.
1687.1.1 by Robert Collins
Document what the break-lock commands should be like
79
        # sketch of test:
2255.2.143 by Robert Collins
Update break-lock blackbox test to not break with dirstate as the default tree format. Unfortunately this slightly reduces test coverage of the UI.
80
        # lock most of the dir:
81
        self.wt.branch.lock_write()
1687.1.1 by Robert Collins
Document what the break-lock commands should be like
82
        self.master_branch.lock_write()
83
        # run the break-lock
1687.1.12 by Robert Collins
Hook in the full break-lock ui.
84
        # we need 5 yes's - wt, branch, repo, bound branch, bound repo.
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
85
        self.run_bzr('break-lock checkout', stdin="y\ny\ny\ny\n")
1687.1.12 by Robert Collins
Hook in the full break-lock ui.
86
        # a new tree instance should be lockable
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
87
        br = branch.Branch.open('checkout')
88
        br.lock_write()
89
        br.unlock()
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
90
        # and a new instance of the master branch
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
91
        mb = br.get_master_branch()
1687.1.12 by Robert Collins
Hook in the full break-lock ui.
92
        mb.lock_write()
93
        mb.unlock()
94
        self.assertRaises(errors.LockBroken, self.wt.unlock)
95
        self.assertRaises(errors.LockBroken, self.master_branch.unlock)
1687.1.16 by Robert Collins
Ensure that answering no to break lock leaves the locks in place. This is currently simple - ask for everything always.
96
1687.1.17 by Robert Collins
Test break lock on old format branches.
97
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
98
class TestBreakLockOldBranch(tests.TestCaseWithTransport):
1687.1.17 by Robert Collins
Test break lock on old format branches.
99
100
    def test_break_lock_format_5_bzrdir(self):
101
        # break lock on a format 5 bzrdir should just return
5356.1.1 by Vincent Ladeuil
Cleanup test imports.
102
        self.make_branch_and_tree('foo', format=bzrdir.BzrDirFormat5())
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
103
        out, err = self.run_bzr('break-lock foo')
1687.1.17 by Robert Collins
Test break lock on old format branches.
104
        self.assertEqual('', out)
105
        self.assertEqual('', err)
5345.5.9 by Vincent Ladeuil
Implements 'bzr lock --config <file>'.
106
107
class TestConfigBreakLock(tests.TestCaseWithTransport):
108
109
    def setUp(self):
110
        super(TestConfigBreakLock, self).setUp()
111
        self.config_file_name = './my.conf'
112
        self.build_tree_contents([(self.config_file_name,
113
                                   '[DEFAULT]\none=1\n')])
114
        self.config = config.LockableConfig(file_name=self.config_file_name)
115
        self.config.lock_write()
116
117
    def test_create_pending_lock(self):
118
        self.addCleanup(self.config.unlock)
119
        self.assertTrue(self.config._lock.is_held)
120
121
    def test_break_lock(self):
122
        self.run_bzr('break-lock --config %s'
123
                     % osutils.dirname(self.config_file_name),
124
                     stdin="y\n")
125
        self.assertRaises(errors.LockBroken, self.config.unlock)
126