~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_bundle.py

  • Committer: Aaron Bentley
  • Date: 2007-07-17 13:27:14 UTC
  • mfrom: (2624 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2631.
  • Revision ID: abentley@panoramicfeedback.com-20070717132714-tmzx9khmg9501k51
Merge from bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
    errors,
25
25
    inventory,
26
26
    repository,
 
27
    revision as _mod_revision,
27
28
    treebuilder,
28
29
    )
29
30
from bzrlib.builtins import _merge_helper
337
338
        source.commit('one', rev_id='one-id')
338
339
        source.commit('two', rev_id='two-id')
339
340
        text = StringIO()
340
 
        write_bundle(source.branch.repository, 'two-id', None, text, 
 
341
        write_bundle(source.branch.repository, 'two-id', 'null:', text,
341
342
                     format='0.9')
342
343
        text.seek(0)
343
344
 
453
454
                os.mkdir(checkout_dir)
454
455
        tree = self.make_branch_and_tree(checkout_dir)
455
456
        s = StringIO()
456
 
        ancestors = write_bundle(self.b1.repository, rev_id, None, s,
 
457
        ancestors = write_bundle(self.b1.repository, rev_id, 'null:', s,
457
458
                                 format=self.format)
458
459
        s.seek(0)
459
460
        assert isinstance(s.getvalue(), str), (
479
480
                    continue
480
481
                self.assertEqual(old_file.read(),
481
482
                                 new.get_file(inventory_id).read())
482
 
        if rev_id is not None:
 
483
        if not _mod_revision.is_null(rev_id):
483
484
            rh = self.b1.revision_history()
484
485
            tree.branch.set_revision_history(rh[:rh.index(rev_id)+1])
485
486
            tree.update()
546
547
        self.tree1.add('one')
547
548
        self.tree1.commit('add one', rev_id='a@cset-0-1')
548
549
 
549
 
        bundle = self.get_valid_bundle(None, 'a@cset-0-1')
 
550
        bundle = self.get_valid_bundle('null:', 'a@cset-0-1')
550
551
 
551
552
        # Make sure we can handle files with spaces, tabs, other
552
553
        # bogus characters
584
585
        bundle = self.get_valid_bundle('a@cset-0-1', 'a@cset-0-2')
585
586
 
586
587
        # Check a rollup bundle 
587
 
        bundle = self.get_valid_bundle(None, 'a@cset-0-2')
 
588
        bundle = self.get_valid_bundle('null:', 'a@cset-0-2')
588
589
 
589
590
        # Now delete entries
590
591
        self.tree1.remove(
603
604
            errors.VersionedFileInvalidChecksum), self.get_invalid_bundle,
604
605
            'a@cset-0-2', 'a@cset-0-3')
605
606
        # Check a rollup bundle 
606
 
        bundle = self.get_valid_bundle(None, 'a@cset-0-3')
 
607
        bundle = self.get_valid_bundle('null:', 'a@cset-0-3')
607
608
 
608
609
        # Now move the directory
609
610
        self.tree1.rename_one('dir', 'sub/dir')
611
612
 
612
613
        bundle = self.get_valid_bundle('a@cset-0-3', 'a@cset-0-4')
613
614
        # Check a rollup bundle 
614
 
        bundle = self.get_valid_bundle(None, 'a@cset-0-4')
 
615
        bundle = self.get_valid_bundle('null:', 'a@cset-0-4')
615
616
 
616
617
        # Modified files
617
618
        open('b1/sub/dir/WithCaps.txt', 'ab').write('\nAdding some text\n')
651
652
        tt.new_symlink('link', tt.root, 'bar/foo', 'link-1')
652
653
        tt.apply()
653
654
        self.tree1.commit('add symlink', rev_id='l@cset-0-1')
654
 
        self.get_valid_bundle(None, 'l@cset-0-1')
 
655
        self.get_valid_bundle('null:', 'l@cset-0-1')
655
656
        tt = TreeTransform(self.tree1)
656
657
        trans_id = tt.trans_id_tree_file_id('link-1')
657
658
        tt.adjust_path('link2', tt.root, trans_id)
685
686
            'binary-2')
686
687
        tt.apply()
687
688
        self.tree1.commit('add binary', rev_id='b@cset-0-1')
688
 
        self.get_valid_bundle(None, 'b@cset-0-1')
 
689
        self.get_valid_bundle('null:', 'b@cset-0-1')
689
690
 
690
691
        # Delete
691
692
        tt = TreeTransform(self.tree1)
715
716
        self.get_valid_bundle('b@cset-0-3', 'b@cset-0-4')
716
717
 
717
718
        # Rollup
718
 
        self.get_valid_bundle(None, 'b@cset-0-4')
 
719
        self.get_valid_bundle('null:', 'b@cset-0-4')
719
720
 
720
721
    def test_last_modified(self):
721
722
        self.tree1 = self.make_branch_and_tree('b1')
807
808
                              " combining characters.")
