~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_repository.py

  • Committer: Aaron Bentley
  • Date: 2006-09-29 19:06:46 UTC
  • mto: This revision was merged to the branch mainline in revision 2127.
  • Revision ID: abentley@panoramicfeedback.com-20060929190646-205fec57678c1272
Remove base href

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2007 Canonical Ltd
 
1
# Copyright (C) 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
25
25
from stat import S_ISDIR
26
26
from StringIO import StringIO
27
27
 
28
 
from bzrlib import symbol_versioning
29
28
import bzrlib
30
29
import bzrlib.bzrdir as bzrdir
31
30
import bzrlib.errors as errors
34
33
                           UnknownFormatError,
35
34
                           UnsupportedFormatError,
36
35
                           )
37
 
from bzrlib.repository import RepositoryFormat
 
36
import bzrlib.repository as repository
38
37
from bzrlib.tests import TestCase, TestCaseWithTransport
39
38
from bzrlib.transport import get_transport
 
39
from bzrlib.transport.http import HttpServer
40
40
from bzrlib.transport.memory import MemoryServer
41
 
from bzrlib import (
42
 
    repository,
43
 
    upgrade,
44
 
    workingtree,
45
 
    )
46
 
from bzrlib.repofmt import knitrepo, weaverepo
 
41
from bzrlib import upgrade, workingtree
47
42
 
48
43
 
49
44
class TestDefaultFormat(TestCase):
50
45
 
51
46
    def test_get_set_default_format(self):
52
 
        old_default = bzrdir.format_registry.get('default')
53
 
        private_default = old_default().repository_format.__class__
 
47
        private_default = repository._default_format.__class__
54
48
        old_format = repository.RepositoryFormat.get_default_format()
55
49
        self.assertTrue(isinstance(old_format, private_default))
56
 
        def make_sample_bzrdir():
57
 
            my_bzrdir = bzrdir.BzrDirMetaFormat1()
58
 
            my_bzrdir.repository_format = SampleRepositoryFormat()
59
 
            return my_bzrdir
60
 
        bzrdir.format_registry.remove('default')
61
 
        bzrdir.format_registry.register('sample', make_sample_bzrdir, '')
62
 
        bzrdir.format_registry.set_default('sample')
 
50
        repository.RepositoryFormat.set_default_format(SampleRepositoryFormat())
63
51
        # creating a repository should now create an instrumented dir.
64
52
        try:
65
53
            # the default branch format is used by the meta dir format
68
56
            result = dir.create_repository()
69
57
            self.assertEqual(result, 'A bzr repository dir')
70
58
        finally:
71
 
            bzrdir.format_registry.remove('default')
72
 
            bzrdir.format_registry.register('default', old_default, '')
73
 
        self.assertIsInstance(repository.RepositoryFormat.get_default_format(),
74
 
                              old_format.__class__)
 
59
            repository.RepositoryFormat.set_default_format(old_format)
 
60
        self.assertEqual(old_format, repository.RepositoryFormat.get_default_format())
75
61
 
76
62
 
77
63
class SampleRepositoryFormat(repository.RepositoryFormat):
112
98
            t = get_transport(url)
113
99
            found_format = repository.RepositoryFormat.find_format(dir)
114
100
            self.failUnless(isinstance(found_format, format.__class__))
115
 
        check_format(weaverepo.RepositoryFormat7(), "bar")
 
101
        check_format(repository.RepositoryFormat7(), "bar")
116
102
        
117
103
    def test_find_format_no_repository(self):
118
104
        dir = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
147
133
 
148
134
    def test_no_ancestry_weave(self):
149
135
        control = bzrdir.BzrDirFormat6().initialize(self.get_url())
150
 
        repo = weaverepo.RepositoryFormat6().initialize(control)
 
136
        repo = repository.RepositoryFormat6().initialize(control)
151
137
        # We no longer need to create the ancestry.weave file
152
138
        # since it is *never* used.
