/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: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-01-31 12:16:39 UTC
  • mfrom: (7474.1.1 merge-3.0)
  • Revision ID: breezy.the.bot@gmail.com-20200131121639-02ekdsitrlajp2qx
Merge the 3.0 branch.

Merged from https://code.launchpad.net/~jelmer/brz/merge-3.0/+merge/378383

Show diffs side-by-side

added added

removed removed

Lines of Context:
170
170
</revision>
171
171
"""
172
172
 
 
173
_expected_rev_v8_complex = b"""<revision committer="Erik B&#229;gfors &lt;erik@foo.net&gt;" format="8" inventory_sha1="e79c31c1deb64c163cf660fdedd476dd579ffd41" revision_id="erik@b&#229;gfors-02" timestamp="1125907235.212" timezone="36000">
 
174
<message>Include &#181;nicode characters
 
175
</message>
 
176
<parents>
 
177
<revision_ref revision_id="erik@b&#229;gfors-01" />
 
178
<revision_ref revision_id="erik@bagfors-02" />
 
179
</parents>
 
180
<properties><property name="bar" />
 
181
<property name="foo">this has a
 
182
newline in it</property>
 
183
</properties>
 
184
</revision>
 
185
"""
 
186
 
 
187
 
 
188
 
173
189
_inventory_utf8_v5 = b"""<inventory file_id="TRE&#233;_ROOT" format="5"
174
190
                                   revision_id="erik@b&#229;gfors-02">
175
191
<file file_id="b&#229;r-01"
320
336
        """Check that repacking a revision yields the same information"""
321
337
        inp = BytesIO(txt)
322
338
        rev = breezy.bzr.xml5.serializer_v5.read_revision(inp)
323
 
        outp = BytesIO()
324
 
        breezy.bzr.xml5.serializer_v5.write_revision(rev, outp)
325
 
        outfile_contents = outp.getvalue()
 
339
        outfile_contents = breezy.bzr.xml5.serializer_v5.write_revision_to_string(rev)
326
340
        rev2 = breezy.bzr.xml5.serializer_v5.read_revision(
327
341
            BytesIO(outfile_contents))
328
342
        self.assertEqual(rev, rev2)
339
353
        # fixed 20051025, revisions should have final newline
340
354
        rev = breezy.bzr.xml5.serializer_v5.read_revision_from_string(
341
355
            _revision_v5)
342
 
        outp = BytesIO()
343
 
        breezy.bzr.xml5.serializer_v5.write_revision(rev, outp)
344
 
        outfile_contents = outp.getvalue()
 
356
        outfile_contents = breezy.bzr.xml5.serializer_v5.write_revision_to_string(rev)
345
357
        self.assertEqual(outfile_contents[-1:], b'\n')
346
358
        self.assertEqualDiff(
347
359
            outfile_contents,
348
 
            breezy.bzr.xml5.serializer_v5.write_revision_to_string(rev))
 
360
            b''.join(breezy.bzr.xml5.serializer_v5.write_revision_to_lines(rev)))
349
361
        self.assertEqualDiff(outfile_contents, _expected_rev_v5)
350
362
 
351
363
    def test_empty_property_value(self):
354
366
        rev = s_v5.read_revision_from_string(_revision_v5)
355
367
        props = {'empty': '', 'one': 'one'}
356
368
        rev.properties = props
357
 
        txt = s_v5.write_revision_to_string(rev)
 
369
        txt = b''.join(s_v5.write_revision_to_lines(rev))
358
370
        new_rev = s_v5.read_revision_from_string(txt)
359
371
        self.assertEqual(props, new_rev.properties)
360
372
 
441
453
        """Pack revision to XML v6"""
442
454
        rev = breezy.bzr.xml6.serializer_v6.read_revision_from_string(
443
455
            _expected_rev_v5)