808
809
 
809
810
        # Add
810
 
        bundle = self.get_valid_bundle(None, 'i18n-1')
 
811
        bundle = self.get_valid_bundle('null:', 'i18n-1')
811
812
 
812
813
        # Modified
813
814
        f = open(u'b1/with Dod\xe9', 'wb')
831
832
        bundle = self.get_valid_bundle('i18n-3', 'i18n-4')
832
833
 
833
834
        # Rollup
834
 
        bundle = self.get_valid_bundle(None, 'i18n-4')
 
835
        bundle = self.get_valid_bundle('null:', 'i18n-4')
835
836
 
836
837
 
837
838
    def test_whitespace_bundle(self):
849
850
        # Added
850
851
        self.tree1.commit('funky whitespace', rev_id='white-1')
851
852
 
852
 
        bundle = self.get_valid_bundle(None, 'white-1')
 
853
        bundle = self.get_valid_bundle('null:', 'white-1')
853
854
 
854
855
        # Modified
855
856
        open('b1/trailing space ', 'ab').write('add some text\n')
870
871
        bundle = self.get_valid_bundle('white-3', 'white-4')
871
872
        
872
873
        # Now test a complet roll-up
873
 
        bundle = self.get_valid_bundle(None, 'white-4')
 
874
        bundle = self.get_valid_bundle('null:', 'white-4')
874
875
 
875
876
    def test_alt_timezone_bundle(self):
876
877
        self.tree1 = self.make_branch_and_memory_tree('b1')
886
887
        self.tree1.commit('non-hour offset timezone', rev_id='tz-1',
887
888
                          timezone=19800, timestamp=1152544886.0)
888
889
 
889
 
        bundle = self.get_valid_bundle(None, 'tz-1')
 
890
        bundle = self.get_valid_bundle('null:', 'tz-1')
890
891
        
891
892
        rev = bundle.revisions[0]
892
893
        self.assertEqual('Mon 2006-07-10 20:51:26.000000000 +0530', rev.date)
898
899
        self.tree1 = self.make_branch_and_tree('b1')
899
900
        self.b1 = self.tree1.branch
900
901
        self.tree1.commit('message', rev_id='revid1')
901
 
        bundle = self.get_valid_bundle(None, 'revid1')
 
902
        bundle = self.get_valid_bundle('null:', 'revid1')
902
903
        tree = self.get_bundle_tree(bundle, 'revid1')
903
904
        self.assertEqual('revid1', tree.inventory.root.revision)
904
905
 
906
907
        self.tree1 = self.make_branch_and_tree('b1')
907
908
        self.b1 = self.tree1.branch
908
909
        self.tree1.commit('message', rev_id='rev2a')
909
 
        bundle = self.get_valid_bundle(None, 'rev2a')
 
910
        bundle = self.get_valid_bundle('null:', 'rev2a')
910
911
        branch2 = self.make_branch('b2')
