/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 bzrlib/tests/test_weave.py

  • Committer: Richard Wilbur
  • Date: 2016-02-04 19:07:28 UTC
  • mto: This revision was merged to the branch mainline in revision 6618.
  • Revision ID: richard.wilbur@gmail.com-20160204190728-p0zvfii6zase0fw7
Update COPYING.txt from the original http://www.gnu.org/licenses/gpl-2.0.txt  (Only differences were in whitespace.)  Thanks to Petr Stodulka for pointing out the discrepancy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011, 2016 Canonical Ltd
 
1
# Copyright (C) 2005-2009, 2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
23
23
 
24
24
from pprint import pformat
25
25
 
26
 
from .. import (
 
26
from bzrlib import (
27
27
    errors,
28
28
    )
29
 
from ..osutils import sha_string
30
 
from ..sixish import (
31
 
    BytesIO,
32
 
    )
33
 
from . import TestCase, TestCaseInTempDir
34
 
from ..bzr.weave import Weave, WeaveFormatError, WeaveInvalidChecksum
35
 
from ..bzr.weavefile import write_weave, read_weave
 
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
36
33
 
37
34
 
38
35
# texts for use in testing
345
342
        k._parents = [frozenset(),
346
343
                frozenset([0]),
347
344
                frozenset([0]),
348
 
                frozenset([0, 1, 2]),
 
345
                frozenset([0,1,2]),
349
346
                ]
350
347
        k._weave = [('{', 0),
351
348
                'foo {',
378
375
        k._parents = [frozenset(),
379
376
                frozenset([0]),
380
377
                frozenset([0]),
381
 
                frozenset([0, 1, 2]),
 
378
                frozenset([0,1,2]),
382
379
                ]
383
380
        k._weave = [('{', 0),
384
381
                'foo {',
591
588
 
592
589
        merged = k.merge([1, 2])
593
590
 
594
 
        self.assertEqual([[['aaa']],
 
591
        self.assertEquals([[['aaa']],
595
592
                           [['111'], ['222']],
596
593
                           [['bbb']]])
597
594
 
674
671
        # Make sure that we can detect if a weave file has
675
672
        # been corrupted. This doesn't test all forms of corruption,
676
673
        # but it at least helps verify the data you get, is what you want.
 
674
        from cStringIO import StringIO
677
675
 
678
676
        w = Weave()
679
677
        w.add_lines('v1', [], ['hello\n'])
680
678
        w.add_lines('v2', ['v1'], ['hello\n', 'there\n'])
681
679
 
682
 
        tmpf = BytesIO()
 
680
        tmpf = StringIO()
683
681
        write_weave(w, tmpf)
684
682
 
685
683
        # Because we are corrupting, we need to make sure we have the exact text
686
 
        self.assertEqual('# bzr weave file v5\n'
 
684
        self.assertEquals('# bzr weave file v5\n'
687
685
                          'i\n1 f572d396fae9206628714fb2ce00f72e94f2258f\nn v1\n\n'
688
686
                          'i 0\n1 90f265c6e75f1c8f9ab76dcf85528352c5f215ef\nn v2\n\n'
689
687
                          'w\n{ 0\n. hello\n}\n{ 1\n. there\n}\nW\n',
690
688
                          tmpf.getvalue())
691
689
 
692
690
        # Change a single letter
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')
 
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')
697
695
 
698
696
        w = read_weave(tmpf)
699
697
 
700
698
        self.assertEqual('hello\n', w.get_text('v1'))
701
 
        self.assertRaises(WeaveInvalidChecksum, w.get_text, 'v2')
702
 
        self.assertRaises(WeaveInvalidChecksum, w.get_lines, 'v2')
703
 
        self.assertRaises(WeaveInvalidChecksum, w.check)
 
699
        self.assertRaises(errors.WeaveInvalidChecksum, w.get_text, 'v2')
 
700
        self.assertRaises(errors.WeaveInvalidChecksum, w.get_lines, 'v2')
 
701
        self.assertRaises(errors.WeaveInvalidChecksum, w.check)
704
702
 
705
703
        # Change the sha checksum
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')
 
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')
710
708
 
711
709
        w = read_weave(tmpf)
712
710
 
713
711
        self.assertEqual('hello\n', w.get_text('v1'))
714
 
        self.assertRaises(WeaveInvalidChecksum, w.get_text, 'v2')
715
 
        self.assertRaises(WeaveInvalidChecksum, w.get_lines, 'v2')
716
 
        self.assertRaises(WeaveInvalidChecksum, w.check)
 
712
        self.assertRaises(errors.WeaveInvalidChecksum, w.get_text, 'v2')
 
713
        self.assertRaises(errors.WeaveInvalidChecksum, w.get_lines, 'v2')
 
714
        self.assertRaises(errors.WeaveInvalidChecksum, w.check)
717
715
 
718
716
 
719
717
class TestWeave(TestCase):
748
746
 
749
747
    def test_compatible_parents(self):
750
748
        w1 = Weave('a')
751
 
        my_parents = {1, 2, 3}
 
749
        my_parents = set([1, 2, 3])
752
750
        # subsets are ok
753
 
        self.assertTrue(w1._compatible_parents(my_parents, {3}))
 
751
        self.assertTrue(w1._compatible_parents(my_parents, set([3])))
754
752
        # same sets
755
753
        self.assertTrue(w1._compatible_parents(my_parents, set(my_parents)))
756
754
        # same empty corner case
757
755
        self.assertTrue(w1._compatible_parents(set(), set()))
758
756
        # other cannot contain stuff my_parents does not
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}))
 
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])))
762
760
 
763
761
 
764
762
class TestWeaveFile(TestCaseInTempDir):
765
763
 
766
764
    def test_empty_file(self):
767
 
        with open('empty.weave', 'wb+') as f:
768
 
            self.assertRaises(WeaveFormatError, read_weave, f)
 
765
        f = open('empty.weave', 'wb+')
 
766
        try:
 
767
            self.assertRaises(errors.WeaveFormatError,
 
768
                              read_weave, f)
 
769
        finally:
 
770
            f.close()