~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_init.py

Add bzrlib.pyutils, which has get_named_object, a wrapper around __import__.

This is used to replace various ad hoc implementations of the same logic,
notably the version used in registry's _LazyObjectGetter which had a bug when
getting a module without also getting a member.  And of course, this new
function has unit tests, unlike the replaced code.

This also adds a KnownHooksRegistry subclass to provide a more natural home for
some other logic.

I'm not thrilled about the name of the new module or the new functions, but it's
hard to think of good names for such generic functionality.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
    )
28
28
from bzrlib.bzrdir import BzrDirMetaFormat1
29
29
from bzrlib.tests import TestSkipped
30
 
from bzrlib.tests.blackbox import ExternalBase
 
30
from bzrlib.tests import TestCaseWithTransport
31
31
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
32
32
from bzrlib.workingtree import WorkingTree
33
33
 
34
34
 
35
 
class TestInit(ExternalBase):
 
35
class TestInit(TestCaseWithTransport):
36
36
 
37
37
    def setUp(self):
38
 
        ExternalBase.setUp(self)
 
38
        TestCaseWithTransport.setUp(self)
39
39
        self._default_label = '2a'
40
40
 
41
41
    def test_init_with_format(self):
202
202
        self.assertEqual(True, branch._get_append_revisions_only())
203
203
        self.run_bzr_error(['cannot be set to append-revisions-only'],
204
204
                           'init --append-revisions-only --knit knit')
 
205
 
 
206
    def test_init_without_username(self):
 
207
        """Ensure init works if username is not set.
 
208
        """
 
209
        # bzr makes user specified whoami mandatory for operations
 
210
        # like commit as whoami is recorded. init however is not so final
 
211
        # and uses whoami only in a lock file. Without whoami the login name
 
212
        # is used. This test is to ensure that init passes even when whoami
 
213
        # is not available.
 
214
        osutils.set_or_unset_env('EMAIL', None)
 
215
        osutils.set_or_unset_env('BZR_EMAIL', None)
 
216
        out, err = self.run_bzr(['init', 'foo'])
 
217
        self.assertEqual(err, '')
 
218
        self.assertTrue(os.path.exists('foo'))