/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_bundle.py

  • Committer: Robert Collins
  • Date: 2007-08-22 00:00:26 UTC
  • mfrom: (2739 +trunk)
  • mto: (2592.3.96 repository)
  • mto: This revision was merged to the branch mainline in revision 2742.
  • Revision ID: robertc@robertcollins.net-20070822000026-kvufiqhlreokb1en
Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
    revision as _mod_revision,
28
28
    treebuilder,
29
29
    )
30
 
from bzrlib.builtins import _merge_helper
31
30
from bzrlib.bzrdir import BzrDir
32
31
from bzrlib.bundle.apply_bundle import install_bundle, merge_bundle
33
32
from bzrlib.bundle.bundle_data import BundleTree
637
636
        self.assertEqualDiff(tree1_inv, tree2_inv)
638
637
        other.rename_one('sub/dir/nolastnewline.txt', 'sub/nolastnewline.txt')
639
638
        other.commit('rename file', rev_id='a@cset-0-6b')
640
 
        _merge_helper([other.basedir, -1], [None, None],
641
 
                      this_dir=self.tree1.basedir)
 
639
        self.tree1.merge_from_branch(other.branch)
642
640
        self.tree1.commit(u'Merge', rev_id='a@cset-0-7',
643
641
                          verbose=False)
644
642
        bundle = self.get_valid_bundle('a@cset-0-6', 'a@cset-0-7')
740
738
        tt.create_file('file2', trans_id)
741
739
        tt.apply()
742
740
        other.commit('modify text in another tree', rev_id='a@lmod-0-2b')
743
 
        _merge_helper([other.basedir, -1], [None, None],
744
 
                      this_dir=self.tree1.basedir)
 
741
        self.tree1.merge_from_branch(other.branch)
745
742
        self.tree1.commit(u'Merge', rev_id='a@lmod-0-3',
746
743
                          verbose=False)
747
744
        self.tree1.commit(u'Merge', rev_id='a@lmod-0-4')
1066
1063
                              " slashes")
1067
1064
        bundle = self.get_valid_bundle('null:', 'rev/id')
1068
1065
 
 
1066
    def test_skip_file(self):
 
1067
        """Make sure we don't accidentally write to the wrong versionedfile"""
 
1068
        self.tree1 = self.make_branch_and_tree('tree')
 
1069
        self.b1 = self.tree1.branch
 
1070
        # rev1 is not present in bundle, done by fetch
 
1071
        self.build_tree_contents([('tree/file2', 'contents1')])
 
1072
        self.tree1.add('file2', 'file2-id')
 
1073
        self.tree1.commit('rev1', rev_id='reva')
 
1074
        self.build_tree_contents([('tree/file3', 'contents2')])
 
1075
        # rev2 is present in bundle, and done by fetch
 
1076
        # having file1 in the bunle causes file1's versionedfile to be opened.
 
1077
        self.tree1.add('file3', 'file3-id')
 
1078
        self.tree1.commit('rev2')
 
1079
        # Updating file2 should not cause an attempt to add to file1's vf
 
1080
        target = self.tree1.bzrdir.sprout('target').open_workingtree()
 
1081
        self.build_tree_contents([('tree/file2', 'contents3')])
 
1082
        self.tree1.commit('rev3', rev_id='rev3')
 
1083
        bundle = self.get_valid_bundle('reva', 'rev3')
 
1084
        if getattr(bundle, 'get_bundle_reader', None) is None:
 
1085
            raise TestSkipped('Bundle format cannot provide reader')
 
1086
        # be sure that file1 comes before file2
 
1087
        for b, m, k, r, f in bundle.get_bundle_reader().iter_records():
 
1088
            if f == 'file3-id':
 
1089
                break
 
1090
            self.assertNotEqual(f, 'file2-id')
 
1091
        bundle.install_revisions(target.branch.repository)
 
1092
 
1069
1093
 
1070
1094
class V08BundleTester(BundleTester, TestCaseWithTransport):
1071
1095
 
1253
1277
        new_text = self.get_raw(StringIO(''.join(bundle_txt)))
1254
1278
        new_text = new_text.replace('<file file_id="exe-1"',
1255
1279
                                    '<file executable="y" file_id="exe-1"')
1256
 
        new_text = new_text.replace('B372', 'B387')
 
1280
        new_text = new_text.replace('B222', 'B237')
1257
1281
        bundle_txt = StringIO()
1258
1282
        bundle_txt.write(serializer._get_bundle_header('4'))
1259
1283
        bundle_txt.write('\n')
1462
1486
            'storage_kind':'fulltext'}, 'file', 'revid', 'fileid')
1463
1487
        writer.end()
1464
1488
        fileobj.seek(0)
1465
 
        record_iter = v4.BundleReader(fileobj).iter_records()
 
1489
        reader = v4.BundleReader(fileobj, stream_input=True)
 
1490
        record_iter = reader.iter_records()
 
1491
        record = record_iter.next()
 
1492
        self.assertEqual((None, {'foo': 'bar', 'storage_kind': 'header'},
 
1493
            'info', None, None), record)
 
1494
        record = record_iter.next()
 
1495
        self.assertEqual(("Record body", {'storage_kind': 'fulltext',
 
1496
                          'parents': ['1', '3']}, 'file', 'revid', 'fileid'),
 
1497
                          record)
 
1498
 
 
1499
    def test_roundtrip_record_memory_hungry(self):
 
1500
        fileobj = StringIO()
 
1501
        writer = v4.BundleWriter(fileobj)
 
1502
        writer.begin()
 
1503
        writer.add_info_record(foo='bar')
 
1504
        writer._add_record("Record body", {'parents': ['1', '3'],
 
1505
            'storage_kind':'fulltext'}, 'file', 'revid', 'fileid')
 
1506
        writer.end()
 
1507
        fileobj.seek(0)
 
1508
        reader = v4.BundleReader(fileobj, stream_input=False)
 
1509
        record_iter = reader.iter_records()
1466
1510
        record = record_iter.next()
1467
1511
        self.assertEqual((None, {'foo': 'bar', 'storage_kind': 'header'},
1468
1512
            'info', None, None), record)