/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_xml.py

  • Committer: Jelmer Vernooij
  • Date: 2018-03-24 17:48:04 UTC
  • mfrom: (6921 work)
  • mto: This revision was merged to the branch mainline in revision 6923.
  • Revision ID: jelmer@jelmer.uk-20180324174804-xf22o05byoj12x1q
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
from . import TestCase
33
33
import breezy.bzr.xml5
34
34
 
35
 
_revision_v5 = b"""<revision committer="Martin Pool &lt;mbp@sourcefrog.net&gt;"
 
35
_revision_v5 = """<revision committer="Martin Pool &lt;mbp@sourcefrog.net&gt;"
36
36
    inventory_sha1="e79c31c1deb64c163cf660fdedd476dd579ffd41"
37
37
    revision_id="mbp@sourcefrog.net-20050905080035-e0439293f8b6b9f9"
38
38
    timestamp="1125907235.212"
46
46
</revision>
47
47
"""
48
48
 
49
 
_revision_v5_utc = b"""\
 
49
_revision_v5_utc = """\
50
50
<revision committer="Martin Pool &lt;mbp@sourcefrog.net&gt;"
51
51
    inventory_sha1="e79c31c1deb64c163cf660fdedd476dd579ffd41"
52
52
    revision_id="mbp@sourcefrog.net-20050905080035-e0439293f8b6b9f9"
61
61
</revision>
62
62
"""
63
63
 
64
 
_committed_inv_v5 = b"""<inventory>
 
64
_committed_inv_v5 = """<inventory>
65
65
<file file_id="bar-20050901064931-73b4b1138abc9cd2"
66
66
      name="bar" parent_id="TREE_ROOT"
67
67
      revision="mbp@foo-123123"
77
77
</inventory>
78
78
"""
79
79
 
80
 
_basis_inv_v5 = b"""<inventory revision_id="mbp@sourcefrog.net-20050905063503-43948f59fa127d92">
 
80
_basis_inv_v5 = """<inventory revision_id="mbp@sourcefrog.net-20050905063503-43948f59fa127d92">
81
81
<file file_id="bar-20050901064931-73b4b1138abc9cd2"
82
82
      name="bar" parent_id="TREE_ROOT"
83
83
      revision="mbp@foo-123123"/>
93
93
 
94
94
 
95
95
# DO NOT REFLOW THIS. Its the exact revision we want.
96
 
_expected_rev_v5 = b"""<revision committer="Martin Pool &lt;mbp@sourcefrog.net&gt;" format="5" inventory_sha1="e79c31c1deb64c163cf660fdedd476dd579ffd41" revision_id="mbp@sourcefrog.net-20050905080035-e0439293f8b6b9f9" timestamp="1125907235.212" timezone="36000">
 
96
_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.212" timezone="36000">
97
97
<message>- start splitting code for xml (de)serialization away from objects
98
98
  preparatory to supporting multiple formats by a single library
99
99
</message>
105
105
 
106
106
 
107
107
# DO NOT REFLOW THIS. Its the exact inventory we want.
108
 
_expected_inv_v5 = b"""<inventory format="5">
 
108
_expected_inv_v5 = """<inventory format="5">
109
109
<file file_id="bar-20050901064931-73b4b1138abc9cd2" name="bar" revision="mbp@foo-123123" text_sha1="A" text_size="1" />
110
110
<directory file_id="foo-20050801201819-4139aa4a272f4250" name="subdir" revision="mbp@foo-00" />
111
111
<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" />
113
113
"""
114
114
 
115
115
 
116
 
_expected_inv_v5_root = b"""<inventory file_id="f&lt;" format="5" revision_id="mother!">
 
116
_expected_inv_v5_root = """<inventory file_id="f&lt;" format="5" revision_id="mother!">
117
117
<file file_id="bar-20050901064931-73b4b1138abc9cd2" name="bar" parent_id="f&lt;" revision="mbp@foo-123123" text_sha1="A" text_size="1" />
118
118
<directory file_id="foo-20050801201819-4139aa4a272f4250" name="subdir" parent_id="f&lt;" revision="mbp@foo-00" />
119
119
<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" />
121
121
</inventory>
122
122
"""
123
123
 
