~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_options.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:
1
 
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
 
1
# Copyright (C) 2005-2010 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
19
19
from bzrlib import (
20
20
    bzrdir,
21
21
    commands,
 
22
    controldir,
22
23
    errors,
23
24
    option,
24
25
    )
107
108
        self.assertFalse(option.Option('foo', hidden=False).is_hidden('foo'))
108
109
 
109
110
    def test_registry_conversion(self):
110
 
        registry = bzrdir.BzrDirFormatRegistry()
111
 
        registry.register_metadir('one', 'RepositoryFormat7', 'one help')
112
 
        registry.register_metadir('two', 'RepositoryFormatKnit1', 'two help')
113
 
        registry.register_metadir('hidden', 'RepositoryFormatKnit1',
 
111
        registry = controldir.ControlDirFormatRegistry()
 
112
        bzrdir.register_metadir(registry, 'one', 'RepositoryFormat7', 'one help')
 
113
        bzrdir.register_metadir(registry, 'two', 'RepositoryFormatKnit1', 'two help')
 
114
        bzrdir.register_metadir(registry, 'hidden', 'RepositoryFormatKnit1',
114
115
            'two help', hidden=True)
115
116
        registry.set_default('one')
116
117
        options = [option.RegistryOption('format', '', registry, str)]
177
178
        self.assertEqual('test option', my_option.help)
178
179
 
179
180
    def test_help(self):
180
 
        registry = bzrdir.BzrDirFormatRegistry()
181
 
        registry.register_metadir('one', 'RepositoryFormat7', 'one help')
182
 
        registry.register_metadir('two',
 
181
        registry = controldir.ControlDirFormatRegistry()
 
182
        bzrdir.register_metadir(registry, 'one', 'RepositoryFormat7', 'one help')
 
183
        bzrdir.register_metadir(registry, 'two',
183
184
            'bzrlib.repofmt.knitrepo.RepositoryFormatKnit1',
184
185
            'two help',
185
186
            )
186
 
        registry.register_metadir('hidden', 'RepositoryFormat7', 'hidden help',
 
187
        bzrdir.register_metadir(registry, 'hidden', 'RepositoryFormat7', 'hidden help',
187
188
            hidden=True)
188
189
        registry.set_default('one')
189
190
        options = [option.RegistryOption('format', 'format help', registry,
205
206
        opt = option.Option('hello', help='fg', type=int, argname='gar')
206
207
        self.assertEqual(list(opt.iter_switches()),
207
208
                         [('hello', None, 'GAR', 'fg')])
208
 
        registry = bzrdir.BzrDirFormatRegistry()
209
 
        registry.register_metadir('one', 'RepositoryFormat7', 'one help')
210
 
        registry.register_metadir('two',
 
209
        registry = controldir.ControlDirFormatRegistry()
 
210
        bzrdir.register_metadir(registry, 'one', 'RepositoryFormat7', 'one help')
 
211
        bzrdir.register_metadir(registry, 'two',
211
212
                'bzrlib.repofmt.knitrepo.RepositoryFormatKnit1',
212
213
                'two help',
213
214
                )
386
387
                    + '\n'.join(msgs))
387
388
 
388
389
    def test_is_hidden(self):
389
 
        registry = bzrdir.BzrDirFormatRegistry()
390
 
        registry.register_metadir('hidden', 'HiddenFormat',
 
390
        registry = controldir.ControlDirFormatRegistry()
 
391
        bzrdir.register_metadir(registry, 'hidden', 'HiddenFormat',
391
392
            'hidden help text', hidden=True)
392
 
        registry.register_metadir('visible', 'VisibleFormat',
 
393
        bzrdir.register_metadir(registry, 'visible', 'VisibleFormat',
393
394
            'visible help text', hidden=False)
394
395
        format = option.RegistryOption('format', '', registry, str)
395
396
        self.assertTrue(format.is_hidden('hidden'))