~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_bundle.py

  • Committer: John Arbash Meinel
  • Date: 2007-04-28 15:04:17 UTC
  • mfrom: (2466 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2566.
  • Revision ID: john@arbash-meinel.com-20070428150417-trp3pi0pzd411pu4
[merge] bzr.dev 2466

Show diffs side-by-side

added added

removed removed

Lines of Context:
905
905
        self.assertTrue(branch2.repository.has_revision('rev2a'))
906
906
        self.assertEqual('rev2a', target_revision)
907
907
 
 
908
    def test_bundle_empty_property(self):
 
909
        """Test serializing revision properties with an empty value."""
 
910
        tree = self.make_branch_and_memory_tree('tree')
 
911
        tree.lock_write()
 
912
        self.addCleanup(tree.unlock)
 
913
        tree.add([''], ['TREE_ROOT'])
 
914
        tree.commit('One', revprops={'one':'two', 'empty':''}, rev_id='rev1')
 
915
        self.b1 = tree.branch
 
916
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
917
        self.assertContainsRe(bundle_sio.getvalue(),
 
918
                              '# properties:\n'
 
919
                              '#   branch-nick: tree\n'
 
920
                              '#   empty: \n'
 
921
                              '#   one: two\n'
 
922
                             )
 
923
        bundle = read_bundle(bundle_sio)
 
924
        revision_info = bundle.revisions[0]
 
925
        self.assertEqual('rev1', revision_info.revision_id)
 
926
        rev = revision_info.as_revision()
 
927
        self.assertEqual({'branch-nick':'tree', 'empty':'', 'one':'two'},
 
928
                         rev.properties)
 
929
 
 
930
    def test_bundle_empty_property_alt(self):
 
931
        """Test serializing revision properties with an empty value.
 
932
 
 
933
        Older readers had a bug when reading an empty property.
 
934
        They assumed that all keys ended in ': \n'. However they would write an
 
935
        empty value as ':\n'. This tests make sure that all newer bzr versions
 
936
        can handle th second form.
 
937
        """
 
938
        tree = self.make_branch_and_memory_tree('tree')
 
939
        tree.lock_write()
 
940
        self.addCleanup(tree.unlock)
 
941
        tree.add([''], ['TREE_ROOT'])
 
942
        tree.commit('One', revprops={'one':'two', 'empty':''}, rev_id='rev1')
 
943
        self.b1 = tree.branch
 
944
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
945
        txt = bundle_sio.getvalue()
 
946
        loc = txt.find('#   empty: ') + len('#   empty:')
 
947
        # Create a new bundle, which strips the trailing space after empty
 
948
        bundle_sio = StringIO(txt[:loc] + txt[loc+1:])
 
949
 
 
950
        self.assertContainsRe(bundle_sio.getvalue(),
 
951
                              '# properties:\n'
 
952
                              '#   branch-nick: tree\n'
 
953
                              '#   empty:\n'
 
954
                              '#   one: two\n'
 
955
                             )
 
956
        bundle = read_bundle(bundle_sio)
 
957
        revision_info = bundle.revisions[0]
 
958
        self.assertEqual('rev1', revision_info.revision_id)
 
959
        rev = revision_info.as_revision()
 
960
        self.assertEqual({'branch-nick':'tree', 'empty':'', 'one':'two'},
 
961
                         rev.properties)
 
962
 
 
963
    def test_bundle_sorted_properties(self):
 
964
        """For stability the writer should write properties in sorted order."""
 
965
        tree = self.make_branch_and_memory_tree('tree')
 
966
        tree.lock_write()
 
967
        self.addCleanup(tree.unlock)
 
968
 
 
969
        tree.add([''], ['TREE_ROOT'])
 
970
        tree.commit('One', rev_id='rev1',
 
971
                    revprops={'a':'4', 'b':'3', 'c':'2', 'd':'1'})
 
972
        self.b1 = tree.branch
 
973
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
974
        self.assertContainsRe(bundle_sio.getvalue(),
 
975
                              '# properties:\n'
 
976
                              '#   a: 4\n'
 
977
                              '#   b: 3\n'
 
978
                              '#   branch-nick: tree\n'
 
979
                              '#   c: 2\n'
 
980
                              '#   d: 1\n'
 
981
                             )
 
982
        bundle = read_bundle(bundle_sio)
 
983
        revision_info = bundle.revisions[0]
 
984
        self.assertEqual('rev1', revision_info.revision_id)
 
985
        rev = revision_info.as_revision()
 
986
        self.assertEqual({'branch-nick':'tree', 'a':'4', 'b':'3', 'c':'2',
 
987
                          'd':'1'}, rev.properties)
 
988
 
 
989
    def test_bundle_unicode_properties(self):
 
990
        """We should be able to round trip a non-ascii property."""
 
991
        tree = self.make_branch_and_memory_tree('tree')
 
992
        tree.lock_write()
 
993
        self.addCleanup(tree.unlock)
 
994
 
 
995
        tree.add([''], ['TREE_ROOT'])
 
996
        # Revisions themselves do not require anything about revision property
 
997
        # keys, other than that they are a basestring, and do not contain
 
998
        # whitespace.
 
999
        # However, Testaments assert than they are str(), and thus should not
 
1000
        # be Unicode.
 
1001
        tree.commit('One', rev_id='rev1',
 
1002
                    revprops={'omega':u'\u03a9', 'alpha':u'\u03b1'})
 
1003
        self.b1 = tree.branch
 
1004
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
1005
        self.assertContainsRe(bundle_sio.getvalue(),
 
1006
                              '# properties:\n'
 
1007
                              '#   alpha: \xce\xb1\n'
 
1008
                              '#   branch-nick: tree\n'
 
1009
                              '#   omega: \xce\xa9\n'
 
1010
                             )
 
1011
        bundle = read_bundle(bundle_sio)
 
1012
        revision_info = bundle.revisions[0]
 
1013
        self.assertEqual('rev1', revision_info.revision_id)
 
1014
        rev = revision_info.as_revision()
 
1015
        self.assertEqual({'branch-nick':'tree', 'omega':u'\u03a9',
 
1016
                          'alpha':u'\u03b1'}, rev.properties)
 
1017
 
908
1018
 
909
1019
class V09BundleKnit2Tester(V08BundleTester):
910
1020