summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt8
-rw-r--r--repoze/bfg/configuration.py9
-rw-r--r--repoze/bfg/testing.py11
-rw-r--r--repoze/bfg/tests/test_settings.py10
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)