80
81
_committed_inv_v5 = """<inventory>
81
82
<file file_id="bar-20050901064931-73b4b1138abc9cd2"
82
83
name="bar" parent_id="TREE_ROOT"
83
revision="mbp@foo-123123"/>
84
revision="mbp@foo-123123"
85
text_sha1="A" text_size="1"/>
84
86
<directory name="subdir"
85
87
file_id="foo-20050801201819-4139aa4a272f4250"
86
88
parent_id="TREE_ROOT"
87
89
revision="mbp@foo-00"/>
88
90
<file executable="yes" file_id="bar-20050824000535-6bc48cfad47ed134"
89
91
name="bar" parent_id="foo-20050801201819-4139aa4a272f4250"
90
revision="mbp@foo-00"/>
93
text_sha1="B" text_size="0"/>
121
124
# DO NOT REFLOW THIS. Its the exact inventory we want.
122
125
_expected_inv_v5 = """<inventory format="5">
123
<file file_id="bar-20050901064931-73b4b1138abc9cd2" name="bar" revision="mbp@foo-123123" />
126
<file file_id="bar-20050901064931-73b4b1138abc9cd2" name="bar" revision="mbp@foo-123123" text_sha1="A" text_size="1" />
124
127
<directory file_id="foo-20050801201819-4139aa4a272f4250" name="subdir" revision="mbp@foo-00" />
125
<file executable="yes" file_id="bar-20050824000535-6bc48cfad47ed134" name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" revision="mbp@foo-00" />
128
<file executable="yes" file_id="bar-20050824000535-6bc48cfad47ed134" name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" revision="mbp@foo-00" text_sha1="B" text_size="0" />
130
133
_expected_inv_v5_root = """<inventory file_id="f<" format="5" revision_id="mother!">
131
<file file_id="bar-20050901064931-73b4b1138abc9cd2" name="bar" parent_id="f<" revision="mbp@foo-123123" />
134
<file file_id="bar-20050901064931-73b4b1138abc9cd2" name="bar" parent_id="f<" revision="mbp@foo-123123" text_sha1="A" text_size="1" />
132
135
<directory file_id="foo-20050801201819-4139aa4a272f4250" name="subdir" parent_id="f<" revision="mbp@foo-00" />
133
<file executable="yes" file_id="bar-20050824000535-6bc48cfad47ed134" name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" revision="mbp@foo-00" />
136
<file executable="yes" file_id="bar-20050824000535-6bc48cfad47ed134" name="bar" parent_id="foo-20050801201819-4139aa4a272f4250" revision="mbp@foo-00" text_sha1="B" text_size="0" />
137
<symlink file_id="link-1" name="link" parent_id="foo-20050801201819-4139aa4a272f4250" revision="mbp@foo-00" symlink_target="a" />
137
141
_expected_inv_v7 = """<inventory format="7" revision_id="rev_outer">
138
142
<directory file_id="tree-root-321" name="" revision="rev_outer" />
139
143
<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" />
144
<file file_id="file-id" name="file" parent_id="tree-root-321" revision="rev_outer" text_sha1="A" text_size="1" />
145
<symlink file_id="link-id" name="link" parent_id="tree-root-321" revision="rev_outer" symlink_target="a" />
142
146
<tree-reference file_id="nested-id" name="nested" parent_id="tree-root-321" revision="rev_outer" reference_revision="rev_inner" />
257
261
outp = StringIO()
258
262
bzrlib.xml5.serializer_v5.write_inventory(inv, outp)
259
263
self.assertEqualDiff(xml_string, outp.getvalue())
264
lines = bzrlib.xml5.serializer_v5.write_inventory_to_lines(inv)
266
self.assertEqual(outp.readlines(), lines)
260
267
inv2 = bzrlib.xml5.serializer_v5.read_inventory(StringIO(outp.getvalue()))
261
268
self.assertEqual(inv, inv2)
313
320
inv['tree-root-321'].revision = 'rev_outer'
314
321
inv['dir-id'].revision = 'rev_outer'
315
322
inv['file-id'].revision = 'rev_outer'
323
inv['file-id'].text_sha1 = 'A'
324
inv['file-id'].text_size = 1
316
325
inv['link-id'].revision = 'rev_outer'
326
inv['link-id'].symlink_target = 'a'
317
327
txt = xml7.serializer_v7.write_inventory_to_string(inv)
328
lines = xml7.serializer_v7.write_inventory_to_lines(inv)
329
self.assertEqual(bzrlib.osutils.split_lines(txt), lines)
318
330
self.assertEqualDiff(_expected_inv_v7, txt)
319
331
inv2 = xml7.serializer_v7.read_inventory_from_string(txt)
320
332
self.assertEqual(5, len(inv2))
334
346
s_v5 = bzrlib.xml5.serializer_v5
335
347
s_v6 = bzrlib.xml6.serializer_v6
336
348
s_v7 = xml7.serializer_v7
337
inv = Inventory('tree-root-321')
349
inv = Inventory('tree-root-321', revision_id='rev-outer')
350
inv.root.revision = 'root-rev'
338
351
inv.add(inventory.TreeReference('nested-id', 'nested', 'tree-root-321',
339
352
'rev-outer', 'rev-inner'))
340
self.assertRaises(errors.UnsupportedInventoryKind,
353
self.assertRaises(errors.UnsupportedInventoryKind,
341
354
s_v5.write_inventory_to_string, inv)
342
self.assertRaises(errors.UnsupportedInventoryKind,
355
self.assertRaises(errors.UnsupportedInventoryKind,
343
356
s_v6.write_inventory_to_string, inv)
344
357
txt = s_v7.write_inventory_to_string(inv)
358
lines = s_v7.write_inventory_to_lines(inv)
359
self.assertEqual(bzrlib.osutils.split_lines(txt), lines)
345
360
inv2 = s_v7.read_inventory_from_string(txt)
346
361
self.assertEqual('tree-root-321', inv2['nested-id'].parent_id)
347
362
self.assertEqual('rev-outer', inv2['nested-id'].revision)
398
413
self.assertEqual(len(expected), len(actual))
415
def test_registry(self):
416
self.assertIs(serializer_v4,
417
xml_serializer.format_registry.get('4'))
418
self.assertIs(bzrlib.xml5.serializer_v5,
419
xml_serializer.format_registry.get('5'))
420
self.assertIs(bzrlib.xml6.serializer_v6,
421
xml_serializer.format_registry.get('6'))
422
self.assertIs(bzrlib.xml7.serializer_v7,
423
xml_serializer.format_registry.get('7'))
401
426
class TestEncodeAndEscape(TestCase):
402
427
"""Whitebox testing of the _encode_and_escape function."""