/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_bzrdir.py

  • Committer: Aaron Bentley
  • Date: 2007-01-17 16:13:50 UTC
  • mfrom: (2236 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2240.
  • Revision ID: abentley@panoramicfeedback.com-20070117161350-z0poe4762mzt2mlb
Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
from bzrlib import (
25
25
    help_topics,
 
26
    symbol_versioning,
26
27
    )
27
28
import bzrlib.branch
28
29
import bzrlib.bzrdir as bzrdir
45
46
        old_format = bzrdir.BzrDirFormat.get_default_format()
46
47
        # default is BzrDirFormat6
47
48
        self.failUnless(isinstance(old_format, bzrdir.BzrDirMetaFormat1))
48
 
        bzrdir.BzrDirFormat.set_default_format(SampleBzrDirFormat())
 
49
        self.applyDeprecated(symbol_versioning.zero_fourteen, 
 
50
                             bzrdir.BzrDirFormat.set_default_format, 
 
51
                             SampleBzrDirFormat())
49
52
        # creating a bzr dir should now create an instrumented dir.
50
53
        try:
51
54
            result = bzrdir.BzrDir.create('memory:///')
52
55
            self.failUnless(isinstance(result, SampleBzrDir))
53
56
        finally:
54
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
57
            self.applyDeprecated(symbol_versioning.zero_fourteen,
 
58
                bzrdir.BzrDirFormat.set_default_format, old_format)
55
59
        self.assertEqual(old_format, bzrdir.BzrDirFormat.get_default_format())
56
60
 
57
61
 
114
118
        self.assertContainsRe(deprecated, 
115
119
            '  lazy:\n    \(native\) Format registered lazily\n')
116
120
 
 
121
    def test_set_default_repository(self):
 
122
        default_factory = bzrdir.format_registry.get('default')
 
123
        old_default = [k for k, v in bzrdir.format_registry.iteritems()
 
124
                       if v == default_factory and k != 'default'][0]
 
125
        bzrdir.format_registry.set_default_repository('metaweave')
 
126
        try:
 
127
            self.assertIs(bzrdir.format_registry.get('metaweave'),
 
128
                          bzrdir.format_registry.get('default'))
 
129
            self.assertIs(
 
130
                repository.RepositoryFormat.get_default_format().__class__,
 
131
                repository.RepositoryFormat7)
 
132
        finally:
 
133
            bzrdir.format_registry.set_default_repository(old_default)
 
134
 
117
135
class SampleBranch(bzrlib.branch.Branch):
118
136
    """A dummy branch for guess what, dummy use."""
119
137
 
217
235
 
218
236
    def test_create_repository(self):
219
237
        format = SampleBzrDirFormat()
220
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
221
 
        bzrdir.BzrDirFormat.set_default_format(format)
222
 
        try:
223
 
            repo = bzrdir.BzrDir.create_repository(self.get_url())
224
 
            self.assertEqual('A repository', repo)
225
 
        finally:
226
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
238
        repo = bzrdir.BzrDir.create_repository(self.get_url(), format=format)
 
239
        self.assertEqual('A repository', repo)
227
240
 
228
241
    def test_create_repository_shared(self):
229
242
        old_format = bzrdir.BzrDirFormat.get_default_format()
238
251
    def test_create_repository_under_shared(self):
239
252
        # an explicit create_repository always does so.
240
253
        # we trust the format is right from the 'create_repository test'
241
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
242
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
243
 
        try:
244
 
            self.make_repository('.', shared=True)
245
 
            repo = bzrdir.BzrDir.create_repository(self.get_url('child'))
246
 
            self.assertTrue(isinstance(repo, repository.Repository))
247
 
            self.assertTrue(repo.bzrdir.root_transport.base.endswith('child/'))
248
 
        finally:
249
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
254
        format = bzrdir.format_registry.make_bzrdir('knit')
 
255
        self.make_repository('.', shared=True, format=format)
 
256
        repo = bzrdir.BzrDir.create_repository(self.get_url('child'),
 
257
                                               format=format)
 
258
        self.assertTrue(isinstance(repo, repository.Repository))
 
259
        self.assertTrue(repo.bzrdir.root_transport.base.endswith('child/'))
250
260
 
251
261
    def test_create_branch_and_repo_uses_default(self):
252
262
        format = SampleBzrDirFormat()
253
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
254
 
        bzrdir.BzrDirFormat.set_default_format(format)
255
 
        try:
256
 
            branch = bzrdir.BzrDir.create_branch_and_repo(self.get_url())
257
 
            self.assertTrue(isinstance(branch, SampleBranch))
258
 
        finally:
259
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
263
        branch = bzrdir.BzrDir.create_branch_and_repo(self.get_url(), 
 
264
                                                      format=format)
 
265
        self.assertTrue(isinstance(branch, SampleBranch))
260
266
 
261
267
    def test_create_branch_and_repo_under_shared(self):
262
268
        # creating a branch and repo in a shared repo uses the
263
269
        # shared repository
264
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
265
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
266
 
        try:
267
 
            self.make_repository('.', shared=True)
268
 
            branch = bzrdir.BzrDir.create_branch_and_repo(self.get_url('child'))
269
 
            self.assertRaises(errors.NoRepositoryPresent,
270
 
                              branch.bzrdir.open_repository)
271
 
        finally:
272
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
270
        format = bzrdir.format_registry.make_bzrdir('knit')
 
271
        self.make_repository('.', shared=True, format=format)
 
272
        branch = bzrdir.BzrDir.create_branch_and_repo(
 
273
            self.get_url('child'), format=format)
 
274
        self.assertRaises(errors.NoRepositoryPresent,
 
275
                          branch.bzrdir.open_repository)
273
276
 
274
277
    def test_create_branch_and_repo_under_shared_force_new(self):
275
278
        # creating a branch and repo in a shared repo can be forced to 
276
279
        # make a new repo
277
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
278
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
279
 
        try:
280
 
            self.make_repository('.', shared=True)
281
 
            branch = bzrdir.BzrDir.create_branch_and_repo(self.get_url('child'),
282
 
                                                          force_new_repo=True)
283
 
            branch.bzrdir.open_repository()
284
 
        finally:
285
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
280
        format = bzrdir.format_registry.make_bzrdir('knit')
 
281
        self.make_repository('.', shared=True, format=format)
 
282
        branch = bzrdir.BzrDir.create_branch_and_repo(self.get_url('child'),
 
283
                                                      force_new_repo=True,
 
284
                                                      format=format)
 
285
        branch.bzrdir.open_repository()
286
286
 
287
287
    def test_create_standalone_working_tree(self):
288
288
        format = SampleBzrDirFormat()
289
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
290
 
        bzrdir.BzrDirFormat.set_default_format(format)
291
 
        try:
292
 
            # note this is deliberately readonly, as this failure should 
293
 
            # occur before any writes.
294
 
            self.assertRaises(errors.NotLocalUrl,
295
 
                              bzrdir.BzrDir.create_standalone_workingtree,
296
 
                              self.get_readonly_url())
297
 
            tree = bzrdir.BzrDir.create_standalone_workingtree('.')
298
 
            self.assertEqual('A tree', tree)
299
 
        finally:
300
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
289
        # note this is deliberately readonly, as this failure should 
 
290
        # occur before any writes.
 
291
        self.assertRaises(errors.NotLocalUrl,
 
292
                          bzrdir.BzrDir.create_standalone_workingtree,
 
293
                          self.get_readonly_url(), format=format)
 
294
        tree = bzrdir.BzrDir.create_standalone_workingtree('.', 
 
295
                                                           format=format)
 
296
        self.assertEqual('A tree', tree)
301
297
 
302
298
    def test_create_standalone_working_tree_under_shared_repo(self):
303
299
        # create standalone working tree always makes a repo.
304
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
305
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
306
 
        try:
307
 
            self.make_repository('.', shared=True)
308
 
            # note this is deliberately readonly, as this failure should 
309
 
            # occur before any writes.
310
 
            self.assertRaises(errors.NotLocalUrl,
311
 
                              bzrdir.BzrDir.create_standalone_workingtree,
312
 
                              self.get_readonly_url('child'))
313
 
            tree = bzrdir.BzrDir.create_standalone_workingtree('child')
314
 
            tree.bzrdir.open_repository()
315
 
        finally:
316
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
300
        format = bzrdir.format_registry.make_bzrdir('knit')
 
301
        self.make_repository('.', shared=True, format=format)
 
302
        # note this is deliberately readonly, as this failure should 
 
303
        # occur before any writes.
 
304
        self.assertRaises(errors.NotLocalUrl,
 
305
                          bzrdir.BzrDir.create_standalone_workingtree,
 
306
                          self.get_readonly_url('child'), format=format)
 
307
        tree = bzrdir.BzrDir.create_standalone_workingtree('child', 
 
308
            format=format)
 
309
        tree.bzrdir.open_repository()
317
310
 
318
311
    def test_create_branch_convenience(self):
319
312
        # outside a repo the default convenience output is a repo+branch_tree
320
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
321
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
322
 
        try:
323
 
            branch = bzrdir.BzrDir.create_branch_convenience('.')
324
 
            branch.bzrdir.open_workingtree()
325
 
            branch.bzrdir.open_repository()
326
 
        finally:
327
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
313
        format = bzrdir.format_registry.make_bzrdir('knit')
 
314
        branch = bzrdir.BzrDir.create_branch_convenience('.', format=format)
 
315
        branch.bzrdir.open_workingtree()
 
316
        branch.bzrdir.open_repository()
328
317
 
329
318
    def test_create_branch_convenience_root(self):
330
319
        """Creating a branch at the root of a fs should work."""
331
320
        self.transport_server = MemoryServer
332
321
        # outside a repo the default convenience output is a repo+branch_tree
333
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
334
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
335
 
        try:
336
 
            branch = bzrdir.BzrDir.create_branch_convenience(self.get_url())
337
 
            self.assertRaises(errors.NoWorkingTree,
338
 
                              branch.bzrdir.open_workingtree)
339
 
            branch.bzrdir.open_repository()
340
 
        finally:
341
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
322
        format = bzrdir.format_registry.make_bzrdir('knit')
 
323
        branch = bzrdir.BzrDir.create_branch_convenience(self.get_url(), 
 
324
                                                         format=format)
 
325
        self.assertRaises(errors.NoWorkingTree,
 
326
                          branch.bzrdir.open_workingtree)
 
327
        branch.bzrdir.open_repository()
342
328
 
343
329
    def test_create_branch_convenience_under_shared_repo(self):
344
330
        # inside a repo the default convenience output is a branch+ follow the
345
331
        # repo tree policy
346
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
347
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
348
 
        try:
349
 
            self.make_repository('.', shared=True)
350
 
            branch = bzrdir.BzrDir.create_branch_convenience('child')
351
 
            branch.bzrdir.open_workingtree()
352
 
            self.assertRaises(errors.NoRepositoryPresent,
353
 
                              branch.bzrdir.open_repository)
354
 
        finally:
355
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
332
        format = bzrdir.format_registry.make_bzrdir('knit')
 
333
        self.make_repository('.', shared=True, format=format)
 
334
        branch = bzrdir.BzrDir.create_branch_convenience('child',
 
335
            format=format)
 
336
        branch.bzrdir.open_workingtree()
 
337
        self.assertRaises(errors.NoRepositoryPresent,
 
338
                          branch.bzrdir.open_repository)
356
339
            
357
340
    def test_create_branch_convenience_under_shared_repo_force_no_tree(self):
358
341
        # inside a repo the default convenience output is a branch+ follow the
359
342
        # repo tree policy but we can override that
360
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
361
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
362
 
        try:
363
 
            self.make_repository('.', shared=True)
364
 
            branch = bzrdir.BzrDir.create_branch_convenience('child',
365
 
                force_new_tree=False)
366
 
            self.assertRaises(errors.NoWorkingTree,
367
 
                              branch.bzrdir.open_workingtree)
368
 
            self.assertRaises(errors.NoRepositoryPresent,
369
 
                              branch.bzrdir.open_repository)
370
 
        finally:
371
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
343
        format = bzrdir.format_registry.make_bzrdir('knit')
 
344
        self.make_repository('.', shared=True, format=format)
 
345
        branch = bzrdir.BzrDir.create_branch_convenience('child',
 
346
            force_new_tree=False, format=format)
 
347
        self.assertRaises(errors.NoWorkingTree,
 
348
                          branch.bzrdir.open_workingtree)
 
349
        self.assertRaises(errors.NoRepositoryPresent,
 
350
                          branch.bzrdir.open_repository)
372
351
            
373
352
    def test_create_branch_convenience_under_shared_repo_no_tree_policy(self):
374
353
        # inside a repo the default convenience output is a branch+ follow the
375
354
        # repo tree policy
376
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
377
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
378
 
        try:
379
 
            repo = self.make_repository('.', shared=True)
380
 
            repo.set_make_working_trees(False)
381
 
            branch = bzrdir.BzrDir.create_branch_convenience('child')
382
 
            self.assertRaises(errors.NoWorkingTree,
383
 
                              branch.bzrdir.open_workingtree)
384
 
            self.assertRaises(errors.NoRepositoryPresent,
385
 
                              branch.bzrdir.open_repository)
386
 
        finally:
387
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
355
        format = bzrdir.format_registry.make_bzrdir('knit')
 
356
        repo = self.make_repository('.', shared=True, format=format)
 
357
        repo.set_make_working_trees(False)
 
358
        branch = bzrdir.BzrDir.create_branch_convenience('child', 
 
359
                                                         format=format)
 
360
        self.assertRaises(errors.NoWorkingTree,
 
361
                          branch.bzrdir.open_workingtree)
 
362
        self.assertRaises(errors.NoRepositoryPresent,
 
363
                          branch.bzrdir.open_repository)
388
364
 
389
365
    def test_create_branch_convenience_under_shared_repo_no_tree_policy_force_tree(self):
390
366
        # inside a repo the default convenience output is a branch+ follow the
391
367
        # repo tree policy but we can override that
392
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
393
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
394
 
        try:
395
 
            repo = self.make_repository('.', shared=True)
396
 
            repo.set_make_working_trees(False)
397
 
            branch = bzrdir.BzrDir.create_branch_convenience('child',
398
 
                force_new_tree=True)
399
 
            branch.bzrdir.open_workingtree()
400
 
            self.assertRaises(errors.NoRepositoryPresent,
401
 
                              branch.bzrdir.open_repository)
402
 
        finally:
403
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
368
        format = bzrdir.format_registry.make_bzrdir('knit')
 
369
        repo = self.make_repository('.', shared=True, format=format)
 
370
        repo.set_make_working_trees(False)
 
371
        branch = bzrdir.BzrDir.create_branch_convenience('child',
 
372
            force_new_tree=True, format=format)
 
373
        branch.bzrdir.open_workingtree()
 
374
        self.assertRaises(errors.NoRepositoryPresent,
 
375
                          branch.bzrdir.open_repository)
404
376
 
405
377
    def test_create_branch_convenience_under_shared_repo_force_new_repo(self):
406
378
        # inside a repo the default convenience output is overridable to give
407
379
        # repo+branch+tree
408
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
409
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
410
 
        try:
411
 
            self.make_repository('.', shared=True)
412
 
            branch = bzrdir.BzrDir.create_branch_convenience('child',
413
 
                force_new_repo=True)
414
 
            branch.bzrdir.open_repository()
415
 
            branch.bzrdir.open_workingtree()
416
 
        finally:
417
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
380
        format = bzrdir.format_registry.make_bzrdir('knit')
 
381
        self.make_repository('.', shared=True, format=format)
 
382
        branch = bzrdir.BzrDir.create_branch_convenience('child',
 
383
            force_new_repo=True, format=format)
 
384
        branch.bzrdir.open_repository()
 
385
        branch.bzrdir.open_workingtree()
418
386
 
419
387
 
420
388
class ChrootedTests(TestCaseWithTransport):
530
498
        # format 5 dirs need a conversion if they are not the default.
531
499
        # and they start of not the default.
532
500
        old_format = bzrdir.BzrDirFormat.get_default_format()
533
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirFormat5())
 
