/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

Merge bzr.dev r3466

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
    treebuilder,
29
29
    )
30
30
from bzrlib.bzrdir import BzrDir
 
31
from bzrlib.bundle import read_mergeable_from_url
31
32
from bzrlib.bundle.apply_bundle import install_bundle, merge_bundle
32
33
from bzrlib.bundle.bundle_data import BundleTree
 
34
from bzrlib.directory_service import directories
33
35
from bzrlib.bundle.serializer import write_bundle, read_bundle, v09, v4
34
36
from bzrlib.bundle.serializer.v08 import BundleSerializerV08
35
37
from bzrlib.bundle.serializer.v09 import BundleSerializerV09
40
42
                           NoSuchFile,)
41
43
from bzrlib.merge import Merge3Merger
42
44
from bzrlib.repofmt import knitrepo
43
 
from bzrlib.osutils import sha_file
 
45
from bzrlib.osutils import sha_file, sha_string
44
46
from bzrlib.tests import (
45
47
    SymlinkFeature,
46
48
    TestCase,
47
49
    TestCaseInTempDir,
48
50
    TestCaseWithTransport,
49
51
    TestSkipped,
 
52
    test_read_bundle,
50
53
    test_commit,
51
54
    )
52
55
from bzrlib.transform import TreeTransform
166
169
        self.assertEqual(btree.path2id("grandparent/parent"), "b")
167
170
        self.assertEqual(btree.path2id("grandparent/parent/file"), "c")
168
171
 
169
 
        assert btree.path2id("grandparent2") is None
170
 
        assert btree.path2id("grandparent2/parent") is None
171
 
        assert btree.path2id("grandparent2/parent/file") is None
 
172
        self.assertTrue(btree.path2id("grandparent2") is None)
 
173
        self.assertTrue(btree.path2id("grandparent2/parent") is None)
 
174
        self.assertTrue(btree.path2id("grandparent2/parent/file") is None)
172
175
 
173
176
        btree.note_rename("grandparent", "grandparent2")
174
 
        assert btree.old_path("grandparent") is None
175
 
        assert btree.old_path("grandparent/parent") is None
176
 
        assert btree.old_path("grandparent/parent/file") is None
 
177
        self.assertTrue(btree.old_path("grandparent") is None)
 
178
        self.assertTrue(btree.old_path("grandparent/parent") is None)
 
179
        self.assertTrue(btree.old_path("grandparent/parent/file") is None)
177
180
 
178
181
        self.assertEqual(btree.id2path("a"), "grandparent2")
179
182
        self.assertEqual(btree.id2path("b"), "grandparent2/parent")
183
186
        self.assertEqual(btree.path2id("grandparent2/parent"), "b")
184
187
        self.assertEqual(btree.path2id("grandparent2/parent/file"), "c")
185
188
 
186
 
        assert btree.path2id("grandparent") is None
187
 
        assert btree.path2id("grandparent/parent") is None
188
 
        assert btree.path2id("grandparent/parent/file") is None
 
189
        self.assertTrue(btree.path2id("grandparent") is None)
 
190
        self.assertTrue(btree.path2id("grandparent/parent") is None)
 
191
        self.assertTrue(btree.path2id("grandparent/parent/file") is None)
189
192
 
190
193
        btree.note_rename("grandparent/parent", "grandparent2/parent2")
191
194
        self.assertEqual(btree.id2path("a"), "grandparent2")
196
199
        self.assertEqual(btree.path2id("grandparent2/parent2"), "b")
197
200
        self.assertEqual(btree.path2id("grandparent2/parent2/file"), "c")
198
201
 
199
 
        assert btree.path2id("grandparent2/parent") is None
200
 
        assert btree.path2id("grandparent2/parent/file") is None
 
202
        self.assertTrue(btree.path2id("grandparent2/parent") is None)
 
203
        self.assertTrue(btree.path2id("grandparent2/parent/file") is None)
201
204
 
202
205
        btree.note_rename("grandparent/parent/file", 
203
206
                          "grandparent2/parent2/file2")
209
212
        self.assertEqual(btree.path2id("grandparent2/parent2"), "b")
210
213
        self.assertEqual(btree.path2id("grandparent2/parent2/file2"), "c")
211
214
 
212
 
        assert btree.path2id("grandparent2/parent2/file") is None
 
215
        self.assertTrue(btree.path2id("grandparent2/parent2/file") is None)
213
216
 
214
217
    def test_moves(self):
215
218
        """Ensure that file moves have the proper effect on children"""
218
221
                          "grandparent/alt_parent/file")
219
222
        self.assertEqual(btree.id2path("c"), "grandparent/alt_parent/file")
220
223
        self.assertEqual(btree.path2id("grandparent/alt_parent/file"), "c")
221
 
        assert btree.path2id("grandparent/parent/file") is None
 
224
        self.assertTrue(btree.path2id("grandparent/parent/file") is None)
222
225
 
223
226
    def unified_diff(self, old, new):
224
227
        out = StringIO()
230
233
        btree = self.make_tree_1()[0]
231
234
        btree.note_rename("grandparent/parent/file", 
232
235
                          "grandparent/alt_parent/file")
233
 
        assert btree.id2path("e") is None
234
 
        assert btree.path2id("grandparent/parent/file") is None
 
