/breezy/unstable

To get this branch, use:
bzr branch https://code.breezy-vcs.org/breezy/unstable

« back to all changes in this revision

Viewing changes to breezy/tests/test_weave.py

  • Committer: Jelmer Vernooij
  • Date: 2017-05-24 01:39:33 UTC
  • mfrom: (3815.3776.6)
  • Revision ID: jelmer@jelmer.uk-20170524013933-ir4y4tqtrsiz2ka2
New upstream snapshot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
from pprint import pformat
25
25
 
26
 
from bzrlib import (
 
26
from .. import (
27
27
    errors,
28
28
    )
29
 
from bzrlib.osutils import sha_string
30
 
from bzrlib.tests import TestCase, TestCaseInTempDir
31
 
from bzrlib.weave import Weave, WeaveFormatError
32
 
from bzrlib.weavefile import write_weave, read_weave
 
29
from ..osutils import sha_string
 
30
from ..sixish import (
 
31
    BytesIO,
 
32
    )
 
33
from . import TestCase, TestCaseInTempDir
 
34
from ..weave import Weave, WeaveFormatError
 
35
from ..weavefile import write_weave, read_weave
33
36
 
34
37
 
35
38
# texts for use in testing
671
674
        # Make sure that we can detect if a weave file has
672
675
        # been corrupted. This doesn't test all forms of corruption,
673
676
        # but it at least helps verify the data you get, is what you want.
674
 
        from cStringIO import StringIO
675
677
 
676
678
        w = Weave()
677
679
        w.add_lines('v1', [], ['hello\n'])
678
680
        w.add_lines('v2', ['v1'], ['hello\n', 'there\n'])
679
681
 
680
 
        tmpf = StringIO()
 
682
        tmpf = BytesIO()
681
683
        write_weave(w, tmpf)
682
684
 
683
685
        # Because we are corrupting, we need to make sure we have the exact text
688
690
                          tmpf.getvalue())
689
691
 
690
692
        # Change a single letter
691
 
        tmpf = StringIO('# bzr weave file v5\n'
692
 
                        'i\n1 f572d396fae9206628714fb2ce00f72e94f2258f\nn v1\n\n'
693
 
                        'i 0\n1 90f265c6e75f1c8f9ab76dcf85528352c5f215ef\nn v2\n\n'
694
 
                        'w\n{ 0\n. hello\n}\n{ 1\n. There\n}\nW\n')
 
693
        tmpf = BytesIO(b'# bzr weave file v5\n'
 
694
                       b'i\n1 f572d396fae9206628714fb2ce00f72e94f2258f\nn v1\n\n'
 
695
                       b'i 0\n1 90f265c6e75f1c8f9ab76dcf85528352c5f215ef\nn v2\n\n'
 
696
                       b'w\n{ 0\n. hello\n}\n{ 1\n. There\n}\nW\n')
695
697
 
696
698
        w = read_weave(tmpf)
697
699
 
701
703
        self.assertRaises(errors.WeaveInvalidChecksum, w.check)
702
704
 
703
705
        # Change the sha checksum
704
 
        tmpf = StringIO('# bzr weave file v5\n'
705
 
                        'i\n1 f572d396fae9206628714fb2ce00f72e94f2258f\nn v1\n\n'
706
 
                        'i 0\n1 f0f265c6e75f1c8f9ab76dcf85528352c5f215ef\nn v2\n\n'
707
 
                        'w\n{ 0\n. hello\n}\n{ 1\n. there\n}\nW\n')
 
706
        tmpf = BytesIO(b'# bzr weave file v5\n'
 
707
                       b'i\n1 f572d396fae9206628714fb2ce00f72e94f2258f\nn v1\n\n'
 
708
                       b'i 0\n1 f0f265c6e75f1c8f9ab76dcf85528352c5f215ef\nn v2\n\n'
 
709
                       b'w\n{ 0\n. hello\n}\n{ 1\n. there\n}\nW\n')
708
710
 
709
711
        w = read_weave(tmpf)
710
712
 
746
748
 
747
749
    def test_compatible_parents(self):
748
750
        w1 = Weave('a')
749
 
        my_parents = set([1, 2, 3])
 
751
        my_parents = {1, 2, 3}
750
752
        # subsets are ok
751
 
        self.assertTrue(w1._compatible_parents(my_parents, set([3])))
 
753
        self.assertTrue(w1._compatible_parents(my_parents, {3}))
752
754
        # same sets
753
755
        self.assertTrue(w1._compatible_parents(my_parents, set(my_parents)))
754
756
        # same empty corner case
755
757
        self.assertTrue(w1._compatible_parents(set(), set()))
756
758
        # other cannot contain stuff my_parents does not
757
 
        self.assertFalse(w1._compatible_parents(set(), set([1])))
758
 
        self.assertFalse(w1._compatible_parents(my_parents, set([1, 2, 3, 4])))
759
 
        self.assertFalse(w1._compatible_parents(my_parents, set([4])))
 
759
        self.assertFalse(w1._compatible_parents(set(), {1}))
 
760
        self.assertFalse(w1._compatible_parents(my_parents, {1, 2, 3, 4}))
 
761
        self.assertFalse(w1._compatible_parents(my_parents, {4}))
760
762
 
761
763
 
762
764
class TestWeaveFile(TestCaseInTempDir):