~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/test_xml.py

  • Committer: Martin Pool
  • Date: 2005-09-16 06:52:59 UTC
  • Revision ID: mbp@sourcefrog.net-20050916065259-714aeb37c2510699
- remove another test that tries to merge an imaginary parent

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
 
from bzrlib.xml4 import serializer_v4
22
 
import bzrlib.xml5
 
21
from bzrlib.xml import serializer_v4
 
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" />
60
60
_committed_inv_v5 = """<inventory>
61
61
<file file_id="bar-20050901064931-73b4b1138abc9cd2" 
62
62
      name="bar" parent_id="TREE_ROOT" 
63
 
      revision="mbp@foo-123123"/>
64
 
<directory name="subdir"
65
 
           file_id="foo-20050801201819-4139aa4a272f4250"
66
 
           parent_id="TREE_ROOT" 
67
 
           revision="mbp@foo-00"/>
68
 
<file file_id="bar-20050824000535-6bc48cfad47ed134" 
69
 
      name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" 
70
 
      revision="mbp@foo-00"/>
71
 
</inventory>
72
 
"""
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
 
 
 
63
      text_version="mbp@foo-123123" entry_version="mbp@foo-123123"
 
64
      />
 
65
<directory name="subdir"
 
66
           file_id="foo-20050801201819-4139aa4a272f4250"
 
67
           parent_id="TREE_ROOT" 
 
68
           entry_version="mbp@foo-00"/>
 
69
<file file_id="bar-20050824000535-6bc48cfad47ed134" 
 
70
      name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" 
 
71
      entry_version="mbp@foo-00"
 
72
      text_version="mbp@foo-123123"/>
 
73
</inventory>
 
74
"""
88
75
 
89
76
class TestSerializer(TestCase):
90
77
    """Test XML serialization"""
104
91
           "Martin Pool <mbp@sourcefrog.net>")
105
92
        eq(rev.inventory_id,
106
93
           "mbp@sourcefrog.net-20050905080035-e0439293f8b6b9f9")
107
 
        eq(len(rev.parent_ids), 1)
108
 
        eq(rev.parent_ids[0],
 
94
        eq(len(rev.parents), 1)
 
95
        eq(rev.parents[0].revision_id,
109
96
           "mbp@sourcefrog.net-20050905063503-43948f59fa127d92")
110
97
 
111
98
    def test_unpack_revision_5(self):
112
99
        """Test unpacking a canned revision v5"""
113
100
        inp = StringIO(_revision_v5)
114
 
        rev = bzrlib.xml5.serializer_v5.read_revision(inp)
 
101
        rev = serializer_v5.read_revision(inp)
115
102
        eq = self.assertEqual
116
103
        eq(rev.committer,
117
104
           "Martin Pool <mbp@sourcefrog.net>")
118
 
        eq(len(rev.parent_ids), 1)
 
105
        eq(len(rev.parents), 1)
119
106
        eq(rev.timezone, 36000)
120
 
        eq(rev.parent_ids[0],
 
107
        eq(rev.parents[0].revision_id,
121
108
           "mbp@sourcefrog.net-20050905063503-43948f59fa127d92")
122
109
 
123
110
    def test_unpack_inventory_5(self):
124
111
        """Unpack canned new-style inventory"""
125
112
        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')
142
 
        ie = inv['bar-20050824000535-6bc48cfad47ed134']
143
 
        eq(ie.kind, 'file')
144
 
        eq(ie.revision, 'mbp@foo-00')
 
113
        inv = serializer_v5.read_inventory(inp)
 
114
        eq = self.assertEqual
 
115
        eq(len(inv), 4)
 
116
        ie = inv['bar-20050824000535-6bc48cfad47ed134']
 
117
        eq(ie.kind, 'file')
 
118
        eq(ie.text_version, 'mbp@foo-123123')
 
119
        eq(ie.entry_version, 'mbp@foo-00')
145
120
        eq(ie.name, 'bar')
146
121
        eq(inv[ie.parent_id].kind, 'directory')
147
122
 
148
123
    def test_repack_inventory_5(self):
149
124
        inp = StringIO(_committed_inv_v5)
150
 
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
 
125
        inv = serializer_v5.read_inventory(inp)
151
126
        outp = StringIO()
152
 
        bzrlib.xml5.serializer_v5.write_inventory(inv, outp)
153
 
        inv2 = bzrlib.xml5.serializer_v5.read_inventory(StringIO(outp.getvalue()))
 
127
        serializer_v5.write_inventory(inv, outp)
 
128
        inv2 = serializer_v5.read_inventory(StringIO(outp.getvalue()))
154
129
        self.assertEqual(inv, inv2)
155
130
 
156
131
    def test_repack_revision_5(self):
157
 
        """Round-trip revision to XML v5"""
158
132
        inp = StringIO(_revision_v5)
159
 
        rev = bzrlib.xml5.serializer_v5.read_revision(inp)
 
133
        rev = serializer_v5.read_revision(inp)
160
134
        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))
 
135
        serializer_v5.write_revision(rev, outp)
 
136
        rev2 = serializer_v5.read_revision(StringIO(outp.getvalue()))
164
137
        self.assertEqual(rev, rev2)
165
138
 
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)