236
        self.assertTrue(btree.id2path("e") is None)
 
237
        self.assertTrue(btree.path2id("grandparent/parent/file") is None)
235
238
        btree.note_id("e", "grandparent/parent/file")
236
239
        return btree
237
240
 
295
298
        btree = self.make_tree_1()[0]
296
299
        self.assertEqual(btree.get_file("c").read(), "Hello\n")
297
300
        btree.note_deletion("grandparent/parent/file")
298
 
        assert btree.id2path("c") is None
299
 
        assert btree.path2id("grandparent/parent/file") is None
 
301
        self.assertTrue(btree.id2path("c") is None)
 
302
        self.assertTrue(btree.path2id("grandparent/parent/file") is None)
300
303
 
301
304
    def sorted_ids(self, tree):
302
305
        ids = list(tree)
461
464
        ancestors = write_bundle(self.b1.repository, rev_id, 'null:', s,
462
465
                                 format=self.format)
463
466
        s.seek(0)
464
 
        assert isinstance(s.getvalue(), str), (
465
 
            "Bundle isn't a bytestring:\n %s..." % repr(s.getvalue())[:40])
 
467
        self.assertIsInstance(s.getvalue(), str)
466
468
        install_bundle(tree.branch.repository, read_bundle(s))
467
469
        for ancestor in ancestors:
468
470
            old = self.b1.repository.revision_tree(ancestor)
1012
1014
        self.assertNotContainsRe(inv_text, 'format="5"')
1013
1015
        self.assertContainsRe(inv_text, 'format="7"')
1014
1016
 
 
1017
    def make_repo_with_installed_revisions(self):
 
1018
        tree = self.make_simple_tree('knit')
 
1019
        tree.commit('hello', rev_id='rev1')
 
1020
        tree.commit('hello', rev_id='rev2')
 
1021
        bundle = read_bundle(self.create_bundle_text('null:', 'rev2')[0])
 
1022
        repo = self.make_repository('repo', format='dirstate-with-subtree')
 
1023
        bundle.install_revisions(repo)
 
1024
        return repo
 
1025
 
1015
1026
    def test_across_models(self):
1016
 
        tree = self.make_simple_tree('knit')
1017
 
        tree.commit('hello', rev_id='rev1')
1018
 
        tree.commit('hello', rev_id='rev2')
1019
 
        bundle = read_bundle(self.create_bundle_text('null:', 'rev2')[0])
1020
 
        repo = self.make_repository('repo', format='dirstate-with-subtree')
1021
 
        bundle.install_revisions(repo)
 
1027
        repo = self.make_repo_with_installed_revisions()
1022
1028
        inv = repo.get_inventory('rev2')
1023
1029
        self.assertEqual('rev2', inv.root.revision)
1024
1030
        root_vf = repo.weave_store.get_weave(inv.root.file_id,
1025
1031
                                             repo.get_transaction())
1026
1032
        self.assertEqual(root_vf.versions(), ['rev1', 'rev2'])
1027
1033
 
 
1034
    def test_inv_hash_across_serializers(self):
 
1035
        repo = self.make_repo_with_installed_revisions()
 
1036
        recorded_inv_sha1 = repo.get_inventory_sha1('rev2')
 
1037
        xml = repo.get_inventory_xml('rev2')
 
1038
        self.assertEqual(sha_string(xml), recorded_inv_sha1)
 
1039
 
1028
1040
    def test_across_models_incompatible(self):
1029
1041
        tree = self.make_simple_tree('dirstate-with-subtree')
1030
1042
        tree.commit('hello', rev_id='rev1')
1339
1351
        self.assertEqual('contents2\nstatic\n', vf.get_text('rev2'))
1340
1352
        rtree = target_repo.revision_tree('rev2')
1341
1353
        inventory_vf = target_repo.get_inventory_weave()
1342
 
        self.assertEqual(['rev1'], inventory_vf.get_parents('rev2'))
 
1354
        self.assertEqual({'rev2':('rev1',)},
 
1355
            inventory_vf.get_parent_map(['rev2']))
1343
1356
        self.assertEqual('changed file',
1344
1357
                         target_repo.get_revision('rev2').message)
1345
1358
 
1559
1572
        self.assertEqual((None, {'foo': 'bar', 'storage_kind': 'header'},
1560
1573
            'info', None, None), record)
1561
1574
        self.assertRaises(BadBundle, record_iter.next)
 
1575
 
 
1576
 
 
1577
class TestReadMergeableFromUrl(TestCaseWithTransport):
 
1578
 
 
1579
    def test_read_mergeable_skips_local(self):
 
1580
        """A local bundle named like the URL should not be read.
 
1581
        """
 
1582
        out, wt = test_read_bundle.create_bundle_file(self)
 
1583
        class FooService(object):
 
1584
            """A directory service that always returns source"""
 
1585
 
 
1586
            def look_up(self, name, url):
 
1587
                return 'source'
 
1588
        directories.register('foo:', FooService, 'Testing directory service')
 
1589
        self.addCleanup(lambda: directories.remove('foo:'))
 
1590
        self.build_tree_contents([('./foo:bar', out.getvalue())])
 
1591
        self.assertRaises(errors.NotABundle, read_mergeable_from_url,
 
1592
                          'foo:bar')