~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_xml.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-08-17 14:18:30 UTC
  • mfrom: (1934.1.21 xml_writer)
  • Revision ID: pqm@pqm.ubuntu.com-20060817141830-383cad75e9090732
(robertc,jam) Custom xml serializer saves a lot of time when serializing inventories

Show diffs side-by-side

added added

removed removed

Lines of Context:
80
80
           file_id="foo-20050801201819-4139aa4a272f4250"
81
81
           parent_id="TREE_ROOT" 
82
82
           revision="mbp@foo-00"/>
83
 
<file file_id="bar-20050824000535-6bc48cfad47ed134" 
 
83
<file executable="yes" file_id="bar-20050824000535-6bc48cfad47ed134" 
84
84
      name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" 
85
85
      revision="mbp@foo-00"/>
86
86
</inventory>
101
101
"""
102
102
 
103
103
 
 
104
# DO NOT REFLOW THIS. Its the exact revision we want.
 
105
_expected_rev_v5 = """<revision committer="Martin Pool &lt;mbp@sourcefrog.net&gt;" format="5" inventory_sha1="e79c31c1deb64c163cf660fdedd476dd579ffd41" revision_id="mbp@sourcefrog.net-20050905080035-e0439293f8b6b9f9" timestamp="1125907235.211783886" timezone="36000">
 
106
<message>- start splitting code for xml (de)serialization away from objects
 
107
  preparatory to supporting multiple formats by a single library
 
108
</message>
 
109
<parents>
 
110
<revision_ref revision_id="mbp@sourcefrog.net-20050905063503-43948f59fa127d92" />
 
111
</parents>
 
112
</revision>
 
113
"""
 
114
 
 
115
 
 
116
# DO NOT REFLOW THIS. Its the exact inventory we want.
 
117
_expected_inv_v5 = """<inventory format="5">
 
118
<file file_id="bar-20050901064931-73b4b1138abc9cd2" name="bar" revision="mbp@foo-123123" />
 
119
<directory file_id="foo-20050801201819-4139aa4a272f4250" name="subdir" revision="mbp@foo-00" />
 
120
<file executable="yes" file_id="bar-20050824000535-6bc48cfad47ed134" name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" revision="mbp@foo-00" />
 
121
</inventory>
 
122
"""
 
123
 
 
124
 
 
125
_expected_inv_v5_root = """<inventory file_id="f&lt;" format="5" revision_id="mother!">
 
126
<file file_id="bar-20050901064931-73b4b1138abc9cd2" name="bar" parent_id="f&lt;" revision="mbp@foo-123123" />
 
127
<directory file_id="foo-20050801201819-4139aa4a272f4250" name="subdir" parent_id="f&lt;" revision="mbp@foo-00" />
 
128
<file executable="yes" file_id="bar-20050824000535-6bc48cfad47ed134" name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" revision="mbp@foo-00" />
 
129
</inventory>
 
130
"""
 
131
 
 
132
 
104
133
class TestSerializer(TestCase):
105
134
    """Test XML serialization"""
106
135
    def test_canned_inventory(self):
176
205
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
177
206
        outp = StringIO()
178
207
        bzrlib.xml5.serializer_v5.write_inventory(inv, outp)
179
 
        inv2 = bzrlib.xml5.serializer_v5.read_inventory(StringIO(outp.getvalue()))
180
 
        self.assertEqual(inv, inv2)
 
208
        self.assertEqualDiff(_expected_inv_v5, outp.getvalue())
 
209
        inv2 = bzrlib.xml5.serializer_v5.read_inventory(StringIO(outp.getvalue()))
 
210
        self.assertEqual(inv, inv2)
 
211
    
 
212
    def assertRoundTrips(self, xml_string):
 
213
        inp = StringIO(xml_string)
 
214
        inv = bzrlib.xml5.serializer_v5.read_inventory(inp)
 
215
        outp = StringIO()
 
216
        bzrlib.xml5.serializer_v5.write_inventory(inv, outp)
 
217
        self.assertEqualDiff(xml_string, outp.getvalue())
 
218
        inv2 = bzrlib.xml5.serializer_v5.read_inventory(StringIO(outp.getvalue()))
 
219
        self.assertEqual(inv, inv2)
 
220
 
 
221
    def tests_serialize_inventory_v5_with_root(self):
 
222
        self.assertRoundTrips(_expected_inv_v5_root)
181
223
 
182
224
    def check_repack_revision(self, txt):
183
225
        """Check that repacking a revision yields the same information"""
205
247
        outfile_contents = outp.getvalue()
206
248
        self.assertEqual(outfile_contents[-1], '\n')
207
249
        self.assertEqualDiff(outfile_contents, bzrlib.xml5.serializer_v5.write_revision_to_string(rev))
 
250
        self.assertEqualDiff(outfile_contents, _expected_rev_v5)
208
251
 
209
252
    def test_empty_property_value(self):
210
253
        """Create an empty property value check that it serializes correctly"""