bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 1 | # Copyright (C) 2006 Canonical Ltd
 | 
| 2 | # Authors:  Robert Collins <robert.collins@canonical.com>
 | |
| 3 | #
 | |
| 4 | # This program is free software; you can redistribute it and/or modify
 | |
| 5 | # it under the terms of the GNU General Public License as published by
 | |
| 6 | # the Free Software Foundation; either version 2 of the License, or
 | |
| 7 | # (at your option) any later version.
 | |
| 8 | #
 | |
| 9 | # This program is distributed in the hope that it will be useful,
 | |
| 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| 12 | # GNU General Public License for more details.
 | |
| 13 | #
 | |
| 14 | # You should have received a copy of the GNU General Public License
 | |
| 15 | # along with this program; if not, write to the Free Software
 | |
| 16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
| 17 | ||
| 18 | """Tests for the TreeBuilder helper class."""
 | |
| 19 | ||
| 2466.7.1
by Robert Collins Tree builder tests do not need a working dir. | 20 | from bzrlib import errors, tests | 
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 21 | from bzrlib.memorytree import MemoryTree | 
| 22 | from bzrlib.tests import TestCaseWithTransport | |
| 23 | from bzrlib.treebuilder import TreeBuilder | |
| 24 | ||
| 25 | ||
| 26 | class FakeTree(object): | |
| 27 | """A pretend tree to test the calls made by TreeBuilder.""" | |
| 28 | ||
| 29 | def __init__(self): | |
| 30 | self._calls = [] | |
| 31 | ||
| 1986.1.9
by Robert Collins Update to the TreeBuilder tests. | 32 | def lock_tree_write(self): | 
| 33 | self._calls.append("lock_tree_write") | |
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 34 | |
| 35 | def unlock(self): | |
| 36 | self._calls.append("unlock") | |
| 37 | ||
| 38 | ||
| 39 | class TestFakeTree(TestCaseWithTransport): | |
| 3943.8.1
by Marius Kruger remove all trailing whitespace from bzr source | 40 | |
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 41 | def testFakeTree(self): | 
| 42 | """Check that FakeTree works as required for the TreeBuilder tests.""" | |
| 43 | tree = FakeTree() | |
| 44 | self.assertEqual([], tree._calls) | |
| 1986.1.9
by Robert Collins Update to the TreeBuilder tests. | 45 | tree.lock_tree_write() | 
| 46 | self.assertEqual(["lock_tree_write"], tree._calls) | |
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 47 | tree.unlock() | 
| 1986.1.9
by Robert Collins Update to the TreeBuilder tests. | 48 | self.assertEqual(["lock_tree_write", "unlock"], tree._calls) | 
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 49 | |
| 50 | ||
| 2466.7.1
by Robert Collins Tree builder tests do not need a working dir. | 51 | class TestTreeBuilderMemoryTree(tests.TestCaseWithMemoryTransport): | 
| 3943.8.1
by Marius Kruger remove all trailing whitespace from bzr source | 52 | |
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 53 | def test_create(self): | 
| 54 | builder = TreeBuilder() | |
| 55 | ||
| 56 | def test_start_tree_locks_write(self): | |
| 57 | builder = TreeBuilder() | |
| 58 | tree = FakeTree() | |
| 59 | builder.start_tree(tree) | |
| 1986.1.9
by Robert Collins Update to the TreeBuilder tests. | 60 | self.assertEqual(["lock_tree_write"], tree._calls) | 
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 61 | |
| 62 | def test_start_tree_when_started_fails(self): | |
| 63 | builder = TreeBuilder() | |
| 64 | tree = FakeTree() | |
| 65 | builder.start_tree(tree) | |
| 66 | self.assertRaises(errors.AlreadyBuilding, builder.start_tree, tree) | |
| 3943.8.1
by Marius Kruger remove all trailing whitespace from bzr source | 67 | |
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 68 | def test_finish_tree_not_started_errors(self): | 
| 69 | builder = TreeBuilder() | |
| 70 | self.assertRaises(errors.NotBuilding, builder.finish_tree) | |
| 71 | ||
| 72 | def test_finish_tree_unlocks(self): | |
| 73 | builder = TreeBuilder() | |
| 74 | tree = FakeTree() | |
| 75 | builder.start_tree(tree) | |
| 76 | builder.finish_tree() | |
| 1986.1.9
by Robert Collins Update to the TreeBuilder tests. | 77 | self.assertEqual(["lock_tree_write", "unlock"], tree._calls) | 
| 1986.1.2
by Robert Collins Various changes to allow non-workingtree specific tests to run entirely | 78 | |
| 79 | def test_build_tree_not_started_errors(self): | |
| 80 | builder = TreeBuilder() | |
| 81 | self.assertRaises(errors.NotBuilding, builder.build, "foo") | |
| 82 | ||
| 83 | def test_build_tree(self): | |
| 84 | """Test building works using a MemoryTree.""" | |
| 85 | branch = self.make_branch('branch') | |
| 86 | tree = MemoryTree.create_on_branch(branch) | |
| 87 | builder = TreeBuilder() | |
| 88 | builder.start_tree(tree) | |
| 89 | builder.build(['foo', "bar/", "bar/file"]) | |
| 90 | self.assertEqual('contents of foo\n', | |
| 91 | tree.get_file(tree.path2id('foo')).read()) | |
| 92 | self.assertEqual('contents of bar/file\n', | |
| 93 | tree.get_file(tree.path2id('bar/file')).read()) | |
| 94 | builder.finish_tree() | |
| 2466.7.1
by Robert Collins Tree builder tests do not need a working dir. | 95 |