124
 
_expected_inv_v6 = b"""<inventory format="6" revision_id="rev_outer">
 
124
_expected_inv_v6 = """<inventory format="6" revision_id="rev_outer">
125
125
<directory file_id="tree-root-321" name="" revision="rev_outer" />
126
126
<directory file_id="dir-id" name="dir" parent_id="tree-root-321" revision="rev_outer" />
127
127
<file file_id="file-id" name="file" parent_id="tree-root-321" revision="rev_outer" text_sha1="A" text_size="1" />
129
129
</inventory>
130
130
"""
131
131
 
132
 
_expected_inv_v7 = b"""<inventory format="7" revision_id="rev_outer">
 
132
_expected_inv_v7 = """<inventory format="7" revision_id="rev_outer">
133
133
<directory file_id="tree-root-321" name="" revision="rev_outer" />
134
134
<directory file_id="dir-id" name="dir" parent_id="tree-root-321" revision="rev_outer" />
135
135
<file file_id="file-id" name="file" parent_id="tree-root-321" revision="rev_outer" text_sha1="A" text_size="1" />
138
138
</inventory>
139
139
"""
140
140
 
141
 
_expected_rev_v8 = b"""<revision committer="Martin Pool &lt;mbp@sourcefrog.net&gt;" format="8" inventory_sha1="e79c31c1deb64c163cf660fdedd476dd579ffd41" revision_id="mbp@sourcefrog.net-20050905080035-e0439293f8b6b9f9" timestamp="1125907235.212" timezone="36000">
 
141
_expected_rev_v8 = """<revision committer="Martin Pool &lt;mbp@sourcefrog.net&gt;" format="8" inventory_sha1="e79c31c1deb64c163cf660fdedd476dd579ffd41" revision_id="mbp@sourcefrog.net-20050905080035-e0439293f8b6b9f9" timestamp="1125907235.212" timezone="36000">
142
142
<message>- start splitting code for xml (de)serialization away from objects
143
143
  preparatory to supporting multiple formats by a single library
144
144
</message>
148
148
</revision>
149
149
"""
150
150
 
151
 
_expected_inv_v8 = b"""<inventory format="8" revision_id="rev_outer">
 
151
_expected_inv_v8 = """<inventory format="8" revision_id="rev_outer">
152
152
<directory file_id="tree-root-321" name="" revision="rev_outer" />
153
153
<directory file_id="dir-id" name="dir" parent_id="tree-root-321" revision="rev_outer" />
154
154
<file file_id="file-id" name="file" parent_id="tree-root-321" revision="rev_outer" text_sha1="A" text_size="1" />
156
156
</inventory>
157
157
"""
158
158
 
159
 
_revision_utf8_v5 = b"""<revision committer="Erik B&#229;gfors &lt;erik@foo.net&gt;"
 
159
_revision_utf8_v5 = """<revision committer="Erik B&#229;gfors &lt;erik@foo.net&gt;"
160
160
    inventory_sha1="e79c31c1deb64c163cf660fdedd476dd579ffd41"
161
161
    revision_id="erik@b&#229;gfors-02"
162
162
    timestamp="1125907235.212"
169
169
</revision>
170
170
"""
171
171
 
172
 
_inventory_utf8_v5 = b"""<inventory file_id="TRE&#233;_ROOT" format="5"
 
172
_inventory_utf8_v5 = """<inventory file_id="TRE&#233;_ROOT" format="5"
173
173
                                   revision_id="erik@b&#229;gfors-02">
174
174
<file file_id="b&#229;r-01"
175
175
      name="b&#229;r" parent_id="TRE&#233;_ROOT"
185
185
"""
186
186
 
187
187
# Before revision_id was always stored as an attribute
188
 