911
912
        self.assertFalse(branch2.repository.has_revision('rev2a'))
912
913
        target_revision = bundle.install_revisions(branch2.repository)
921
922
        tree.add([''], ['TREE_ROOT'])
922
923
        tree.commit('One', revprops={'one':'two', 'empty':''}, rev_id='rev1')
923
924
        self.b1 = tree.branch
924
 
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
925
        bundle_sio, revision_ids = self.create_bundle_text('null:', 'rev1')
925
926
        bundle = read_bundle(bundle_sio)
926
927
        revision_info = bundle.revisions[0]
927
928
        self.assertEqual('rev1', revision_info.revision_id)
939
940
        tree.commit('One', rev_id='rev1',
940
941
                    revprops={'a':'4', 'b':'3', 'c':'2', 'd':'1'})
941
942
        self.b1 = tree.branch
942
 
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
943
        bundle_sio, revision_ids = self.create_bundle_text('null:', 'rev1')
943
944
        bundle = read_bundle(bundle_sio)
944
945
        revision_info = bundle.revisions[0]
945
946
        self.assertEqual('rev1', revision_info.revision_id)
962
963
        tree.commit('One', rev_id='rev1',
963
964
                    revprops={'omega':u'\u03a9', 'alpha':u'\u03b1'})
964
965
        self.b1 = tree.branch
965
 
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
966
        bundle_sio, revision_ids = self.create_bundle_text('null:', 'rev1')
966
967
        bundle = read_bundle(bundle_sio)
967
968
        revision_info = bundle.revisions[0]
968
969
        self.assertEqual('rev1', revision_info.revision_id)
979
980
        self.build_tree_contents([('tree/file', 'content2')])
980
981
        tree.add_parent_tree_id('ghost')
981
982
        tree.commit('rev2', rev_id='rev2')
982
 
        bundle = self.get_valid_bundle(None, 'rev2')
 
983
        bundle = self.get_valid_bundle('null:', 'rev2')
983
984
 
984
985
    def make_simple_tree(self, format=None):
985
986
        tree = self.make_branch_and_tree('b1', format=format)
992
993
        tree = self.make_simple_tree('knit')
993
994
        tree.commit('hello', rev_id='rev1')
994
995
        tree.commit('hello', rev_id='rev2')
995
 
        bundle = read_bundle(self.create_bundle_text(None, 'rev2')[0])
 
996
        bundle = read_bundle(self.create_bundle_text('null:', 'rev2')[0])
996
997
        repo = self.make_repository('repo', format='dirstate-with-subtree')
997
998
        bundle.install_revisions(repo)
998
999
        inv_text = repo.get_inventory_xml('rev2')
1003
1004
        tree = self.make_simple_tree('knit')
1004
1005
        tree.commit('hello', rev_id='rev1')
1005
1006
        tree.commit('hello', rev_id='rev2')
1006
 
        bundle = read_bundle(self.create_bundle_text(None, 'rev2')[0])
 
1007
        bundle = read_bundle(self.create_bundle_text('null:', 'rev2')[0])
1007
1008
        repo = self.make_repository('repo', format='dirstate-with-subtree')
1008
1009
        bundle.install_revisions(repo)
1009
1010
        inv = repo.get_inventory('rev2')
1017
1018
        tree.commit('hello', rev_id='rev1')
1018
1019
        tree.commit('hello', rev_id='rev2')
1019
1020
        try:
1020
 
            bundle = read_bundle(self.create_bundle_text(None, 'rev1')[0])
 
1021
            bundle = read_bundle(self.create_bundle_text('null:', 'rev1')[0])
1021
1022
        except errors.IncompatibleBundleFormat:
1022
1023
            raise TestSkipped("Format 0.8 doesn't work with knit3")
1023
1024
        repo = self.make_repository('repo', format='knit')
1024
1025
        bundle.install_revisions(repo)
1025
1026
 
1026
 
        bundle = read_bundle(self.create_bundle_text(None, 'rev2')[0])
 