501
        bzrdir.BzrDirFormat._set_default_format(bzrdir.BzrDirFormat5())
534
502
        try:
535
503
            dir = bzrdir.BzrDirFormat5().initialize(self.get_url())
536
504
            self.assertFalse(dir.needs_format_conversion())
537
505
        finally:
538
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
506
            bzrdir.BzrDirFormat._set_default_format(old_format)
539
507
        self.assertTrue(dir.needs_format_conversion())
540
508
 
541
509
 
565
533
    def test_needs_conversion(self):
566
534
        # format 6 dirs need an conversion if they are not the default.
567
535
        old_format = bzrdir.BzrDirFormat.get_default_format()
568
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
 
536
        bzrdir.BzrDirFormat._set_default_format(bzrdir.BzrDirMetaFormat1())
569
537
        try:
570
538
            dir = bzrdir.BzrDirFormat6().initialize(self.get_url())
571
539
            self.assertTrue(dir.needs_format_conversion())
572
540
        finally:
573
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
541
            bzrdir.BzrDirFormat._set_default_format(old_format)
574
542
 
575
543
 
576
544
class NotBzrDir(bzrlib.bzrdir.BzrDir):
647
615
    
648
616
    def test_create_branch_convenience(self):
649
617
        # outside a repo the default convenience output is a repo+branch_tree
