~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_xml.py

  • Committer: Martin Pool
  • Date: 2006-08-10 01:16:16 UTC
  • mto: (1904.1.2 0.9)
  • mto: This revision was merged to the branch mainline in revision 1913.
  • Revision ID: mbp@sourcefrog.net-20060810011616-d74881eba696e746
compare_trees is deprecated in 0.9 not 0.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2005 by Canonical Ltd
2
 
 
 
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
 
 
7
#
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
12
 
 
 
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
from cStringIO import StringIO
18
18
 
19
 
from bzrlib.selftest import TestCase
 
19
from bzrlib.tests import TestCase
20
20
from bzrlib.inventory import Inventory, InventoryEntry
21
21
from bzrlib.xml4 import serializer_v4
22
 
from bzrlib.xml5 import serializer_v5
 
22
import bzrlib.xml5
23
23
 
24
24
_working_inventory_v4 = """<inventory file_id="TREE_ROOT">
25
25
<entry file_id="bar-20050901064931-73b4b1138abc9cd2" kind="file" name="bar" parent_id="TREE_ROOT" />
71
71
</inventory>
72
72
"""
73
73
 
 
74
_basis_inv_v5 = """<inventory revision_id="mbp@sourcefrog.net-20050905063503-43948f59fa127d92">
 
75
<file file_id="bar-20050901064931-73b4b1138abc9cd2" 
 
76
      name="bar" parent_id="TREE_ROOT" 
 
77
      revision="mbp@foo-123123"/>
 
78
<directory name="subdir"
 
79
           file_id="foo-20050801201819-4139aa4a272f4250"
 
80
           parent_id="TREE_ROOT" 
 
81
           revision="mbp@foo-00"/>
 
82
<file file_id="bar-20050824000535-6bc48cfad47ed134" 
 
83
      name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" 
 
84
      revision="mbp@foo-00"/>
 
85
</inventory>
 
86
"""
 
87
 
 
88
 
74
89
class TestSerializer(TestCase):
75
90
    """Test XML serialization"""
76
91
    def test_canned_inventory(self):
96
111
    def test_unpack_revision_5(self):
97
112
        """Test unpacking a canned revision v5"""
98
113
        inp = StringIO(_revision_v5)
99
 
        rev = serializer_v5.read_revision(inp)
 
114
        rev = bzrlib.xml5.serializer_v5.read_revision(inp)
100
115
        eq = self.assertEqual
101
116
        eq(rev.committer,
102
117
           "Martin Pool <mbp@sourcefrog.net>")
108
123
    def test_unpack_inventory_5(self):
109
124
        """Unpack canned new-style inventory"""
110
125
        inp = StringIO(_committed_inv_v5)
111
 
        inv = serializer_v5.read_inventory(inp)
112
 
        eq = self.assertEqual
113
 
        eq(len(inv), 4)
 
126
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
 
127
        eq = self.assertEqual
 
128
        eq(len(inv), 4)
 
129
        ie = inv['bar-20050824000535-6bc48cfad47ed134']
 
130
        eq(ie.kind, 'file')
 
131
        eq(ie.revision, 'mbp@foo-00')
 
132
        eq(ie.name, 'bar')
 
133
        eq(inv[ie.parent_id].kind, 'directory')
 
134
 
 
135
    def test_unpack_basis_inventory_5(self):
 
136
        """Unpack canned new-style inventory"""
 
137
        inp = StringIO(_basis_inv_v5)
 
138
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
 
139
        eq = self.assertEqual
 
140
        eq(len(inv), 4)
 
141
        eq(inv.revision_id, 'mbp@sourcefrog.net-20050905063503-43948f59fa127d92')
114
142
        ie = inv['bar-20050824000535-6bc48cfad47ed134']
115
143
        eq(ie.kind, 'file')
116
144
        eq(ie.revision, 'mbp@foo-00')
119
147
 
120
148
    def test_repack_inventory_5(self):
121
149
        inp = StringIO(_committed_inv_v5)
122
 
        inv = serializer_v5.read_inventory(inp)
 
150
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
123
151
        outp = StringIO()
124
 
        serializer_v5.write_inventory(inv, outp)
125
 
        inv2 = serializer_v5.read_inventory(StringIO(outp.getvalue()))
 
152
        bzrlib.xml5.serializer_v5.write_inventory(inv, outp)
 
153
        inv2 = bzrlib.xml5.serializer_v5.read_inventory(StringIO(outp.getvalue()))
126
154
        self.assertEqual(inv, inv2)
127
155
 
128
156
    def test_repack_revision_5(self):
 
157
        """Round-trip revision to XML v5"""
129
158
        inp = StringIO(_revision_v5)
130
 
        rev = serializer_v5.read_revision(inp)
 
159
        rev = bzrlib.xml5.serializer_v5.read_revision(inp)
131
160
        outp = StringIO()
132
 
        serializer_v5.write_revision(rev, outp)
133
 
        rev2 = serializer_v5.read_revision(StringIO(outp.getvalue()))
 
161
        bzrlib.xml5.serializer_v5.write_revision(rev, outp)
 
162
        outfile_contents = outp.getvalue()
 
163
        rev2 = bzrlib.xml5.serializer_v5.read_revision(StringIO(outfile_contents))
134
164
        self.assertEqual(rev, rev2)
135
165
 
 
166
    def test_pack_revision_5(self):
 
167
        """Pack revision to XML v5"""
 
168
        # fixed 20051025, revisions should have final newline
 
169
        rev = bzrlib.xml5.serializer_v5.read_revision_from_string(_revision_v5)
 
170
        outp = StringIO()
 
171
        bzrlib.xml5.serializer_v5.write_revision(rev, outp)
 
172
        outfile_contents = outp.getvalue()
 
173
        self.assertEqual(outfile_contents[-1], '\n')
 
174
        self.assertEqualDiff(outfile_contents, bzrlib.xml5.serializer_v5.write_revision_to_string(rev))
 
175
 
 
176
    def test_empty_property_value(self):
 
177
        """Create an empty property value check that it serializes correctly"""
 
178
        s_v5 = bzrlib.xml5.serializer_v5
 
179
        rev = s_v5.read_revision_from_string(_revision_v5)
 
180
        outp = StringIO()
 
181
        props = {'empty':'', 'one':'one'}
 
182
        rev.properties = props
 
183
        txt = s_v5.write_revision_to_string(rev)
 
184
        new_rev = s_v5.read_revision_from_string(txt)
 
185
        self.assertEqual(props, new_rev.properties)