153
139
        self.assertRaises(NoSuchFile,
159
145
    
160
146
    def test_disk_layout(self):
161
147
        control = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
162
 
        repo = weaverepo.RepositoryFormat7().initialize(control)
 
148
        repo = repository.RepositoryFormat7().initialize(control)
163
149
        # in case of side effects of locking.
164
150
        repo.lock_write()
165
151
        repo.unlock()
181
167
 
182
168
    def test_shared_disk_layout(self):
183
169
        control = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
184
 
        repo = weaverepo.RepositoryFormat7().initialize(control, shared=True)
 
170
        repo = repository.RepositoryFormat7().initialize(control, shared=True)
185
171
        # we want:
186
172
        # format 'Bazaar-NG Repository format 7'
187
173
        # inventory.weave == empty_weave
204
190
    def test_creates_lockdir(self):
205
191
        """Make sure it appears to be controlled by a LockDir existence"""
206
192
        control = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
207
 
        repo = weaverepo.RepositoryFormat7().initialize(control, shared=True)
 
193
        repo = repository.RepositoryFormat7().initialize(control, shared=True)
208
194
        t = control.get_repository_transport(None)
209
195
        # TODO: Should check there is a 'lock' toplevel directory, 
210
196
        # regardless of contents
220
206
        """repo format 7 actually locks on lockdir"""
221
207
        base_url = self.get_url()
222
208
        control = bzrdir.BzrDirMetaFormat1().initialize(base_url)
223
 
        repo = weaverepo.RepositoryFormat7().initialize(control, shared=True)
 
209
        repo = repository.RepositoryFormat7().initialize(control, shared=True)
224
210
        t = control.get_repository_transport(None)
225
211
        repo.lock_write()
226
212
        repo.unlock()
234
220
 
235
221
    def test_shared_no_tree_disk_layout(self):
236
222
        control = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
237
 
        repo = weaverepo.RepositoryFormat7().initialize(control, shared=True)
 
223
        repo = repository.RepositoryFormat7().initialize(control, shared=True)
238
224
        repo.set_make_working_trees(False)
239
225
        # we want:
240
226
        # format 'Bazaar-NG Repository format 7'
263
249
    
264
250
    def test_disk_layout(self):
265
251
        control = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
266
 
        repo = knitrepo.RepositoryFormatKnit1().initialize(control)
 
252
        repo = repository.RepositoryFormatKnit1().initialize(control)
267
253
        # in case of side effects of locking.
268
254
        repo.lock_write()
269
255
        repo.unlock()
296
282
 
297
283
    def test_shared_disk_layout(self):
298
284
        control = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
299
 
        repo = knitrepo.RepositoryFormatKnit1().initialize(control, shared=True)
 
285
        repo = repository.RepositoryFormatKnit1().initialize(control, shared=True)
300
286
        # we want:
301
287
        # format 'Bazaar-NG Knit Repository Format 1'
302
288
        # lock: is a directory
315
301
 
316
302
    def test_shared_no_tree_disk_layout(self):
317
303
        control = bzrdir.BzrDirMetaFormat1().initialize(self.get_url())
318
 
        repo = knitrepo.RepositoryFormatKnit1().initialize(control, shared=True)
 
304
        repo = repository.RepositoryFormatKnit1().initialize(control, shared=True)
319
305
        repo.set_make_working_trees(False)
320
306
        # we want:
321
307
        # format 'Bazaar-NG Knit Repository Format 1'
403
389
    def test_is_compatible_and_registered(self):
404
390
        # InterWeaveRepo is compatible when either side
405
391
        # is a format 5/6/7 branch
406
 
        from bzrlib.repofmt import knitrepo, weaverepo
407
 
        formats = [weaverepo.RepositoryFormat5(),
408
 
                   weaverepo.RepositoryFormat6(),
409
 
                   weaverepo.RepositoryFormat7()]
410
 
        incompatible_formats = [weaverepo.RepositoryFormat4(),
411
 
                                knitrepo.RepositoryFormatKnit1(),
 
392
        formats = [repository.RepositoryFormat5(),
 
393
                   repository.RepositoryFormat6(),
 
394
                   repository.RepositoryFormat7()]
 
395
        incompatible_formats = [repository.RepositoryFormat4(),
 
396
                                repository.RepositoryFormatKnit1(),
412
397
                                ]
413
398
        repo_a = self.make_repository('a')
414
399
        repo_b = self.make_repository('b')
435
420
        t = get_transport(self.get_url('.'))
436
421
        t.mkdir('repository')
437
422
        repo_dir = bzrdir.BzrDirMetaFormat1().initialize('repository')
438
 
        repo = weaverepo.RepositoryFormat7().initialize(repo_dir)
439
 
        target_format = knitrepo.RepositoryFormatKnit1()
 
423
        repo = repository.RepositoryFormat7().initialize(repo_dir)
 
424
        target_format = repository.RepositoryFormatKnit1()
440
425
        converter = repository.CopyConverter(target_format)
441
426
        pb = bzrlib.ui.ui_factory.nested_progress_bar()
442
427
        try:
459
444
    def test_convert(self):
460
445
        """Ensure the upgrade adds weaves for roots"""
461
446
        format = bzrdir.BzrDirMetaFormat1()
462
 
        format.repository_format = knitrepo.RepositoryFormatKnit1()
 
447
        format.repository_format = repository.RepositoryFormatKnit1()
463
448
        tree = self.make_branch_and_tree('.', format)
464
449
        tree.commit("Dull commit", rev_id="dull")
465
450
        revision_tree = tree.branch.repository.revision_tree('dull')
466
451
        self.assertRaises(errors.NoSuchFile, revision_tree.get_file_lines,
467
452
            revision_tree.inventory.root.file_id)
468
453
        format = bzrdir.BzrDirMetaFormat1()
469
 
        format.repository_format = knitrepo.RepositoryFormatKnit2()
 
454
        format.repository_format = repository.RepositoryFormatKnit2()
470
455
        upgrade.Convert('.', format)
471
456
        tree = workingtree.WorkingTree.open('.')
472
457
        revision_tree = tree.branch.repository.revision_tree('dull')