~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_xml.py

  • Committer: Aaron Bentley
  • Date: 2006-10-29 19:17:04 UTC
  • mto: (2255.6.1 dirstate)
  • mto: This revision was merged to the branch mainline in revision 2322.
  • Revision ID: aaron.bentley@utoronto.ca-20061029191704-b7221b5e8a873911
Add tests for format 7, enforce number

Show diffs side-by-side

added added

removed removed

Lines of Context:
134
134
</inventory>
135
135
"""
136
136
 
 
137
_expected_inv_v7 = """<inventory format="7" revision_id="rev_outer">
 
138
<directory file_id="tree-root-321" name="" revision="rev_outer" />
 
139
<directory file_id="dir-id" name="dir" parent_id="tree-root-321" revision="rev_outer" />
 
140
<file file_id="file-id" name="file" parent_id="tree-root-321" revision="rev_outer" />
 
141
<symlink file_id="link-id" name="link" parent_id="tree-root-321" revision="rev_outer" />
 
142
<tree-reference file_id="nested-id" name="nested" parent_id="tree-root-321" revision="rev_outer" reference_revision="rev_inner" />
 
143
</inventory>
 
144
"""
137
145
 
138
146
class TestSerializer(TestCase):
139
147
    """Test XML serialization"""
265
273
        new_rev = s_v5.read_revision_from_string(txt)
266
274
        self.assertEqual(props, new_rev.properties)
267
275
 
 
276
    def test_roundtrip_inventory_v7(self):
 
277
        inv = Inventory('tree-root-321', revision_id='rev_outer')
 
278
        inv.add(inventory.TreeReference('nested-id', 'nested', 'tree-root-321',
 
279
                                        'rev_outer', 'rev_inner'))
 
280
        inv.add(inventory.InventoryFile('file-id', 'file', 'tree-root-321'))
 
281
        inv.add(inventory.InventoryDirectory('dir-id', 'dir', 
 
282
                                             'tree-root-321'))
 
283
        inv.add(inventory.InventoryLink('link-id', 'link', 'tree-root-321'))
 
284
        inv['tree-root-321'].revision = 'rev_outer'
 
285
        inv['dir-id'].revision = 'rev_outer'
 
286
        inv['file-id'].revision = 'rev_outer'
 
287
        inv['link-id'].revision = 'rev_outer'
 
288
        txt = xml7.serializer_v7.write_inventory_to_string(inv)
 
289
        self.assertEqualDiff(_expected_inv_v7, txt)
 
290
        inv2 = xml7.serializer_v7.read_inventory_from_string(txt)
 
291
        self.assertEqual(5, len(inv2))
 
292
        for path, ie in inv.iter_entries():
 
293
            self.assertEqual(ie, inv2[ie.file_id])
 
294
 
 
295
    def test_wrong_format_v7(self):
 
296
        """Can't accidentally open a file with wrong serializer"""
 
297
        s_v6 = bzrlib.xml6.serializer_v6
 
298
        s_v7 = xml7.serializer_v7
 
299
        self.assertRaises(errors.UnexpectedInventoryFormat, 
 
300
                          s_v7.read_inventory_from_string, _expected_inv_v5)
 
301
        self.assertRaises(errors.UnexpectedInventoryFormat, 
 
302
                          s_v6.read_inventory_from_string, _expected_inv_v7)
 
303
 
268
304
    def test_tree_reference(self):
269
305
        s_v5 = bzrlib.xml5.serializer_v5
270
306
        s_v6 = bzrlib.xml6.serializer_v6
282
318
        self.assertEqual('rev-outer', inv2['nested-id'].revision)
283
319
        self.assertEqual('rev-inner', inv2['nested-id'].reference_revision)
284
320
        self.assertRaises(errors.UnsupportedInventoryKind, 
285
 
                          s_v6.read_inventory_from_string, txt)
 
321
                          s_v6.read_inventory_from_string,
 
322
                          txt.replace('format="7"', 'format="6"'))
286
323
        self.assertRaises(errors.UnsupportedInventoryKind, 
287
324
                          s_v5.read_inventory_from_string,
288
 
                          txt.replace('format="6"', 'format="5"'))
 
325
                          txt.replace('format="7"', 'format="5"'))