1027
        bundle = read_bundle(self.create_bundle_text('null:', 'rev2')[0])
1027
1028
        self.assertRaises(errors.IncompatibleRevision,
1028
1029
                          bundle.install_revisions, repo)
1029
1030
 
1031
1032
        tree = self.make_simple_tree()
1032
1033
        tree.commit('hello', rev_id='rev1')
1033
1034
        tree.commit('hello', rev_id='rev2')
1034
 
        bundle = read_bundle(self.create_bundle_text(None, 'rev1')[0])
 
1035
        bundle = read_bundle(self.create_bundle_text('null:', 'rev1')[0])
1035
1036
        result = bundle.get_merge_request(tree.branch.repository)
1036
1037
        self.assertEqual((None, 'rev1', 'inapplicable'), result)
1037
1038
 
1044
1045
        tree.add('subtree')
1045
1046
        tree.commit('hello', rev_id='rev1')
1046
1047
        try:
1047
 
            bundle = read_bundle(self.create_bundle_text(None, 'rev1')[0])
 
1048
            bundle = read_bundle(self.create_bundle_text('null:', 'rev1')[0])
1048
1049
        except errors.IncompatibleBundleFormat:
1049
1050
            raise TestSkipped("Format 0.8 doesn't work with knit3")
1050
1051
        if isinstance(bundle, v09.BundleInfo09):
1063
1064
        except ValueError:
1064
1065
            raise TestSkipped("Repository doesn't support revision ids with"
1065
1066
                              " slashes")
1066
 
        bundle = self.get_valid_bundle(None, 'rev/id')
 
1067
        bundle = self.get_valid_bundle('null:', 'rev/id')
1067
1068
 
1068
1069
 
1069
1070
class V08BundleTester(BundleTester, TestCaseWithTransport):
1078
1079
        tree.add([''], ['TREE_ROOT'])
1079
1080
        tree.commit('One', revprops={'one':'two', 'empty':''}, rev_id='rev1')
1080
1081
        self.b1 = tree.branch
1081
 
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
1082
        bundle_sio, revision_ids = self.create_bundle_text('null:', 'rev1')
1082
1083
        self.assertContainsRe(bundle_sio.getvalue(),
1083
1084
                              '# properties:\n'
1084
1085
                              '#   branch-nick: tree\n'
1110
1111
        tree.add([''], ['TREE_ROOT'])
1111
1112
        tree.commit('One', revprops={'one':'two', 'empty':''}, rev_id='rev1')
1112
1113
        self.b1 = tree.branch
1113
 
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
1114
        bundle_sio, revision_ids = self.create_bundle_text('null:', 'rev1')
1114
1115
        txt = bundle_sio.getvalue()
1115
1116
        loc = txt.find('#   empty: ') + len('#   empty:')
1116
1117
        # Create a new bundle, which strips the trailing space after empty
1139
1140
        tree.commit('One', rev_id='rev1',
1140
1141
                    revprops={'a':'4', 'b':'3', 'c':'2', 'd':'1'})
1141
1142
        self.b1 = tree.branch
1142
 
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
1143
        bundle_sio, revision_ids = self.create_bundle_text('null:', 'rev1')
1143
1144
        self.assertContainsRe(bundle_sio.getvalue(),
1144
1145
                              '# properties:\n'
1145
1146
                              '#   a: 4\n'
1170
1171
        tree.commit('One', rev_id='rev1',
1171
1172
                    revprops={'omega':u'\u03a9', 'alpha':u'\u03b1'})
1172
1173
        self.b1 = tree.branch
1173
 
        bundle_sio, revision_ids = self.create_bundle_text(None, 'rev1')
 
1174
        bundle_sio, revision_ids = self.create_bundle_text('null:', 'rev1')
1174
1175
        self.assertContainsRe(bundle_sio.getvalue(),
1175
1176
                              '# properties:\n'
1176
1177
                              '#   alpha: \xce\xb1\n'