~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_repository.py

  • Committer: Andrew Bennetts
  • Date: 2011-02-25 08:45:27 UTC
  • mto: This revision was merged to the branch mainline in revision 5695.
  • Revision ID: andrew.bennetts@canonical.com-20110225084527-0ucp7p00d00hoqon
Add another test.

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
import sys
27
27
 
28
28
import bzrlib
29
 
from bzrlib.errors import (NoSuchFile,
30
 
                           UnknownFormatError,
31
 
                           UnsupportedFormatError,
32
 
                           )
 
29
from bzrlib.errors import (
 
30
    NoSuchFile,
 
31
    UnknownFormatError,
 
32
    UnsupportedFormatError,
 
33
    )
33
34
from bzrlib import (
 
35
    btree_index,
34
36
    graph,
 
37
    symbol_versioning,
35
38
    tests,
 
39
    transport,
36
40
    )
37
41
from bzrlib.btree_index import BTreeBuilder, BTreeGraphIndex
38
42
from bzrlib.index import GraphIndex
41
45
    TestCase,
42
46
    TestCaseWithTransport,
43
47
    )
44
 
from bzrlib.transport import (
45
 
    get_transport,
46
 
    )
47
48
from bzrlib import (
48
49
    bzrdir,
49
50
    errors,
68
69
    def test_get_set_default_format(self):
69
70
        old_default = bzrdir.format_registry.get('default')
70
71
        private_default = old_default().repository_format.__class__
71
 
        old_format = repository.RepositoryFormat.get_default_format()
 
72
        old_format = repository.format_registry.get_default()
72
73
        self.assertTrue(isinstance(old_format, private_default))
73
74
        def make_sample_bzrdir():
74
75
            my_bzrdir = bzrdir.BzrDirMetaFormat1()
88
89
            bzrdir.format_registry.remove('default')
89
90
            bzrdir.format_registry.remove('sample')
90
91
            bzrdir.format_registry.register('default', old_default, '')
91
 
        self.assertIsInstance(repository.RepositoryFormat.get_default_format(),
 
92
        self.assertIsInstance(repository.format_registry.get_default(),
92
93
                              old_format.__class__)
93
94
 
94
95
 
116
117
        return "opened repository."
117
118
 
118
119
 
 
120
class SampleExtraRepositoryFormat(repository.RepositoryFormat):
 
121
    """A sample format that can not be used in a metadir
 
122
 
 
123
    """
 
124
 
 
125
    def get_format_string(self):
 
126
        raise NotImplementedError
 
127
 
 
128
 
119
129
class TestRepositoryFormat(TestCaseWithTransport):
120
130
    """Tests for the Repository format detection used by the bzr meta dir facility.BzrBranchFormat facility."""
121
131
 
127
137
        def check_format(format, url):
128
138
            dir = format._matchingbzrdir.initialize(url)
129
139
            format.initialize(dir)
130
 
            t = get_transport(url)
 
140
            t = transport.get_transport(url)
131
141
            found_format = repository.RepositoryFormat.find_format(dir)
132
142
            self.failUnless(isinstance(found_format, format.__class__))
133
143
        check_format(weaverepo.RepositoryFormat7(), "bar")
146
156
                          dir)
147
157
 
148
158
    def test_register_unregister_format(self):
 
159
        # Test deprecated format registration functions
149
160
        format = SampleRepositoryFormat()
150
161
        # make a control dir
151
162
        dir = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
152
163
        # make a repo
153
164
        format.initialize(dir)
154
165
        # register a format for it.
155
 
        repository.RepositoryFormat.register_format(format)
 
166
        self.applyDeprecated(symbol_versioning.deprecated_in((2, 4, 0)),
 
167
            repository.RepositoryFormat.register_format, format)
156
168
        # which repository.Open will refuse (not supported)
157
 
        self.assertRaises(UnsupportedFormatError, repository.Repository.open, self.get_url())
 
169
        self.assertRaises(UnsupportedFormatError, repository.Repository.open,
 
170
            self.get_url())
158
171
        # but open(unsupported) will work
159
172
        self.assertEqual(format.open(dir), "opened repository.")
160
173
        # unregister the format
161
 
        repository.RepositoryFormat.unregister_format(format)
 
174
        self.applyDeprecated(symbol_versioning.deprecated_in((2, 4, 0)),
 
175
            repository.RepositoryFormat.unregister_format, format)
 
176
 
 
177
 
 
178
class TestRepositoryFormatRegistry(TestCase):
 
179
 
 
180
    def setUp(self):
 
181
        super(TestRepositoryFormatRegistry, self).setUp()
 
182
        self.registry = repository.RepositoryFormatRegistry()
 
183
 
 
184
    def test_register_unregister_format(self):
 
185
        format = SampleRepositoryFormat()
 
186
        self.registry.register(format)
 
187
        self.assertEquals(format, self.registry.get("Sample .bzr repository format."))
 
188
        self.registry.remove(format)
 
189
        self.assertRaises(KeyError, self.registry.get, "Sample .bzr repository format.")
 
190
 
 
191
    def test_get_all(self):
 
192
        format = SampleRepositoryFormat()
 
193
        self.assertEquals([], self.registry._get_all())
 
194
        self.registry.register(format)
 
195
        self.assertEquals([format], self.registry._get_all())
 
196
 
 
197
    def test_register_extra(self):
 
198
        format = SampleExtraRepositoryFormat()
 
199
        self.assertEquals([], self.registry._get_all())
 
200
        self.registry.register_extra(format)
 
201
        self.assertEquals([format], self.registry._get_all())
 
202
 
 
203
    def test_register_extra_lazy(self):
 
204
        self.assertEquals([], self.registry._get_all())
 
205
        self.registry.register_extra_lazy("bzrlib.tests.test_repository",
 
206
            "SampleExtraRepositoryFormat")
 
207
        formats = self.registry._get_all()
 
208
        self.assertEquals(1, len(formats))
 
209
        self.assertIsInstance(formats[0], SampleExtraRepositoryFormat)
162
210
 
163
211
 
164
212
class TestFormat6(TestCaseWithTransport):
585
633
                                ]