444
 
        serialized = breezy.bzr.xml6.serializer_v6.write_revision_to_string(
 
456
        serialized = breezy.bzr.xml6.serializer_v6.write_revision_to_lines(
445
457
            rev)
446
 
        self.assertEqualDiff(serialized, _expected_rev_v5)
 
458
        self.assertEqualDiff(b''.join(serialized), _expected_rev_v5)
447
459
 
448
460
    def test_revision_text_v7(self):
449
461
        """Pack revision to XML v7"""
450
462
        rev = breezy.bzr.xml7.serializer_v7.read_revision_from_string(
451
463
            _expected_rev_v5)
452
 
        serialized = breezy.bzr.xml7.serializer_v7.write_revision_to_string(
 
464
        serialized = breezy.bzr.xml7.serializer_v7.write_revision_to_lines(
453
465
            rev)
454
 
        self.assertEqualDiff(serialized, _expected_rev_v5)
 
466
        self.assertEqualDiff(b''.join(serialized), _expected_rev_v5)
455
467
 
456
468
    def test_revision_text_v8(self):
457
469
        """Pack revision to XML v8"""
458
470
        rev = breezy.bzr.xml8.serializer_v8.read_revision_from_string(
459
471
            _expected_rev_v8)
460
 
        serialized = breezy.bzr.xml8.serializer_v8.write_revision_to_string(
461
 
            rev)
462
 
        self.assertEqualDiff(serialized, _expected_rev_v8)
 
472
        serialized = breezy.bzr.xml8.serializer_v8.write_revision_to_lines(
 
473
            rev)
 
474
        self.assertEqualDiff(b''.join(serialized), _expected_rev_v8)
 
475
 
 
476
    def test_revision_text_v8_complex(self):
 
477
        """Pack revision to XML v8"""
 
478
        rev = breezy.bzr.xml8.serializer_v8.read_revision_from_string(
 
479
            _expected_rev_v8_complex)
 
480
        serialized = breezy.bzr.xml8.serializer_v8.write_revision_to_lines(
 
481
            rev)
 
482
        self.assertEqualDiff(b''.join(serialized), _expected_rev_v8_complex)
463
483
 
464
484
    def test_revision_ids_are_utf8(self):
465
485
        """Parsed revision_ids should all be utf-8 strings, not unicode."""
527
547
        # are being used in xml attributes, and by returning it now, we have to
528
548
        # do fewer string operations later.
529
549
        val = breezy.bzr.xml_serializer.encode_and_escape('foo bar')
530
 
        self.assertEqual(b'foo bar"', val)
 
550
        self.assertEqual(b'foo bar', val)
531
551
        # The second time should be cached
532
552
        val2 = breezy.bzr.xml_serializer.encode_and_escape('foo bar')
533
553
        self.assertIs(val2, val)
534
554
 
535
555
    def test_ascii_with_xml(self):
536
 
        self.assertEqual(b'&amp;&apos;&quot;&lt;&gt;"',
 
556
        self.assertEqual(b'&amp;&apos;&quot;&lt;&gt;',
537
557
                         breezy.bzr.xml_serializer.encode_and_escape('&\'"<>'))
538
558
 
539
559
    def test_utf8_with_xml(self):
540
560
        # u'\xb5\xe5&\u062c'
541
561
        utf8_str = b'\xc2\xb5\xc3\xa5&\xd8\xac'
542
 
        self.assertEqual(b'&#181;&#229;&amp;&#1580;"',
 
562
        self.assertEqual(b'&#181;&#229;&amp;&#1580;',
543
563
                         breezy.bzr.xml_serializer.encode_and_escape(utf8_str))
544
564
 
545
565
    def test_unicode(self):
546
566
        uni_str = u'\xb5\xe5&\u062c'
547
 
        self.assertEqual(b'&#181;&#229;&amp;&#1580;"',
 
567
        self.assertEqual(b'&#181;&#229;&amp;&#1580;',
548
568
                         breezy.bzr.xml_serializer.encode_and_escape(uni_str))
549
569
 
550
570