~bzr-pqm/bzr/bzr.dev

3335.1.1 by Jelmer Vernooij
Add tests for mutabletree hooks.
1
# Copyright (C) 2008 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
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3335.1.1 by Jelmer Vernooij
Add tests for mutabletree hooks.
16
17
"""Tests for MutableTree.
18
19
Most functionality of MutableTree is tested as part of WorkingTree.
20
"""
21
4721.3.3 by Vincent Ladeuil
Fixed as per John's review.
22
from bzrlib import (
23
    mutabletree,
24
    tests,
25
    )
26
27
28
class TestHooks(tests.TestCase):
3335.1.1 by Jelmer Vernooij
Add tests for mutabletree hooks.
29
30
    def test_constructor(self):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
31
        """Check that creating a MutableTreeHooks instance has the right
3335.1.1 by Jelmer Vernooij
Add tests for mutabletree hooks.
32
        defaults."""
4721.3.3 by Vincent Ladeuil
Fixed as per John's review.
33
        hooks = mutabletree.MutableTreeHooks()
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
34
        self.assertTrue("start_commit" in hooks,
3335.1.1 by Jelmer Vernooij
Add tests for mutabletree hooks.
35
                        "start_commit not in %s" % hooks)
4634.33.3 by Ian Clatworthy
review feedback from Robert: rename finish_commit to post_commit
36
        self.assertTrue("post_commit" in hooks,
37
                        "post_commit not in %s" % hooks)
3335.1.1 by Jelmer Vernooij
Add tests for mutabletree hooks.
38
39
    def test_installed_hooks_are_MutableTreeHooks(self):
40
        """The installed hooks object should be a MutableTreeHooks."""
41
        # the installed hooks are saved in self._preserved_hooks.
4721.3.3 by Vincent Ladeuil
Fixed as per John's review.
42
        self.assertIsInstance(self._preserved_hooks[mutabletree.MutableTree][1],
43
                              mutabletree.MutableTreeHooks)
44
45
46
class TestHasChanges(tests.TestCaseWithTransport):
47
48
    def setUp(self):
49
        super(TestHasChanges, self).setUp()
50
        self.tree = self.make_branch_and_tree('tree')
51
52
    def test_with_uncommitted_changes(self):
53
        self.build_tree(['tree/file'])
54
        self.tree.add('file')
55
        self.assertTrue(self.tree.has_changes())
56
57
    def test_with_pending_merges(self):
58
        other_tree = self.tree.bzrdir.sprout('other').open_workingtree()
59
        self.build_tree(['other/file'])
60
        other_tree.add('file')
61
        other_tree.commit('added file')
62
        self.tree.merge_from_branch(other_tree.branch)
63
        self.assertTrue(self.tree.has_changes())