586
634
        repo_a = self.make_repository('a')
587
635
        repo_b = self.make_repository('b')
588
 
        is_compatible = repository.InterWeaveRepo.is_compatible
 
636
        is_compatible = weaverepo.InterWeaveRepo.is_compatible
589
637
        for source in incompatible_formats:
590
638
            # force incompatible left then right
591
639
            repo_a._format = source
597
645
            for target in formats:
598
646
                repo_b._format = target
599
647
                self.assertTrue(is_compatible(repo_a, repo_b))
600
 
        self.assertEqual(repository.InterWeaveRepo,
 
648
        self.assertEqual(weaverepo.InterWeaveRepo,
601
649
                         repository.InterRepository.get(repo_a,
602
650
                                                        repo_b).__class__)
603
651
 
605
653
class TestRepositoryConverter(TestCaseWithTransport):
606
654
 
607
655
    def test_convert_empty(self):
608
 
        t = get_transport(self.get_url('.'))
 
656
        t = self.get_transport()
609
657
        t.mkdir('repository')
610
658
        repo_dir = bzrdir.BzrDirMetaFormat1().initialize('repository')
611
659
        repo = weaverepo.RepositoryFormat7().initialize(repo_dir)
681
729
 
682
730
class Test2a(tests.TestCaseWithMemoryTransport):
683
731
 
 
732
    def test_chk_bytes_uses_custom_btree_parser(self):
 
733
        mt = self.make_branch_and_memory_tree('test', format='2a')
 
734
        mt.lock_write()
 
735
        self.addCleanup(mt.unlock)
 
736
        mt.add([''], ['root-id'])
 
737
        mt.commit('first')
 
738
        index = mt.branch.repository.chk_bytes._index._graph_index._indices[0]
 
739
        self.assertEqual(btree_index._gcchk_factory, index._leaf_factory)
 
740
        # It should also work if we re-open the repo
 
741
        repo = mt.branch.repository.bzrdir.open_repository()
 
742
        repo.lock_read()
 
743
        self.addCleanup(repo.unlock)
 
744
        index = repo.chk_bytes._index._graph_index._indices[0]
 
745
        self.assertEqual(btree_index._gcchk_factory, index._leaf_factory)
 
746
 
684
747
    def test_fetch_combines_groups(self):
685
748
        builder = self.make_branch_builder('source', format='2a')
686
749
        builder.start_series()
956
1019
 
957
1020
    def setUp(self):
958
1021
        super(TestDevelopment6FindParentIdsOfRevisions, self).setUp()
959
 
        self.builder = self.make_branch_builder('source',
960
 
            format='development6-rich-root')
 
1022
        self.builder = self.make_branch_builder('source')
961
1023
        self.builder.start_series()
962
1024
        self.builder.build_snapshot('initial', None,
963
1025
            [('add', ('', 'tree-root', 'directory', None))])
1644
1706
        self.orig_pack = target.pack
1645
1707
        target.pack = self.log_pack
1646
1708
        search = target.search_missing_revision_ids(
1647
 
            source_tree.branch.repository, tip)
 
1709
            source_tree.branch.repository, revision_ids=[tip])
1648
1710
        stream = source.get_stream(search)
1649
1711
        from_format = source_tree.branch.repository._format
1650
1712
        sink = target._get_sink()