~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/test_xml.py

  • Committer: Robert Collins
  • Date: 2005-10-11 07:00:25 UTC
  • mto: This revision was merged to the branch mainline in revision 1443.
  • Revision ID: robertc@robertcollins.net-20051011070025-bac6b53cb6186dfd
create a config module - there is enough config logic to make this worthwhile, and start testing config processing.

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.tests import TestCase
 
19
from bzrlib.selftest import TestCase
20
20
from bzrlib.inventory import Inventory, InventoryEntry
21
21
from bzrlib.xml4 import serializer_v4
22
 
import bzrlib.xml5
 
22
from bzrlib.xml5 import serializer_v5
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
 
 
89
74
class TestSerializer(TestCase):
90
75
    """Test XML serialization"""
91
76
    def test_canned_inventory(self):
111
96
    def test_unpack_revision_5(self):
112
97
        """Test unpacking a canned revision v5"""
113
98
        inp = StringIO(_revision_v5)
114
 
        rev = bzrlib.xml5.serializer_v5.read_revision(inp)
 
99
        rev = serializer_v5.read_revision(inp)
115
100
        eq = self.assertEqual
116
101
        eq(rev.committer,
117
102
           "Martin Pool <mbp@sourcefrog.net>")
123
108
    def test_unpack_inventory_5(self):
124
109
        """Unpack canned new-style inventory"""
125
110
        inp = StringIO(_committed_inv_v5)
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')
 
111
        inv = serializer_v5.read_inventory(inp)
 
112
        eq = self.assertEqual
 
113
        eq(len(inv), 4)
142
114
        ie = inv['bar-20050824000535-6bc48cfad47ed134']
143
115
        eq(ie.kind, 'file')
144
116
        eq(ie.revision, 'mbp@foo-00')
147
119
 
148
120
    def test_repack_inventory_5(self):
149
121
        inp = StringIO(_committed_inv_v5)
150
 
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
 
122
        inv = serializer_v5.read_inventory(inp)
151
123
        outp = StringIO()
152
 
        bzrlib.xml5.serializer_v5.write_inventory(inv, outp)
153
 
        inv2 = bzrlib.xml5.serializer_v5.read_inventory(StringIO(outp.getvalue()))
 
124
        serializer_v5.write_inventory(inv, outp)
 
125
        inv2 = serializer_v5.read_inventory(StringIO(outp.getvalue()))
154
126
        self.assertEqual(inv, inv2)
155
127
 
156
128
    def test_repack_revision_5(self):
157
 
        """Round-trip revision to XML v5"""
158
129
        inp = StringIO(_revision_v5)
159
 
        rev = bzrlib.xml5.serializer_v5.read_revision(inp)
 
130
        rev = serializer_v5.read_revision(inp)
160
131
        outp = StringIO()
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))
 
132
        serializer_v5.write_revision(rev, outp)
 
133
        rev2 = serializer_v5.read_revision(StringIO(outp.getvalue()))
164
134
        self.assertEqual(rev, rev2)
165
135
 
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)