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" />
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)
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',
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])
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)
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"'))