_inventory_v5a = b"""<inventory format="5">
 
188
_inventory_v5a = """<inventory format="5">
189
189
</inventory>
190
190
"""
191
191
 
192
192
# Before revision_id was always stored as an attribute
193
 
_inventory_v5b = b"""<inventory format="5" revision_id="a-rev-id">
 
193
_inventory_v5b = """<inventory format="5" revision_id="a-rev-id">
194
194
</inventory>
195
195
"""
196
196
 
227
227
        inv = breezy.bzr.xml5.serializer_v5.read_inventory(inp)
228
228
        eq = self.assertEqual
229
229
        eq(len(inv), 4)
230
 
        ie = inv.get_entry('bar-20050824000535-6bc48cfad47ed134')
 
230
        ie = inv['bar-20050824000535-6bc48cfad47ed134']
231
231
        eq(ie.kind, 'file')
232
232
        eq(ie.revision, 'mbp@foo-00')
233
233
        eq(ie.name, 'bar')
234
 
        eq(inv.get_entry(ie.parent_id).kind, 'directory')
 
234
        eq(inv[ie.parent_id].kind, 'directory')
235
235
 
236
236
    def test_unpack_basis_inventory_5(self):
237
237
        """Unpack canned new-style inventory"""
240
240
        eq = self.assertEqual
241
241
        eq(len(inv), 4)
242
242
        eq(inv.revision_id, 'mbp@sourcefrog.net-20050905063503-43948f59fa127d92')
243
 
        ie = inv.get_entry('bar-20050824000535-6bc48cfad47ed134')
 
243
        ie = inv['bar-20050824000535-6bc48cfad47ed134']
244
244
        eq(ie.kind, 'file')
245
245
        eq(ie.revision, 'mbp@foo-00')
246
246
        eq(ie.name, 'bar')
247
 
        eq(inv.get_entry(ie.parent_id).kind, 'directory')
 
247
        eq(inv[ie.parent_id].kind, 'directory')
248
248
 
249
249
    def test_unpack_inventory_5a(self):
