/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1185.50.22 by John Arbash Meinel
Forgot to add the test.
1
# Copyright (C) 2004, 2005 by Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
1185.50.22 by John Arbash Meinel
Forgot to add the test.
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
#
1185.50.22 by John Arbash Meinel
Forgot to add the test.
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
#
1185.50.22 by John Arbash Meinel
Forgot to add the test.
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
import os
1532 by Robert Collins
Merge in John Meinels integration branch.
18
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
19
from bzrlib.tests.workingtree_implementations import TestCaseWithWorkingTree
1185.50.22 by John Arbash Meinel
Forgot to add the test.
20
from bzrlib.branch import Branch
1740.2.2 by Aaron Bentley
Add test for the basis inventory automatically adding the revision id.
21
from bzrlib.revision import Revision
1732.1.26 by John Arbash Meinel
Switch to using bzrlib.xml5.serializer_v5 so that a plugin can override it if we want
22
import bzrlib.xml5
1185.50.22 by John Arbash Meinel
Forgot to add the test.
23
1532 by Robert Collins
Merge in John Meinels integration branch.
24
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
25
class TestBasisInventory(TestCaseWithWorkingTree):
1185.50.22 by John Arbash Meinel
Forgot to add the test.
26
27
    def test_create(self):
1638.1.2 by Robert Collins
Change the basis-inventory file to not have the revision-id in the file name.
28
        # TODO: jam 20051218 this probably should add more than just
29
        #                    a couple files to the inventory
30
1185.50.22 by John Arbash Meinel
Forgot to add the test.
31
        # Make sure the basis file is created by a commit
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
32
        t = self.make_branch_and_tree('.')
33
        b = t.branch
1185.50.22 by John Arbash Meinel
Forgot to add the test.
34
        open('a', 'wb').write('a\n')
35
        t.add('a')
36
        t.commit('a', rev_id='r1')
37
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
38
        t._control_files.get_utf8('basis-inventory')
1185.50.22 by John Arbash Meinel
Forgot to add the test.
39
1638.1.2 by Robert Collins
Change the basis-inventory file to not have the revision-id in the file name.
40
        basis_inv = t.basis_tree().inventory
41
        self.assertEquals('r1', basis_inv.revision_id)
1185.50.22 by John Arbash Meinel
Forgot to add the test.
42
        
1185.65.17 by Robert Collins
Merge from integration, mode-changes are broken.
43
        store_inv = b.repository.get_inventory('r1')
1185.50.22 by John Arbash Meinel
Forgot to add the test.
44
        self.assertEquals(store_inv._byid, basis_inv._byid)
45
46
        open('b', 'wb').write('b\n')
47
        t.add('b')
48
        t.commit('b', rev_id='r2')
49
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
50
        t._control_files.get_utf8('basis-inventory')
1185.50.22 by John Arbash Meinel
Forgot to add the test.
51
1638.1.2 by Robert Collins
Change the basis-inventory file to not have the revision-id in the file name.
52
        basis_inv_txt = t.read_basis_inventory()
1732.1.26 by John Arbash Meinel
Switch to using bzrlib.xml5.serializer_v5 so that a plugin can override it if we want
53
        basis_inv = bzrlib.xml5.serializer_v5.read_inventory_from_string(basis_inv_txt)
1910.2.2 by Aaron Bentley
Tweak test case
54
        basis_inv.root.revision = 'r2'
1638.1.2 by Robert Collins
Change the basis-inventory file to not have the revision-id in the file name.
55
        self.assertEquals('r2', basis_inv.revision_id)
1185.65.17 by Robert Collins
Merge from integration, mode-changes are broken.
56
        store_inv = b.repository.get_inventory('r2')
1185.50.22 by John Arbash Meinel
Forgot to add the test.
57
58
        self.assertEquals(store_inv._byid, basis_inv._byid)
59
1740.2.2 by Aaron Bentley
Add test for the basis inventory automatically adding the revision id.
60
    def test_basis_inv_gets_revision(self):
61
        """When the inventory of the basis tree has no revision id it gets set.
62
63
        It gets set during set_last_revision.
64
        """
65
        tree = self.make_branch_and_tree('.')
66
        tree.lock_write()
67
        tree.branch.repository.control_weaves.get_weave('inventory',
68
            tree.branch.repository.get_transaction()
69
            ).add_lines('r1', [], [
70
                '<inventory format="5">\n',
71
                '</inventory>\n'])
72
        rev = Revision(timestamp=0,
73
                       timezone=None,
74
                       committer="Foo Bar <foo@example.com>",
75
                       message="Message",
76
                       inventory_sha1="",
77
                       revision_id='r1')
78
        rev.parent_ids = []
79
        tree.branch.repository.add_revision('r1', rev)
80
        tree.unlock()
81
        tree.branch.append_revision('r1')
82
        tree.set_last_revision('r1')
83
        # TODO: we should deserialise the file here, rather than peeking
84
        # without parsing, but to do this properly needs a serialiser on the
85
        # tree object that abstracts whether it is xml/rio/etc.
86
        self.assertContainsRe(
87
            tree._control_files.get_utf8('basis-inventory').read(),
88
            'revision_id="r1"')
89