diff options
| -rw-r--r-- | CHANGES.txt | 8 | ||||
| -rw-r--r-- | repoze/bfg/configuration.py | 9 | ||||
| -rw-r--r-- | repoze/bfg/testing.py | 11 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_settings.py | 10 |
4 files changed, 26 insertions, 12 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index fc7fa1697..00f73fb4b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,11 @@ +Next release +============ + +Features +-------- + +- Add a ``**kw`` arg to the ``Configurator.add_settings`` API. + 1.2a7 (2009-12-20) ================== diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py index 8663a0567..78a379bb2 100644 --- a/repoze/bfg/configuration.py +++ b/repoze/bfg/configuration.py @@ -312,16 +312,21 @@ class Configurator(object): self.registry.registerHandler(subscriber, iface, info=info) return subscriber - def add_settings(self, settings): + def add_settings(self, settings=None, **kw): """ Add additional settings (beyond the ones passed in as ``settings`` to the constructor of this object) to the dictionarylike object returned from ``repoze.bfg.settings.get_settings()``. The ``settings`` - argument should be a dictionarylike object.""" + argument should be a dictionarylike object or ``None``. + Arbitrary ``kw`` arguments can be passed in to augment the + settings dict.""" + if settings is None: + settings = {} utility = self.registry.queryUtility(ISettings) if utility is None: utility = self._set_settings(settings) utility.update(settings) + utility.update(kw) def make_wsgi_app(self): """ Returns a :mod:`repoze.bfg` WSGI application representing diff --git a/repoze/bfg/testing.py b/repoze/bfg/testing.py index 9912fd514..7721023b5 100644 --- a/repoze/bfg/testing.py +++ b/repoze/bfg/testing.py @@ -326,14 +326,9 @@ def registerSettings(dictarg=None, **kw): Instead use the ``add_settings`` method of a :term:`Configurator` in your unit and integration tests. """ - reg = get_current_registry() - settings = reg.queryUtility(ISettings) - if settings is None: - settings = Settings() - reg.registerUtility(settings, ISettings) - if dictarg is not None: - settings.update(dictarg) - settings.update(kw) + registry = get_current_registry() + config = Configurator(registry=registry) + config.add_settings(dictarg, **kw) class DummyRootFactory(object): __parent__ = None diff --git a/repoze/bfg/tests/test_settings.py b/repoze/bfg/tests/test_settings.py index 49e71863e..258571dda 100644 --- a/repoze/bfg/tests/test_settings.py +++ b/repoze/bfg/tests/test_settings.py @@ -7,8 +7,6 @@ class TestSettings(unittest.TestCase): return Settings def _makeOne(self, d=None, environ=None): - if d is None: - d = {} if environ is None: environ = {} klass = self._getTargetClass() @@ -22,6 +20,14 @@ class TestSettings(unittest.TestCase): settings = self._makeOne() self.assertRaises(AttributeError, settings.__getattr__, 'mykey') + def test_noargs(self): + settings = self._makeOne() + self.assertEqual(settings['debug_authorization'], False) + self.assertEqual(settings['debug_notfound'], False) + self.assertEqual(settings['reload_templates'], False) + self.assertEqual(settings['reload_resources'], False) + self.assertEqual(settings['configure_zcml'], '') + def test_reload_templates(self): settings = self._makeOne({}) self.assertEqual(settings['reload_templates'], False) |
