diff options
| author | Mark McLoughlin <markmc@redhat.com> | 2012-07-31 12:16:28 +0100 |
|---|---|---|
| committer | Mark McLoughlin <markmc@redhat.com> | 2012-07-31 12:16:28 +0100 |
| commit | 038d59778eecf953375da701b4cd55d4e3ca309f (patch) | |
| tree | 5d0046643bc5c3dcd864675fdac7f09e1c99d0a2 /tests/unit | |
| parent | e0134fc3e2d7e59741b3643e2680f578cc9def41 (diff) | |
| download | oslo-038d59778eecf953375da701b4cd55d4e3ca309f.tar.gz oslo-038d59778eecf953375da701b4cd55d4e3ca309f.tar.xz oslo-038d59778eecf953375da701b4cd55d4e3ca309f.zip | |
Add import_opt() method to ConfigOpts
Related to blueprint cfg-global-object
When using the global config object pattern, you often have modules
which define options that are referenced in other options.
So, for example if module A defined option 'foo' and module be needed
to reference that option, you might do:
import A
print CONF.foo
However, this makes it entirely unclear to the casual reader why
module A was imported.
Nova has a flags.DECLARE() function that helps with this problem
by allowing you to do:
flags.DECLARE('foo', 'A')
The function simply imports module A and checks that the 'foo'
option is now defined in the global config object.
This is fine, but it is also implicit that this function applies
to the global config object. Instead, let's do the following:
CONF.import_opt('foo', 'A')
Change-Id: I7b98f5be71068bbde70cc0eab991eaebb577de52
Diffstat (limited to 'tests/unit')
| -rw-r--r-- | tests/unit/test_cfg.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/unit/test_cfg.py b/tests/unit/test_cfg.py index d6286d3..14a85c9 100644 --- a/tests/unit/test_cfg.py +++ b/tests/unit/test_cfg.py @@ -1111,6 +1111,32 @@ class UnregisterOptTestCase(BaseTestCase): self.assertFalse(hasattr(self.conf.blaa, 'foo')) +class ImportOptTestCase(BaseTestCase): + + def test_import_opt(self): + self.assertFalse(hasattr(CONF, 'blaa')) + CONF.import_opt('blaa', 'tests.testmods.blaa_opt') + self.assertTrue(hasattr(CONF, 'blaa')) + + def test_import_opt_in_group(self): + self.assertFalse(hasattr(CONF, 'bar')) + CONF.import_opt('foo', 'tests.testmods.bar_foo_opt', group='bar') + self.assertTrue(hasattr(CONF, 'bar')) + self.assertTrue(hasattr(CONF.bar, 'foo')) + + def test_import_opt_import_errror(self): + self.assertRaises(ImportError, CONF.import_opt, + 'blaa', 'tests.testmods.blaablaa_opt') + + def test_import_opt_no_such_opt(self): + self.assertRaises(NoSuchOptError, CONF.import_opt, + 'blaablaa', 'tests.testmods.blaa_opt') + + def test_import_opt_no_such_group(self): + self.assertRaises(NoSuchGroupError, CONF.import_opt, + 'blaa', 'tests.testmods.blaa_opt', group='blaa') + + class RequiredOptsTestCase(BaseTestCase): def setUp(self): |