650
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
651
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
652
 
        try:
653
 
            branch = bzrdir.BzrDir.create_branch_convenience(self.get_url('foo'))
654
 
            self.assertRaises(errors.NoWorkingTree,
655
 
                              branch.bzrdir.open_workingtree)
656
 
            branch.bzrdir.open_repository()
657
 
        finally:
658
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
618
        format = bzrdir.format_registry.make_bzrdir('knit')
 
619
        branch = bzrdir.BzrDir.create_branch_convenience(
 
620
            self.get_url('foo'), format=format)
 
621
        self.assertRaises(errors.NoWorkingTree,
 
622
                          branch.bzrdir.open_workingtree)
 
623
        branch.bzrdir.open_repository()
659
624
 
660
625
    def test_create_branch_convenience_force_tree_not_local_fails(self):
661
626
        # outside a repo the default convenience output is a repo+branch_tree
662
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
663
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
664
 
        try:
665
 
            self.assertRaises(errors.NotLocalUrl,
666
 
                bzrdir.BzrDir.create_branch_convenience,
667
 
                self.get_url('foo'),
668
 
                force_new_tree=True)
669
 
            t = get_transport(self.get_url('.'))
670
 
            self.assertFalse(t.has('foo'))
671
 
        finally:
672
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
627
        format = bzrdir.format_registry.make_bzrdir('knit')
 
628
        self.assertRaises(errors.NotLocalUrl,
 
629
            bzrdir.BzrDir.create_branch_convenience,
 
630
            self.get_url('foo'),
 
631
            force_new_tree=True,
 
632
            format=format)
 
633
        t = get_transport(self.get_url('.'))
 
634
        self.assertFalse(t.has('foo'))
673
635
 
674
636
    def test_clone(self):
675
637
        # clone into a nonlocal path works
676
 
        old_format = bzrdir.BzrDirFormat.get_default_format()
677
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
678
 
        try:
679
 
            branch = bzrdir.BzrDir.create_branch_convenience('local')
680
 
        finally:
681
 
            bzrdir.BzrDirFormat.set_default_format(old_format)
 
638
        format = bzrdir.format_registry.make_bzrdir('knit')
 
639
        branch = bzrdir.BzrDir.create_branch_convenience('local',
 
640
                                                         format=format)
682
641
        branch.bzrdir.open_workingtree()
683
642
        result = branch.bzrdir.clone(self.get_url('remote'))
684
643
        self.assertRaises(errors.NoWorkingTree,