~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_repository.py

  • Committer: Robert Collins
  • Date: 2010-05-06 07:48:22 UTC
  • mto: This revision was merged to the branch mainline in revision 5223.
  • Revision ID: robertc@robertcollins.net-20100506074822-0bsgf2j4h8jx0xkk
Added ``bzrlib.tests.matchers`` as a place to put matchers, along with
our first in-tree matcher. See the module docstring for details.
(Robert Collins)

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 (
30
 
    NoSuchFile,
31
 
    UnknownFormatError,
32
 
    UnsupportedFormatError,
33
 
    )
 
29
from bzrlib.errors import (NoSuchFile,
 
30
                           UnknownFormatError,
 
31
                           UnsupportedFormatError,
 
32
                           )
34
33
from bzrlib import (
35
 
    btree_index,
36
34
    graph,
37
 
    symbol_versioning,
38
35
    tests,
39
 
    transport,
40
36
    )
41
37
from bzrlib.btree_index import BTreeBuilder, BTreeGraphIndex
42
38
from bzrlib.index import GraphIndex
45
41
    TestCase,
46
42
    TestCaseWithTransport,
47
43
    )
 
44
from bzrlib.transport import (
 
45
    get_transport,
 
46
    )
48
47
from bzrlib import (
49
48
    bzrdir,
50
49
    errors,
69
68
    def test_get_set_default_format(self):
70
69
        old_default = bzrdir.format_registry.get('default')
71
70
        private_default = old_default().repository_format.__class__
72
 
        old_format = repository.format_registry.get_default()
 
71
        old_format = repository.RepositoryFormat.get_default_format()
73
72
        self.assertTrue(isinstance(old_format, private_default))
74
73
        def make_sample_bzrdir():
75
74
            my_bzrdir = bzrdir.BzrDirMetaFormat1()
89
88
            bzrdir.format_registry.remove('default')
90
89
            bzrdir.format_registry.remove('sample')
91
90
            bzrdir.format_registry.register('default', old_default, '')
92
 
        self.assertIsInstance(repository.format_registry.get_default(),
 
91
        self.assertIsInstance(repository.RepositoryFormat.get_default_format(),
93
92
                              old_format.__class__)
94
93
 
95
94
 
117
116
        return "opened repository."
118
117
 
119
118
 
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
 
 
129
119
class TestRepositoryFormat(TestCaseWithTransport):
130
120
    """Tests for the Repository format detection used by the bzr meta dir facility.BzrBranchFormat facility."""
131
121
 
137
127
        def check_format(format, url):
138
128
            dir = format._matchingbzrdir.initialize(url)
139
129
            format.initialize(dir)
140
 
            t = transport.get_transport(url)
 
130
            t = get_transport(url)
141
131
            found_format = repository.RepositoryFormat.find_format(dir)
142
132
            self.failUnless(isinstance(found_format, format.__class__))
143
133
        check_format(weaverepo.RepositoryFormat7(), "bar")
156
146
                          dir)
157
147
 
158
148
    def test_register_unregister_format(self):
159
 
        # Test deprecated format registration functions
160
149
        format = SampleRepositoryFormat()
161
150
        # make a control dir
162
151
        dir = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
163
152
        # make a repo
164
153
        format.initialize(dir)
165
154
        # register a format for it.
166
 
        self.applyDeprecated(symbol_versioning.deprecated_in((2, 4, 0)),
167
 
            repository.RepositoryFormat.register_format, format)
 
155
        repository.RepositoryFormat.register_format(format)
168
156
        # which repository.Open will refuse (not supported)
169
 
        self.assertRaises(UnsupportedFormatError, repository.Repository.open,
170
 
            self.get_url())
 
157
        self.assertRaises(UnsupportedFormatError, repository.Repository.open, self.get_url())
171
158
        # but open(unsupported) will work
172
159
        self.assertEqual(format.open(dir), "opened repository.")
173
160
        # unregister the 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)
 
161
        repository.RepositoryFormat.unregister_format(format)
210
162
 
211
163
 
212
164
class TestFormat6(TestCaseWithTransport):
633
585
                                ]
634
586
        repo_a = self.make_repository('a')
635
587
        repo_b = self.make_repository('b')
636
 
        is_compatible = weaverepo.InterWeaveRepo.is_compatible
 
588
        is_compatible = repository.InterWeaveRepo.is_compatible
637
589
        for source in incompatible_formats:
638
590
            # force incompatible left then right
639
591
            repo_a._format = source
645
597
            for target in formats:
646
598
                repo_b._format = target
647
599
                self.assertTrue(is_compatible(repo_a, repo_b))
648
 
        self.assertEqual(weaverepo.InterWeaveRepo,
 
600
        self.assertEqual(repository.InterWeaveRepo,
649
601
                         repository.InterRepository.get(repo_a,
650
602
                                                        repo_b).__class__)
651
603
 
653
605
class TestRepositoryConverter(TestCaseWithTransport):
654
606
 
655
607
    def test_convert_empty(self):
656
 
        t = self.get_transport()
 
608
        t = get_transport(self.get_url('.'))
657
609
        t.mkdir('repository')
658
610
        repo_dir = bzrdir.BzrDirMetaFormat1().initialize('repository')
659
611
        repo = weaverepo.RepositoryFormat7().initialize(repo_dir)
729
681
 
730
682
class Test2a(tests.TestCaseWithMemoryTransport):
731
683
 
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
 
 
747
684
    def test_fetch_combines_groups(self):
748
685
        builder = self.make_branch_builder('source', format='2a')
749
686
        builder.start_series()
1019
956
 
1020
957
    def setUp(self):
1021
958
        super(TestDevelopment6FindParentIdsOfRevisions, self).setUp()
1022
 
        self.builder = self.make_branch_builder('source')
 
959
        self.builder = self.make_branch_builder('source',
 
960
            format='development6-rich-root')
1023
961
        self.builder.start_series()
1024
962
        self.builder.build_snapshot('initial', None,
1025
963
            [('add', ('', 'tree-root', 'directory', None))])
1706
1644
        self.orig_pack = target.pack
1707
1645
        target.pack = self.log_pack
1708
1646
        search = target.search_missing_revision_ids(
1709
 
            source_tree.branch.repository, revision_ids=[tip])
 
1647
            source_tree.branch.repository, tip)
1710
1648
        stream = source.get_stream(search)
1711
1649
        from_format = source_tree.branch.repository._format
1712
1650
        sink = target._get_sink()