1
# Copyright (C) 2008 Canonical Ltd
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.
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.
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
"""Tests for MutableTree.
19
Most functionality of MutableTree is tested as part of WorkingTree.
28
class TestHooks(tests.TestCase):
30
def test_constructor(self):
31
"""Check that creating a MutableTreeHooks instance has the right
33
hooks = mutabletree.MutableTreeHooks()
34
self.assertTrue("start_commit" in hooks,
35
"start_commit not in %s" % hooks)
36
self.assertTrue("post_commit" in hooks,
37
"post_commit not in %s" % hooks)
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.
42
self.assertIsInstance(self._preserved_hooks[mutabletree.MutableTree][1],
43
mutabletree.MutableTreeHooks)
46
class TestHasChanges(tests.TestCaseWithTransport):
49
super(TestHasChanges, self).setUp()
50
self.tree = self.make_branch_and_tree('tree')
52
def test_with_uncommitted_changes(self):
53
self.build_tree(['tree/file'])
55
self.assertTrue(self.tree.has_changes())
57
def test_with_pending_merges(self):
58
self.tree.commit('first commit')
59
other_tree = self.tree.bzrdir.sprout('other').open_workingtree()
60
other_tree.commit('mergeable commit')
61
self.tree.merge_from_branch(other_tree.branch)
62
self.assertTrue(self.tree.has_changes())