~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-23 05:57:06 UTC
  • Revision ID: mbp@sourcefrog.net-20050923055706-afd25ee2a988286d
- update NEWS files

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" />
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"/>
 
63
      text_version="mbp@foo-123123" name_version="mbp@foo-123123"
 
64
      />
 
65
<directory name="subdir"
 
66
           file_id="foo-20050801201819-4139aa4a272f4250"
 
67
           parent_id="TREE_ROOT" 
 
68
           name_version="mbp@foo-00"/>
 
69
<file file_id="bar-20050824000535-6bc48cfad47ed134" 
 
70
      name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" 
 
71
      name_version="mbp@foo-00"
 
72
      text_version="mbp@foo-123123"/>
85
73
</inventory>
86
74
"""
87
75
 
110
98
    def test_unpack_revision_5(self):
111
99
        """Test unpacking a canned revision v5"""
112
100
        inp = StringIO(_revision_v5)
113
 
        rev = bzrlib.xml5.serializer_v5.read_revision(inp)
 
101
        rev = serializer_v5.read_revision(inp)
114
102
        eq = self.assertEqual
115
103
        eq(rev.committer,
116
104
           "Martin Pool <mbp@sourcefrog.net>")
122
110
    def test_unpack_inventory_5(self):
123
111
        """Unpack canned new-style inventory"""
124
112
        inp = StringIO(_committed_inv_v5)
125
 
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
126
 
        eq = self.assertEqual
127
 
        eq(len(inv), 4)
128
 
        ie = inv['bar-20050824000535-6bc48cfad47ed134']
129
 
        eq(ie.kind, 'file')
130
 
        eq(ie.revision, 'mbp@foo-00')
131
 
        eq(ie.name, 'bar')
132
 
        eq(inv[ie.parent_id].kind, 'directory')
133
 
 
134
 
    def test_unpack_basis_inventory_5(self):
135
 
        """Unpack canned new-style inventory"""
136
 
        inp = StringIO(_basis_inv_v5)
137
 
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
138
 
        eq = self.assertEqual
139
 
        eq(len(inv), 4)
140
 
        eq(inv.revision_id, 'mbp@sourcefrog.net-20050905063503-43948f59fa127d92')
141
 
        ie = inv['bar-20050824000535-6bc48cfad47ed134']
142
 
        eq(ie.kind, 'file')
143
 
        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.name_version, 'mbp@foo-00')
144
120
        eq(ie.name, 'bar')
145
121
        eq(inv[ie.parent_id].kind, 'directory')
146
122
 
147
123
    def test_repack_inventory_5(self):
148
124
        inp = StringIO(_committed_inv_v5)
149
 
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
 
125
        inv = serializer_v5.read_inventory(inp)
150
126
        outp = StringIO()
151
 
        bzrlib.xml5.serializer_v5.write_inventory(inv, outp)
152
 
        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()))
153
129
        self.assertEqual(inv, inv2)
154
130
 
155
131
    def test_repack_revision_5(self):
156
 
        """Round-trip revision to XML v5"""
157
132
        inp = StringIO(_revision_v5)
158
 
        rev = bzrlib.xml5.serializer_v5.read_revision(inp)
 
133
        rev = serializer_v5.read_revision(inp)
159
134
        outp = StringIO()
160
 
        bzrlib.xml5.serializer_v5.write_revision(rev, outp)
161
 
        outfile_contents = outp.getvalue()
162
 
        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()))
163
137
        self.assertEqual(rev, rev2)
164
138
 
165
 
    def test_pack_revision_5(self):
166
 
        """Pack revision to XML v5"""
167
 
        # fixed 20051025, revisions should have final newline
168
 
        rev = bzrlib.xml5.serializer_v5.read_revision_from_string(_revision_v5)
169
 
        outp = StringIO()
170
 
        bzrlib.xml5.serializer_v5.write_revision(rev, outp)
171
 
        outfile_contents = outp.getvalue()
172
 
        self.assertEqual(outfile_contents[-1], '\n')
173
 
        self.assertEqualDiff(outfile_contents, bzrlib.xml5.serializer_v5.write_revision_to_string(rev))