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()
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
check_format(weaverepo.RepositoryFormat7(), "bar")
143
check_format(repository.format_registry.get_default(), "bar")
135
145
def test_find_format_no_repository(self):
136
146
dir = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
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())
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,
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)
178
class TestRepositoryFormatRegistry(TestCase):
181
super(TestRepositoryFormatRegistry, self).setUp()
182
self.registry = repository.RepositoryFormatRegistry()
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.")
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())
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())
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)
164
212
class TestFormat6(TestCaseWithTransport):
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__)
653
class TestRepositoryFormat1(knitrepo.RepositoryFormatKnit1):
655
def get_format_string(self):
656
return "Test Format 1"
659
class TestRepositoryFormat2(knitrepo.RepositoryFormatKnit1):
661
def get_format_string(self):
662
return "Test Format 2"
605
665
class TestRepositoryConverter(TestCaseWithTransport):
607
667
def test_convert_empty(self):
608
t = get_transport(self.get_url('.'))
668
source_format = TestRepositoryFormat1()
669
target_format = TestRepositoryFormat2()
670
repository.format_registry.register(source_format)
671
self.addCleanup(repository.format_registry.remove,
673
repository.format_registry.register(target_format)
674
self.addCleanup(repository.format_registry.remove,
676
t = self.get_transport()
609
677
t.mkdir('repository')
610
678
repo_dir = bzrdir.BzrDirMetaFormat1().initialize('repository')
611
repo = weaverepo.RepositoryFormat7().initialize(repo_dir)
612
target_format = knitrepo.RepositoryFormatKnit1()
679
repo = TestRepositoryFormat1().initialize(repo_dir)
613
680
converter = repository.CopyConverter(target_format)
614
681
pb = bzrlib.ui.ui_factory.nested_progress_bar()
620
687
self.assertTrue(isinstance(target_format, repo._format.__class__))
623
class TestMisc(TestCase):
625
def test_unescape_xml(self):
626
"""We get some kind of error when malformed entities are passed"""
627
self.assertRaises(KeyError, repository._unescape_xml, 'foo&bar;')
630
690
class TestRepositoryFormatKnit3(TestCaseWithTransport):
632
692
def test_attribute__fetch_order(self):
682
742
class Test2a(tests.TestCaseWithMemoryTransport):
744
def test_chk_bytes_uses_custom_btree_parser(self):
745
mt = self.make_branch_and_memory_tree('test', format='2a')
747
self.addCleanup(mt.unlock)
748
mt.add([''], ['root-id'])
750
index = mt.branch.repository.chk_bytes._index._graph_index._indices[0]
751
self.assertEqual(btree_index._gcchk_factory, index._leaf_factory)
752
# It should also work if we re-open the repo
753
repo = mt.branch.repository.bzrdir.open_repository()
755
self.addCleanup(repo.unlock)
756
index = repo.chk_bytes._index._graph_index._indices[0]
757
self.assertEqual(btree_index._gcchk_factory, index._leaf_factory)
684
759
def test_fetch_combines_groups(self):
685
760
builder = self.make_branch_builder('source', format='2a')
686
761
builder.start_series()
957
1032
def setUp(self):
958
1033
super(TestDevelopment6FindParentIdsOfRevisions, self).setUp()
959
self.builder = self.make_branch_builder('source',
960
format='development6-rich-root')
1034
self.builder = self.make_branch_builder('source')
961
1035
self.builder.start_series()
962
1036
self.builder.build_snapshot('initial', None,
963
1037
[('add', ('', 'tree-root', 'directory', None))])
1644
1718
self.orig_pack = target.pack
1645
1719
target.pack = self.log_pack
1646
1720
search = target.search_missing_revision_ids(
1647
source_tree.branch.repository, tip)
1721
source_tree.branch.repository, revision_ids=[tip])
1648
1722
stream = source.get_stream(search)
1649
1723
from_format = source_tree.branch.repository._format
1650
1724
sink = target._get_sink()