250
250
        inv = breezy.bzr.xml5.serializer_v5.read_inventory_from_string(
352
352
        self.assertEqual(props, new_rev.properties)
353
353
 
354
354
    def get_sample_inventory(self):
355
 
        inv = Inventory(b'tree-root-321', revision_id=b'rev_outer')
356
 
        inv.add(inventory.InventoryFile(b'file-id', 'file', b'tree-root-321'))
357
 
        inv.add(inventory.InventoryDirectory(b'dir-id', 'dir',
358
 
                                             b'tree-root-321'))
359
 
        inv.add(inventory.InventoryLink(b'link-id', 'link', b'tree-root-321'))
360
 
        inv.get_entry(b'tree-root-321').revision = b'rev_outer'
361
 
        inv.get_entry(b'dir-id').revision = b'rev_outer'
362
 
        inv.get_entry(b'file-id').revision = b'rev_outer'
363
 
        inv.get_entry(b'file-id').text_sha1 = 'A'
364
 
        inv.get_entry(b'file-id').text_size = 1
365
 
        inv.get_entry(b'link-id').revision = b'rev_outer'
366
 
        inv.get_entry(b'link-id').symlink_target = 'a'
 
355
        inv = Inventory('tree-root-321', revision_id='rev_outer')
 
356
        inv.add(inventory.InventoryFile('file-id', 'file', 'tree-root-321'))
 
357
        inv.add(inventory.InventoryDirectory('dir-id', 'dir',
 
358
                                             'tree-root-321'))
 
359
        inv.add(inventory.InventoryLink('link-id', 'link', 'tree-root-321'))
 
360
        inv['tree-root-321'].revision = 'rev_outer'
 
361
        inv['dir-id'].revision = 'rev_outer'
 
362
        inv['file-id'].revision = 'rev_outer'
 
363
        inv['file-id'].text_sha1 = 'A'
 
364
        inv['file-id'].text_size = 1
 
365
        inv['link-id'].revision = 'rev_outer'
 
366
        inv['link-id'].symlink_target = 'a'
367
367
        return inv
368
368
 
369
369
    def test_roundtrip_inventory_v7(self):
370
370
        inv = self.get_sample_inventory()
371
 
        inv.add(inventory.TreeReference(b'nested-id', 'nested', b'tree-root-321',
372
 
                                        b'rev_outer', b'rev_inner'))
 
371
        inv.add(inventory.TreeReference('nested-id', 'nested', 'tree-root-321',
 
372
                                        'rev_outer', 'rev_inner'))
373
373
        txt = xml7.serializer_v7.write_inventory_to_string(inv)
374
374
        lines = xml7.serializer_v7.write_inventory_to_lines(inv)
375
375
        self.assertEqual(breezy.osutils.split_lines(txt), lines)
377
377
        inv2 = xml7.serializer_v7.read_inventory_from_string(txt)
378
378
        self.assertEqual(5, len(inv2))
379
379
        for path, ie in inv.iter_entries():
380
 
            self.assertEqual(ie, inv2.get_entry(ie.file_id))
 
380
            self.assertEqual(ie, inv2[ie.file_id])
381
381
 
382
382
    def test_roundtrip_inventory_v6(self):
383
383
        inv = self.get_sample_inventory()
388
388
        inv2 = xml6.serializer_v6.read_inventory_from_string(txt)
389
389
        self.assertEqual(4, len(inv2))
390
390
        for path, ie in inv.iter_entries():
391
 
            self.assertEqual(ie, inv2.get_entry(ie.file_id))
 
391
            self.assertEqual(ie, inv2[ie.file_id])
392
392
 
393
393
    def test_wrong_format_v7(self):
394
394
        """Can't accidentally open a file with wrong serializer"""
403
403
        s_v5 = breezy.bzr.xml5.serializer_v5
404
404
        s_v6 = breezy.bzr.xml6.serializer_v6
405
405
        s_v7 = xml7.serializer_v7
406
 
        inv = Inventory(b'tree-root-321', revision_id=b'rev-outer')
407
 
        inv.root.revision = b'root-rev'
408
 
        inv.add(inventory.TreeReference(b'nested-id', 'nested', b'tree-root-321',
409
 
                                        b'rev-outer', b'rev-inner'))
 
406
        inv = Inventory('tree-root-321', revision_id='rev-outer')
 
407
        inv.root.revision = 'root-rev'
 
408
        inv.add(inventory.TreeReference('nested-id', 'nested', 'tree-root-321',
 
409
                                        'rev-outer', 'rev-inner'))
410
410
        self.assertRaises(errors.UnsupportedInventoryKind,
411
411
                          s_v5.write_inventory_to_string, inv)
412
412
        self.assertRaises(errors.UnsupportedInventoryKind,
415
415
        lines = s_v7.write_inventory_to_lines(inv)
416
416
        self.assertEqual(breezy.osutils.split_lines(txt), lines)
417
417
        inv2 = s_v7.read_inventory_from_string(txt)
418
 
        self.assertEqual(b'tree-root-321', inv2.get_entry(b'nested-id').parent_id)
419
 
        self.assertEqual(b'rev-outer', inv2.get_entry(b'nested-id').revision)
420
 
        self.assertEqual(b'rev-inner', inv2.get_entry(b'nested-id').reference_revision)
 
418
        self.assertEqual('tree-root-321', inv2['nested-id'].parent_id)
 
419
        self.assertEqual('rev-outer', inv2['nested-id'].revision)
 
420
        self.assertEqual('rev-inner', inv2['nested-id'].reference_revision)
421
421
 
422
422
    def test_roundtrip_inventory_v8(self):
423
423
        inv = self.get_sample_inventory()
425
425
        inv2 = xml8.serializer_v8.read_inventory_from_string(txt)
426
426
        self.assertEqual(4, len(inv2))
427
427
        for path, ie in inv.iter_entries():
428
 
            self.assertEqual(ie, inv2.get_entry(ie.file_id))
 
428
            self.assertEqual(ie, inv2[ie.file_id])
429
429
 
430
430
    def test_inventory_text_v8(self):
431
431
        inv = self.get_sample_inventory()