~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_branch.py

  • Committer: Jelmer Vernooij
  • Date: 2010-04-30 11:35:43 UTC
  • mfrom: (5195 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5197.
  • Revision ID: jelmer@samba.org-20100430113543-tiqqhmqa3d8no4iu
merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
455
455
            _mod_branch.BranchReferenceFormat().get_reference(checkout.bzrdir))
456
456
 
457
457
 
458
 
class TestHooks(tests.TestCase):
 
458
class TestHooks(tests.TestCaseWithTransport):
459
459
 
460
460
    def test_constructor(self):
461
461
        """Check that creating a BranchHooks instance has the right defaults."""
469
469
                        "post_uncommit not in %s" % hooks)
470
470
        self.assertTrue("post_change_branch_tip" in hooks,
471
471
                        "post_change_branch_tip not in %s" % hooks)
 
472
        self.assertTrue("post_branch_init" in hooks,
 
473
                        "post_branch_init not in %s" % hooks)
 
474
        self.assertTrue("post_switch" in hooks,
 
475
                        "post_switch not in %s" % hooks)
472
476
 
473
477
    def test_installed_hooks_are_BranchHooks(self):
474
478
        """The installed hooks object should be a BranchHooks."""
476
480
        self.assertIsInstance(self._preserved_hooks[_mod_branch.Branch][1],
477
481
                              _mod_branch.BranchHooks)
478
482
 
 
483
    def test_post_branch_init_hook(self):
 
484
        calls = []
 
485
        _mod_branch.Branch.hooks.install_named_hook('post_branch_init',
 
486
            calls.append, None)
 
487
        self.assertLength(0, calls)
 
488
        branch = self.make_branch('a')
 
489
        self.assertLength(1, calls)
 
490
        params = calls[0]
 
491
        self.assertIsInstance(params, _mod_branch.BranchInitHookParams)
 
492
        self.assertTrue(hasattr(params, 'bzrdir'))
 
493
        self.assertTrue(hasattr(params, 'branch'))
 
494
 
 
495
    def test_post_switch_hook(self):
 
496
        from bzrlib import switch
 
497
        calls = []
 
498
        _mod_branch.Branch.hooks.install_named_hook('post_switch',
 
499
            calls.append, None)
 
500
        tree = self.make_branch_and_tree('branch-1')
 
501
        self.build_tree(['branch-1/file-1'])
 
502
        tree.add('file-1')
 
503
        tree.commit('rev1')
 
504
        to_branch = tree.bzrdir.sprout('branch-2').open_branch()
 
505
        self.build_tree(['branch-1/file-2'])
 
506
        tree.add('file-2')
 
507
        tree.remove('file-1')
 
508
        tree.commit('rev2')
 
509
        checkout = tree.branch.create_checkout('checkout')
 
510
        self.assertLength(0, calls)
 
511
        switch.switch(checkout.bzrdir, to_branch)
 
512
        self.assertLength(1, calls)
 
513
        params = calls[0]
 
514
        self.assertIsInstance(params, _mod_branch.SwitchHookParams)
 
515
        self.assertTrue(hasattr(params, 'to_branch'))
 
516
        self.assertTrue(hasattr(params, 'revision_id'))
 
517
 
 
518
 
 
519
class TestBranchOptions(tests.TestCaseWithTransport):
 
520
 
 
521
    def setUp(self):
 
522
        super(TestBranchOptions, self).setUp()
 
523
        self.branch = self.make_branch('.')
 
524
        self.config = self.branch.get_config()
 
525
 
 
526
    def check_append_revisions_only(self, expected_value, value=None):
 
527
        """Set append_revisions_only in config and check its interpretation."""
 
528
        if value is not None:
 
529
            self.config.set_user_option('append_revisions_only', value)
 
530
        self.assertEqual(expected_value,
 
531
                         self.branch._get_append_revisions_only())
 
532
 
 
533
    def test_valid_append_revisions_only(self):
 
534
        self.assertEquals(None,
 
535
                          self.config.get_user_option('append_revisions_only'))
 
536
        self.check_append_revisions_only(None)
 
537
        self.check_append_revisions_only(False, 'False')
 
538
        self.check_append_revisions_only(True, 'True')
 
539
        # The following values will cause compatibility problems on projects
 
540
        # using older bzr versions (<2.2) but are accepted
 
541
        self.check_append_revisions_only(False, 'false')
 
542
        self.check_append_revisions_only(True, 'true')
 
543
 
 
544
    def test_invalid_append_revisions_only(self):
 
545
        """Ensure warning is noted on invalid settings"""
 
546
        self.warnings = []
 
547
        def warning(*args):
 
548
            self.warnings.append(args[0] % args[1:])
 
549
        self.overrideAttr(trace, 'warning', warning)
 
550
        self.check_append_revisions_only(None, 'not-a-bool')
 
551
        self.assertLength(1, self.warnings)
 
552
        self.assertEqual(
 
553
            'Value "not-a-bool" is not a boolean for "append_revisions_only"',
 
554
            self.warnings[0])
 
555
 
479
556
 
480
557
class TestPullResult(tests.TestCase):
481
558